¿Conoces ese idioma?

34

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 1lenguaje 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 2nd 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 1dado el primer programa y en sí mismo (porque Ruby es el 1lenguaje st utilizado), y dado el segundo programa debe salir 2.


Reglas:

  • Si nactualmente hay respuestas en el desafío, debe haber al menos floor(n / 3)diferentes idiomas. Cualquier envío que infrinja esta regla queda descalificado.
  • No hay dos "respuestas vecinas" (por ejemplo, respuesta ny respuesta n+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.

clismique
fuente
1
¿Puede un usuario publicar dos envíos consecutivos?
Kritixi Lithos
Entonces, tal como está, podría repetir tal cual, sin ningún cambio, mi respuesta n ° 6 como respuesta n ° 8, después de lo cual Martin podría repetir su número n ° 7 (a menos que me equivoque), etc. hasta que la respuesta n ° 15 antes de alcanzar el umbral impuesto (es decir, floor(n / 3)idiomas). Supongo que esto no es un comportamiento intencionado.
plannapus
@plannapus También noté esto. Por supuesto, su objetivo es tener la última respuesta, así que sabiendo que yo también tendría un seguimiento trivial, es posible que desee complicar las cosas (que no pensé antes de publicar mi propia respuesta).
Martin Ender
3
El recuento de bytes asignados crece en progresión geométrica, y probablemente estos desafíos no terminarán hasta que se nos acaben los idiomas, no porque el código sea demasiado largo.
Wolfram
2
OMI, un límite fijo razonable (por ejemplo, 384 o 256 bytes), habría funcionado mejor y provocaría una fuerte competencia al final.
zeppelin

Respuestas:

4

26. > <> (idioma 12), 164 bytes

¡Mi primer programa en> <>! Tiene 156 caracteres, pero 164 bytes en UTF-8.

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
{:}&1+&=?v
      .&0/
v+!?='>'i41i
v+?='y'i47
v+?=' 'i12
v+?=' 'i24
v4
v6
v7
v8
v9
va
  v?(0:i
v1
n;\b1laa*)?+
/"^mwfPes{'tc"i2&01.;

Esto imprime:

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 , 17 , 20 , 22 y 25 (Bash).

  • 7con respuestas 11 y 19 (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con respuesta 16 (Perl).

  • 10con respuestas 18 , 21 y 23 (C / C ++).

  • 11con 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{'tcse colocan en la pila. Se lee un solo carácter de entrada ( i). (Llamemos a este personaje Cpara 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 Ccon cada personaje en la pila. Una copia de Cse mantiene en la parte inferior de la pila. {gira la pila para que quede Carriba; :lo duplica }gira la copia de nuevo a la parte inferior. Incrementamos el registro ( &1+&) hasta encontrar una coincidencia. (Entonces, si Ces "c", el registro contiene 3 cuando se encuentra la coincidencia; si Ces "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 Ces 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 la ninstrucció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 + by 1para obtener 12, este idioma; de lo contrario, 1 permanece en la parte superior de la pila.

Nick Matteo
fuente
23

1. Retina , 0 bytes

Pruébalo en línea!

El programa vacío se imprime 1cuando 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 es 1+length(input)).

Martin Ender
fuente
12

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.

{      (<>)}{}              #If not zero
 <>(())                     #Push one to the other stack
              (<>{}())      #Switch to other stack and increment by one
Asistente de trigo
fuente
¿Podrías editar esta respuesta? Accidentalmente lo rechacé :)
Conor O'Brien
9

3. APL, 7 bytes

' {'⍳⊃⍞

Explicación:

      ⍞  read from the keyboard
     ⊃   first item of list, or space if empty
' {'⍳    index into the string ' {', giving N+1 (=3) if not found
marinus
fuente
8

10. Bash (+ coreutils) [idioma 6], 4474 bytes

Versión fija (devuelve la identificación del idioma)

expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G

Nota: esto espera la nueva línea final, después del texto del programa de entrada

zepelín
fuente
7

9. Retina (idioma 1), 20 bytes

$|}\{|[:'][^]']|,\b1

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 base 1para 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 desea hacer coincidir, pero sí aparecen en este programa aquí).
  • Lo 'de la parte anterior ya causa una coincidencia en los programas R, por lo que necesitamos tres más. La subcadena ,1aparece en ambos tres veces, y en ningún otro programa. Lo hacemos coincidir agregando un límite de palabra tautológico en el medio ,\b1para evitar que vuelva a coincidir.
Martin Ender
fuente
Hm, acabo de darme cuenta de que esto no frustra en absoluto las respuestas R, porque 1es simplemente su salida predeterminada. Tendré que hacer algo al respecto con la próxima respuesta.
Martin Ender
7

18. C (lenguaje 10), 121 bytes

Este es el estándar C89 o C90. Funciona con clang o gcc en Try It Online.

main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}

Esto imprime:

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 y 17 (Bash).

  • 7con respuesta 11 (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con 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):

#include <string.h>
#include <stdio.h>
int main(){
    char *v=" ^{ s ePfwm", b[999];
    gets(b); /* buffer overrun if more than 998 characters in the input.
                could be a problem if we get to 191 answers */
    char *c = strchr(v, b[0]); /* Find first character of input in v, or null */
    int n = strlen(b);
    if (!n) {
        printf("1");
    } else if (c) {
        printf("%d", c-v); /* Index of first character of input in v */
    } else if (n > 99) {
        printf("4");
    } else if (n > 60) {
        printf("5");
    } else if (n > 15) {
        printf("1");
    } else {
        printf("3");
    }
    return 0;
}
Nick Matteo
fuente
6

5. Retina (idioma 1), 23 bytes

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}

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.
Martin Ender
fuente
5

7. Retina (idioma 1), 27 bytes

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5

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 \b5encuentra otra sin encontrar ninguna otra respuesta.

Martin Ender
fuente
4

4, JavaScript (ES6), 32 bytes

s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1

Salidas 1 para una entrada vacía, 2 si la entrada comienza con a {, 4 si comienza con an sy 3 de lo contrario.

Luke
fuente
Puede reemplazar el s[0]=='{'bys[0]>'z'
1
@Masterzagh También estaba pensando en cómo se puede jugar al golf, pero, por desgracia, este no es un código de golf: /
Kritixi Lithos
@KritixiLithos Bueno, sí, pero ya lo ha jugado un poco, así que pensé que querría ir más allá.
@Masterzagh La gente debería evitar editar respuestas válidas en desafíos como este porque pueden invalidar a) respuestas posteriores, b) respuestas en las que se está trabajando actualmente.
Martin Ender
@ MartinEnder, tienes razón. Como tal, no lo editaré. Sé que parece golfista (debido a los operadores ternarios), pero no lo escribí así a propósito ... ¡Gracias por todos los comentarios!
Lucas
4

11. Mathematica [idioma 7], 53 bytes

Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&

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 /._@__->1que transforma cualquier función no evaluada en 1.

Greg Martin
fuente
Creo que es hora de estropear esa estrategia de primer personaje :)
Martin Ender
1
Iba a hacerlo, pero luego recordé que también tenía que generar correctamente mi propio idioma: D
Greg Martin
4

16. Perl (idioma 9), 94 bytes

while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}

Pruébalo en línea! (verifica todas las respuestas). Salidas "1234151516748149"

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 respuesta 10 (Bash).
  • 7 con respuesta 11 (Mathematica).
  • 8 con respuesta 13 (Python).
  • 9 con esta respuesta (Perl).

El programa verifica la longitud de entrada y la asigna a la distribución de idioma actual.

Lyth
fuente
3

6. R (lenguaje 5), 61 bytes

cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

Comprueba cuál es el primer carácter de la entrada y elige la salida en consecuencia.

Esto imprime así:

  • 1con respuestas 1 y 5 (retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuesta 4 (Javascript).

  • y 5con esta respuesta

Uso:

> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
{<>(())(<>)}{}(<>{}())
2
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
' {'⍳⊃⍞
3
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
4
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
5
plannapus
fuente
Para ejecutar esto fuera de un REPL, vea el comentario en la respuesta 8.
plannapus
3

8. R (lenguaje 5), 76 bytes

c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)

Comprueba la primera letra de la entrada, y la compara con un vector que contiene (en ese orden) la cadena vacía, {, ', sy c. 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:

  • 1con respuestas 1 , 5 y 7 (retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuesta 4 (Javascript).

  • y 5con 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.

plannapus
fuente
Los intérpretes en línea de FYI R (rfiddle, ideone y tryitonline) parecen tener problemas para manejar stdin (al menos con readline ()) y, por lo tanto, no se comportarán correctamente. Si desea probar esto (y la respuesta anterior), tendrá que intentarlo localmente en una versión instalada de R, me temo.
plannapus
^ Ok, fuera de un REPL readlinedebe reemplazarse por readLines(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.
plannapus
3

12. Javascript (idioma 4), 117 bytes

Nota: Cambié un personaje para corregir un error en este.

c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;

Comprueba la primera letra de la entrada, si es c, comprueba la longitud de la entrada.

Salidas:

  • 1 para las respuestas 1, 5, 7, 9
  • 2 por respuesta 2
  • 3 por respuesta 3
  • 4 para la respuesta 4 y esta respuesta
  • 5 para respuestas 6, 8
  • 6 por respuesta 10
  • 7 para la respuesta 11
Devsman
fuente
3

13. Python (lenguaje 8), 110 bytes

Nota: Esta respuesta se modificó 6 horas después de la publicación, por recomendación del OP.

from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N

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:

  • 1con respuestas 1 , 5 , 7 y 9 (retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 y 12 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuesta 10 (Bash).

  • 7con 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 .

Nick Matteo
fuente
¿Cuál es el límite de bytes actual?
Vi.
@Vi .: Bueno, ERA 149 para la respuesta 13 y 163 para la respuesta 14; pero el OP acaba de cambiar las reglas de conteo de bytes a 45 + 5n, por lo que serían 110 bytes para la respuesta 13 y 115 bytes para la respuesta 14.
Nick Matteo
Probablemente deberías poner la solución de 110 bytes.
clismique
@ Qwerp-Derp: Muy bien. Esperemos que eso no rompa el trabajo continuo de nadie.
Nick Matteo
Bien, esperando alrededor de 60 respuestas hasta que el límite de bytes llegue a tierra compatible con Java.
Vi.
3

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.

typeset -A p
p=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)
echo ${p[(k)$1]:-1} #@<`w&X{

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:

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 , 17 , 20 y 22 (Bash).

  • 7con respuestas 11 y 19 (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con respuesta 16 (Perl).

  • 10con respuestas 18 , 21 y 23 (C / C ++).

  • 11 con esta respuesta (Zsh).

Pruébalo en línea!

Nick Matteo
fuente
Creo que esta es la primera respuesta para ser multilínea ... +1 de mi parte.
clismique
2

14. Retina (idioma 1), 39 bytes

'[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$

Pruébalo en línea! (Prueba todas las entradas válidas).

Martin Ender
fuente
1
Vamos Martin, publica en un idioma diferente ... también, ¿podrías hacer el formato de respuesta?
clismique
3
@ Qwerp-Derp Esto se está convirtiendo en una variación interesante en el golf regex estándar. En lugar de tener un conjunto de entradas y tener que hacer coincidir algunas de ellas y fallar otras, aquí debe obtener un número específico de coincidencias en cada una de las entradas. Me pregunto si esta expresión regular explotará exponencialmente en algún momento.
Martin Ender
¿Son realmente 39 bytes? TIO informa 37 bytes.
Arnauld
1
@Arnauld TIO está codificado para que solo cuente caracteres para Retina porque a menudo usa codificaciones de un solo byte. Sin embargo, esta respuesta requiere UTF-8.
Martin Ender
2

15. Javascript (idioma 4), 108 bytes

Golfed

t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
zepelín
fuente
2

17. Bash (+ coreutils + openssl) (idioma 6), 103 bytes

Golfed

expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x

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:

6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Prueba

for i in `seq 17`
do
  echo -n `cat lchain|sed -n $i'{p;q}'|cut -c1`=\>
  cat lchain|sed -n $i'{p;q}'|cut -c6-|\
  expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
done

6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
zepelín
fuente
2

19. Mathematica (idioma 7), 96 bytes

Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&

Función sin nombre que toma una lista de caracteres como entrada y devuelve un entero:

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 y 17 (Bash).

  • 7con la respuesta 11 y esta respuesta (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con respuesta 16 (Perl).

  • 10con 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 uso ToCharacterCode@StringSplit@convierte esta cadena en una lista de diez listas de enteros en ese rango, y Position[...,Mod[Length@#,59,33]][[1,1]]encuentra cuál de las diez sublistas coincide con la longitud modificada de la entrada.

Greg Martin
fuente
1

20. Bash (+ coreutils + openssl) (idioma 6), 121 byte

Golfed

expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u

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

6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Prueba (salida)

./test
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
zepelín
fuente
1

23. C (gcc) (lenguaje 10), 142 bytes

main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

Pruébalo en línea!

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 , 17 , 20 y 22 (Bash).

  • 7con respuesta 11 y 19 (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con respuesta 16 (Perl).

  • 10con 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.

Lyth
fuente
0

21. C ++ (gcc) (lenguaje 10 como una variante de C), 142 bytes

main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

Pruébalo en línea!

  • 1con respuestas 1 , 5 , 7 , 9 y 14 (Retina).

  • 2con respuesta 2 (Brain-Flak).

  • 3con respuesta 3 (APL).

  • 4con respuestas 4 , 12 y 15 (Javascript).

  • 5con respuestas 6 y 8 (R).

  • 6con respuestas 10 , 17 y 20 (Bash).

  • 7con respuesta 11 y 19 (Mathematica).

  • 8con respuesta 13 (Python).

  • 9con respuesta 16 (Perl).

  • 10con 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.

Lyth
fuente
Hay una opción para considerar el lenguaje C ++ 11, quedan unos pocos bytes para encajar.
Lyth
0

22. Bash (+ coreutils) [idioma 6], 123131 bytes

EDITAR: publicó una versión incorrecta al principio, debe corregirse ahora.

Golfed

expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L

La misma técnica que mis respuestas # 20, # 17 y # 10 .

Datos

6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Prueba de funcionamiento

./test
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
zepelín
fuente
¿Qué es el 44?
clismique
22 * 2? 󠀠󠀠󠀠󠀠󠀠
Vi.
@ Qwerp-Derp, solo un error tipográfico
zepelín
Vamos, tus respuestas se están volviendo aburridas ahora. Si tu próxima respuesta es así, estoy considerando votar a favor (no es interesante, ¿sabes?)
Clismique
1
Algo está mal aquí. Solo hay 20 entradas en sus letras hash (3PgT, etc.). Para la entrada vacía obtengo un error, y para la respuesta # 2 obtengo "4" (ambos funcionaron correctamente con la respuesta 20.)
Nick Matteo
0

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

{ echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8

Datos

Tenga en cuenta que las líneas nuevas se codifican como \ n para la respuesta n. ° 24

6 25 { echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8
B 24 typeset -A p\np=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)\necho ${p[(k)$1]:-1} #@<`w&X{
A 23 main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

Prueba de salida

6=>6
B=>11
A=>10
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
zepelín
fuente