Tarea:
Su desafío es, dados los envíos anteriores y en sí mismo como entrada, generar el idioma en el que están escritos, en el siguiente formato:
Digamos que el primer programa está en Ruby. Debe salir 1
, porque Ruby es el 1
lenguaje st utilizado en este desafío. Un programa de ejemplo es:
a=gets
puts 1
Cuando se da como entrada, vuelve 1
.
El próximo programa podría estar en Python. Debe salir 2
, porque Python es el 2
nd lenguaje utilizado en el desafío. Un programa de ejemplo es:
print(1 if input()[0]=="a"else 2)
Dada la primera presentación, da salida 1
, y dada su salida 2
.
Puede repetir idiomas, aunque no puede enviar una respuesta en el idioma de la respuesta anterior.
Por ejemplo, si el tercer programa está en Ruby, debe salir 1
dado el primer programa y en sí mismo (porque Ruby es el 1
lenguaje st utilizado), y dado el segundo programa debe salir 2
.
Reglas:
- Si
n
actualmente hay respuestas en el desafío, debe haber al menosfloor(n / 3)
diferentes idiomas. Cualquier envío que infrinja esta regla queda descalificado. - No hay dos "respuestas vecinas" (por ejemplo, respuesta
n
y respuestan+1
) no pueden usar el mismo idioma. - Las diferentes versiones de un idioma no cuentan como idiomas diferentes (entonces
Python 2 == Python 3
). - Las respuestas deben tomar las presentaciones anteriores en su totalidad como entrada.
- La primera presentación debe tomar entrada.
- No está permitido enviar múltiples respuestas seguidas.
- Las "respuestas repetidas" (respuestas que tienen exactamente el mismo código que un envío anterior) no están permitidas.
- No se permite que las respuestas sobrepasen el recuento de bytes asignado de esa respuesta; consulte "Recuento de bytes asignados" para obtener más detalles.
Recuento de bytes asignados:
Para cada número de respuesta n
, el recuento de bytes asignado para esa respuesta es 45 + 5n
.
Formato de respuesta:
Formatee su respuesta de esta manera:
# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}
Para las listas de respuestas, haga esto:
- `1` in answers [1]({link to answer}), [3]({link to answer})...
Tanteo:
La primera respuesta para sobrevivir después de 7 días sin ningún envío válido después de eso se declara ganador.
fuente
floor(n / 3)
idiomas). Supongo que esto no es un comportamiento intencionado.Respuestas:
26. > <> (idioma 12), 164 bytes
¡Mi primer programa en> <>! Tiene 156 caracteres, pero 164 bytes en UTF-8.
Esto imprime:
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 , 17 , 20 , 22 y 25 (Bash).7
con respuestas 11 y 19 (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con respuestas 18 , 21 y 23 (C / C ++).11
con respuesta 24 (Zsh).12
con esta respuesta (> <>).Pruébalo en línea!
Explicación:
La primera línea es simplemente la respuesta # 5. No hace más que enviar el puntero de instrucciones a la línea de fondo.
/
gira el pez a la derecha y los personajes^mwfPes{'tc
se colocan en la pila. Se lee un solo carácter de entrada (i
). (Llamemos a este personajeC
para la exposición). 2 se coloca en el registro (2&
). Luego saltamos al comienzo de la segunda línea (línea 1) (01.
).Esta línea se compara
C
con cada personaje en la pila. Una copia deC
se mantiene en la parte inferior de la pila.{
gira la pila para que quedeC
arriba;:
lo duplica}
gira la copia de nuevo a la parte inferior. Incrementamos el registro (&1+&
) hasta encontrar una coincidencia. (Entonces, siC
es "c", el registro contiene 3 cuando se encuentra la coincidencia; siC
es "t", el registro contiene 4, y así sucesivamente.) Luego saltamos al primer carácter del número de línea en el registro (0&.
) .Las líneas 3 a 13 tratan sobre qué hacer cuando
C
es c, t, ', {, etc., respectivamente. El puntero de instrucciones se mueve hacia atrás cuando saltamos; aterriza en el primer carácter de la línea dada, pero después de un salto, avanza una marca antes de ejecutar, por lo que comienza a ejecutarse desde el final de la línea hacia atrás. Cada línea empuja el número de idioma apropiado en la pila, luego envía el pez a lan
instrucción, que lo imprime.^
es el caso más complicado, debido a mi propia coquetería con la primera línea de esta respuesta. La línea 13 lee la entrada hasta EOF. Luego se dirige a la línea 15, que compara la longitud de la pila (l
) con 100 (aa*
). Si es más largo ()?
), agregamos+
b
y1
para obtener 12, este idioma; de lo contrario, 1 permanece en la parte superior de la pila.fuente
1. Retina , 0 bytes
Pruébalo en línea!
El programa vacío se imprime
1
cuando se le da una entrada vacía (es decir, sí mismo), porque cuenta con qué frecuencia la expresión regular vacía coincide con la entrada (que siempre es1+length(input)
).fuente
2. Brain-Flak , 22 bytes
Pruébalo en línea!
Esto comprueba la parte superior de la pila y pone un uno en la pila opuesta si no es cero. Luego se incrementa y devuelve la pila opuesta. Esto hace que devuelva 1 para el programa vacío y 2 para cualquier otra cosa.
Dado que las pilas en Brain-Flak están por defecto en cero, un programa vacío tendrá un cero en la parte superior de la pila, mientras que cualquier otro programa (excepto los programas que terminan en caracteres nulos) tendrá un valor verdadero. Esto significa que podemos ejecutar un programa if muy simple en la pila de entrada.
fuente
3. APL, 7 bytes
Explicación:
fuente
10. Bash (+ coreutils) [idioma 6],
4474 bytesVersión fija (devuelve la identificación del idioma)
Nota: esto espera la nueva línea final, después del texto del programa de entrada
fuente
9. Retina (idioma 1), 20 bytes
Pruébalo en línea!
Al igual que Plannapus, decidí hacer una reescritura para cambiar un poco las cosas, lo que también terminó acortando considerablemente el código (creo que una modificación de mi última respuesta para dar cuenta de lo último de Plannapus habría terminado alrededor de 32 bytes).
Explicación
Al igual que mis otras respuestas, esto solo cuenta el número de varias coincidencias de expresiones regulares, pero lo hace de manera mucho más eficiente:
$
coincide con el final de la cadena. Esto siempre funciona, incluso si hay una coincidencia hasta el final de la cadena, por lo que nos da una línea de base1
para todas las entradas.}\{
encuentra una sola coincidencia en el segundo programa (Brain-Flak), lo que eleva el conteo allí2
. La barra invertida no es necesaria para escapar, pero evita que esta parte de la expresión regular coincida.[:'][^]']
es bastante elegante en realidad. El único propósito es contar los dos'
en el programa APL (idioma 3) y los tres:
en el programa JavaScript (idioma 4), pero debemos evitar que esta parte coincida. Así también nos aseguramos de que el siguiente carácter es ni'
ni]
(porque los que no aparecen después de los que sí desea hacer coincidir, pero sí aparecen en este programa aquí).'
de la parte anterior ya causa una coincidencia en los programas R, por lo que necesitamos tres más. La subcadena,1
aparece en ambos tres veces, y en ningún otro programa. Lo hacemos coincidir agregando un límite de palabra tautológico en el medio,\b1
para evitar que vuelva a coincidir.fuente
1
es simplemente su salida predeterminada. Tendré que hacer algo al respecto con la próxima respuesta.18. C (lenguaje 10), 121 bytes
Este es el estándar C89 o C90. Funciona con clang o gcc en Try It Online.
Esto imprime:
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 y 17 (Bash).7
con respuesta 11 (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con esta respuesta (C).Aquí hay un controlador bash que lo ejecuta con las 18 respuestas en ¡ Pruébelo en línea!
Equivalente sin golf (646 bytes):
fuente
5. Retina (idioma 1), 23 bytes
Pruébalo en línea! (Prueba todas las entradas posibles).
Cuenta las coincidencias de varias cosas en la entrada:
^$
coincide con la cadena de entrada, es decir, la primera respuesta una vez.{}
coincide, que hay dos en el segundo programa, y uno en este.(?![⊂⍴])[⊂-⍴]
coincide con los caracteres con los puntos de código 8834 a 9076, exclusivo , que encuentra tres coincidencias en el tercer programa. Usamos la anticipación negativa para evitar que los extremos del rango coincidan en este programa.\B=
coincide con un=
que no está precedido por un carácter de palabra. Esto coincide con cuatro de los=
del cuarto programa, y no coincide con los=
de este programa.fuente
7. Retina (idioma 1), 27 bytes
Pruébalo en línea! (Prueba todas las entradas posibles).
Una modificación menor de la quinta respuesta .
\B=
ya encuentra 4 coincidencias en la sexta respuesta, y\b5
encuentra otra sin encontrar ninguna otra respuesta.fuente
4, JavaScript (ES6), 32 bytes
Salidas 1 para una entrada vacía, 2 si la entrada comienza con a
{
, 4 si comienza con ans
y 3 de lo contrario.fuente
s[0]=='{'
bys[0]>'z'
11. Mathematica [idioma 7], 53 bytes
Función sin nombre que toma una lista de caracteres como argumento y genera un número entero positivo. Simplemente se ramifica en la primera letra de la entrada, utilizando su posición en la cadena
"^{'sceP"
para decidir la salida. Esto proporciona la respuesta correcta para todas las presentaciones anteriores, excepto el programa Retina vacío inicial y la respuesta Retina más reciente ; ambos errores de escupir, pero la salida es reparada por la regla/._@__->1
que transforma cualquier función no evaluada en1
.fuente
16. Perl (idioma 9), 94 bytes
Pruébalo en línea! (verifica todas las respuestas). Salidas "1234151516748149"
Esto imprime:
El programa verifica la longitud de entrada y la asigna a la distribución de idioma actual.
fuente
6. R (lenguaje 5), 61 bytes
Comprueba cuál es el primer carácter de la entrada y elige la salida en consecuencia.
Esto imprime así:
1
con respuestas 1 y 5 (retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuesta 4 (Javascript).y
5
con esta respuestaUso:
fuente
8. R (lenguaje 5), 76 bytes
Comprueba la primera letra de la entrada, y la compara con un vector que contiene (en ese orden) la cadena vacía,
{
,'
,s
yc
. Luego genera el índice de la coincidencia (la indexación R se basa en 1) o 1 si no hay coincidencia.El mismo concepto que la respuesta n ° 6 pero evita que la respuesta n ° 7 coincida.
Esto imprime:
1
con respuestas 1 , 5 y 7 (retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuesta 4 (Javascript).y
5
con la respuesta 6 y esta respuesta (R).Si no me equivoco, la asignación de recuento de bytes para esta respuesta fue de 94 bytes.
fuente
readline
debe reemplazarse porreadLines(file("stdin"))
. Lo que significa 16 caracteres más: por lo tanto, la respuesta 6 debe tener 77 bytes (de 79 permitidos) y esta respuesta 92 bytes (de 94 permitidos). Con este cambio, también funciona en intérpretes en línea.12. Javascript (idioma 4), 117 bytes
Nota: Cambié un personaje para corregir un error en este.
Comprueba la primera letra de la entrada, si es c, comprueba la longitud de la entrada.
Salidas:
fuente
13. Python (lenguaje 8), 110 bytes
Nota: Esta respuesta se modificó 6 horas después de la publicación, por recomendación del OP.
Esta es la misma idea que la respuesta 10 (en bash), pero en Python 3. (Este enfoque puede funcionar para un máximo de 3 entradas más antes de que nos quedemos sin dígitos hexadecimales).
Esto imprime:
1
con respuestas 1 , 5 , 7 y 9 (retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 y 12 (Javascript).5
con respuestas 6 y 8 (R).6
con respuesta 10 (Bash).7
con respuesta 11 (Mathematica).8
para esta respuesta (Python).Pruébalo en línea! para: Respuesta 1 , Respuesta 2 , Respuesta 3 , Respuesta 4 , Respuesta 5 , Respuesta 6 , Respuesta 7 , Respuesta 8 , Respuesta 9 , Respuesta 10 , Respuesta 11 , Respuesta 12 , o esta respuesta .
fuente
24. Zsh (idioma 11), 142 bytes
Mi respuesta anterior # 18 en C todavía funciona sin modificaciones para todas las entradas posteriores ( demostración ). Así que vamos a mezclarlo un poco.
El propósito del comentario al final es hacer coincidir la longitud de las respuestas 21 y 23, y garantizar que ningún carácter único de los hashes sha256 o sha384 sea único para cada respuesta hasta el momento, utilizando los caracteres marcados por las respuestas C ++ de Lyth. ;-)
Esto imprime:
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 , 17 , 20 y 22 (Bash).7
con respuestas 11 y 19 (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con respuestas 18 , 21 y 23 (C / C ++).11
con esta respuesta (Zsh).Pruébalo en línea!
fuente
14. Retina (idioma 1), 39 bytes
Pruébalo en línea! (Prueba todas las entradas válidas).
fuente
15. Javascript (idioma 4), 108 bytes
Golfed
fuente
17. Bash (+ coreutils + openssl) (idioma 6), 103 bytes
Golfed
Utiliza la misma técnica que mi respuesta # 10 , pero con el diccionario codificado Base64 , en lugar de Hex .
He reunido el siguiente archivo de datos para probar:
Prueba
fuente
19. Mathematica (idioma 7), 96 bytes
Función sin nombre que toma una lista de caracteres como entrada y devuelve un entero:
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 y 17 (Bash).7
con la respuesta 11 y esta respuesta (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con la respuesta 18 (C).Hasta ahora, todas las longitudes de las respuestas son distintas, e incluso son distintas en el módulo 59, por lo tanto, se puede detectar por qué número entero en el rango 33, 34, ..., 91 son congruentes con (mod 59). Todos estos son caracteres ASCII imprimibles, codificados por la cadena
";NRU$ Q B [1: =L J, 5% 3 # >"
; El usoToCharacterCode@StringSplit@
convierte esta cadena en una lista de diez listas de enteros en ese rango, yPosition[...,Mod[Length@#,59,33]][[1,1]]
encuentra cuál de las diez sublistas coincide con la longitud modificada de la entrada.fuente
20. Bash (+ coreutils + openssl) (idioma 6), 121 byte
Golfed
El mismo método que mi respuesta # 17 (que a su vez se basa en mi respuesta original # 10 ).
Como ahora tenemos 10 idiomas distintos, he cambiado a la codificación de posición hexadecimal.
Datos
Prueba (salida)
fuente
23. C (gcc) (lenguaje 10), 142 bytes
Pruébalo en línea!
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 , 17 , 20 y 22 (Bash).7
con respuesta 11 y 19 (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con la respuesta 18 , 21 y esta respuesta (C).Este programa cuenta el número de caracteres diferentes (en ASCII, por lo que los caracteres UTF-8 de varios bytes se dividen en varias entradas) y luego sigue un árbol de decisión cuidadosamente diseñado, basándose en el número de ocurrencias de este o aquel carácter.
El árbol de decisión no ha cambiado desde el n. ° 21 (¡sí!). No se me permite publicar exactamente el mismo código, por lo que volvemos a C puro con modificaciones menores.
fuente
21. C ++ (gcc) (lenguaje 10 como una variante de C), 142 bytes
Pruébalo en línea!
1
con respuestas 1 , 5 , 7 , 9 y 14 (Retina).2
con respuesta 2 (Brain-Flak).3
con respuesta 3 (APL).4
con respuestas 4 , 12 y 15 (Javascript).5
con respuestas 6 y 8 (R).6
con respuestas 10 , 17 y 20 (Bash).7
con respuesta 11 y 19 (Mathematica).8
con respuesta 13 (Python).9
con respuesta 16 (Perl).10
con la respuesta 18 y esta respuesta (C).Este programa cuenta el número de caracteres diferentes (en ASCII, por lo que los caracteres UTF-8 de varios bytes se dividen en varias entradas) y luego sigue un árbol de decisión cuidadosamente diseñado, basándose en el número de ocurrencias de este o aquel carácter.
Curiosidades : la letra K no se usó hasta esta entrada. Las letras I, E, Y, j, k, q, z permanecen sin usar.
fuente
22. Bash (+ coreutils) [idioma 6],
123131 bytesEDITAR: publicó una versión incorrecta al principio, debe corregirse ahora.
Golfed
La misma técnica que mis respuestas # 20, # 17 y # 10 .
Datos
Prueba de funcionamiento
fuente
44
?25. Bash (idioma 6), 169 bytes
La misma técnica que mis respuestas # 22, # 20, # 17 y # 10 .
Lo siento @ Qwerp-Derp! ;) Prometo que este es el último :)
Golfed
Datos
Prueba de salida
fuente