(Inspirado por los 95 personajes de ASCII ... 95 citas de películas )
El reto
Dada entrada n
, salida el nth
número de Fibonacci . Puede usar cualquiera 0
o 1
indexación, indique cuál en su envío. Simple, si? El problema es que debe tomar el conjunto de caracteres de la respuesta anterior inmediata, eliminar dos caracteres y agregar un carácter separado. El personaje separado debe
- no ser del conjunto de caracteres de la respuesta anterior inmediata
- ser del conjunto de (ASCII imprimible, espacio, nueva línea, pestaña horizontal)
y, por lo tanto, el tamaño total de su conjunto de caracteres será exactamente uno más pequeño que el conjunto de respuestas anteriores inmediatas.
La respuesta inicial
El primer envío debe contener un subconjunto de (todo ASCII imprimible, espacio, nueva línea y pestaña horizontal) con dos caracteres eliminados. Cada envío posterior debe restringir sus respuestas a este formato original ASCII (lo que significa que no puede agregar un carácter Unicode o ASCII extendido ... lo siento, Jelly, APL, et al.).
Ejemplos y aclaraciones
- Suponga que la primera respuesta está en C y contiene (casi todos los ASCII imprimibles, nueva línea y tabulación horizontal), y omite el
%
y^
de su conjunto de caracteres. La segunda presentación, entonces, debe eliminar dos caracteres del conjunto de caracteres anterior (casi todos imprimibles ASCII, nueva línea y pestaña horizontal) y agregar el%
o^
. Quizás es una respuesta de PowerShell de una sola línea que omite la nueva línea. Y así. - Si la respuesta anterior tenía
print(){}!*+
como conjunto de caracteres (12 caracteres), su envío podría tenerprint(){}!
(10 caracteres) y un carácter adicional,print(){!+
(10 caracteres) y un carácter adicional, etc. - Si la respuesta anterior tenía
print(){}!*+
como conjunto de caracteres (12 caracteres), su envío no podría tenerprint()
y&
(8 caracteres) como su conjunto de caracteres, desde entonces12 - 8 > 1
. - Si la respuesta anterior tenía
print(){}!*+
como conjunto de caracteres (12 caracteres), su envío no podría tenerprint(){}!
(10 caracteres) más caracteres adicionales*
como su conjunto de caracteres, ya que a pesar de que son 11 caracteres,*
se incluye en el conjunto anterior. - No todos los caracteres en su conjunto de caracteres deben hacer algo útil para su presentación. Por ejemplo, si la respuesta anterior tenía
print(){}!*+
como conjunto de caracteres, y su idioma tiene una función incorporada!
que calcula la secuencia de Fibonacci y#
que inicia un comentario, su envío podría ser!#print(){}
y seguir siendo válido. - Puedes usar el mismo personaje de tu conjunto de personajes varias veces. Por ejemplo, supongamos que su conjunto de caracteres era
!*#_
, su respuesta podría ser!!!**#**#_!!
y sería aceptable. - Además de su código (¡y una explicación también es agradable!), También enumere explícitamente su conjunto de caracteres, para que sea más fácil enviarlo en el futuro.
Victorioso
El ganador del desafío será la persona que publicó la segunda presentación más reciente (es decir, no la persona que publicó la última, ya que rompieron la cadena).
Reglas finales
Se aplican las reglas habituales de encadenamiento de respuestas :
- La misma persona no puede publicar dos veces seguidas
- Si una respuesta se considera inválida (por ejemplo, usó un carácter prohibido o no se calcula correctamente), debe eliminarse (y cualquier respuesta posterior que también se encadene)
- Dos usuarios que publiquen "al mismo tiempo" deberán dejar que la presentación anterior permanezca
- No se puede publicar el mismo idioma dos veces seguidas. A los fines de esta regla, los idiomas de la misma familia (por ejemplo, Python 2 y Python 3) cuentan como "el mismo idioma".
Cosas finales
- Esta publicación funciona mejor si ordena por "Más antiguo" para que las respuestas estén en el orden correcto.
- Kyle Gullion construyó un verificador de código en Python aquí para verificar si falta o usa caracteres incorrectos.
Respuestas:
1. C
Contiene no
{
o}
.Pruébalo en línea!
Espero haber hecho esto bien.
fuente
{
o}
para que luego puedas agregar el otro.{
o}
, entonces puedes agregar el otro y la respuesta Brain-Flak.*
. ¿Se nos permite omitir caracteres de nuestro conjunto de caracteres y hacer que sigan siendo "incluidos", o fue un descuido?2?1*1
solucionaría eso.2. Mathematica
Contiene no
}
,Z
o pestaña horizontal. (Reincluido{
)Las dos primeras líneas son solo un comentario; la última línea es la función incorporada, utilizando la única indexación ordenada súper cósmicamente verdadera donde las entradas 0 y 1 producen las salidas 0 y 1 respectivamente (no tengo idea de si llamar a esto indexado 0 o indexado 1).
fuente
8. octava
Agregado
U
y eliminado+
y-
. La solución no contiene+-`01AEI
caracteres o tabuladores.Basado en la matriz de Fibonacci .
fuente
t
embargo, sí tienes ...\t
es la forma en que se imprime el carácter de tabulación en Python (que solía verificar mi respuesta), lo editaré para que quede un poco más claro.33, MATL
Agregado
-
, eliminado()
. La solución no contiene!&'()/\01?AEIKLMNPSTWZ`dmwz{}|~
, tabulación, espacio o nueva línea.Pruébalo en MATL Online
Error corregido:
0
,1
y\
fueron dejado accidentalmente en el comentario (después de la%
) al final. Su eliminación no rompe la funcionalidad. Se movió esta respuesta de 32 a 33 en un intento de mantenerla válida. Si es necesario eliminarlo, avíseme y lo haré.fuente
36. Java
Añadido
\
. Eliminadoqx
. No usa!&'()/1?AEIKLMNPSTWZ`dmnqtwxz{}|~[]
tabulación ni espacio.Sé que probablemente podría haber esperado más pero quería asegurarme de sacar esto antes de que fuera demasiado tarde. Esta clase no solo define una función que toma un número entero
n
y devuelve ese número de Fibonacci, sino que también imprime los primeros 20 por diversión. Traté de hacer mi debida diligencia escribiendo esto en un viejo java simple sin jugar al golf furtivo y luego eliminé los caracteres ilegales 1 por 1 hasta que llegamos a la criatura que ves antes que tú.Pruébalo en línea!
fuente
0
37. Python 2
Readded
x
. No utiliza!&'()/1?AEIMNPSTWZdmnqtwz{}|~[]
, espacio, tabulación o `. Se eliminaron K y L.Con comentarios:
Este enfoque utiliza el término general de la serie de Fibonacci.
fuente
3. Brain-Flak
No contiene
Z
,~
,A
, o pestaña horizontal. (Re-incluido}
)Pruébalo en línea!
fuente
5, Haskell
Eliminado
AEIOU
y pestaña, agregadaZ
Pruébalo en línea!
fuente
12. Python 3
agregado
:
eliminado{;
no contiene{};`01AEIPQx
caracteres de tabulación.fuente
{;
, no};
.6. Brain-Flak
Pruébalo en línea! No usa
tabAEIU`_
, y volvió a agregarO
fuente
26. Prólogo (SWI)
Añadido
%
. EliminadoNK
. No utiliza&*01AEIKLMNPSTWZ`dmrwz{}]
, pestaña o nueva línea.Pruébalo en línea!
fuente
34. brainfuck
Nueva línea agregada, eliminada
n
yt
. No usa!&'()/\01?AEIKLMNPSTWZ`dmntwz{}|~
tabulación ni espacio. (tal vez podamos obtener algunos lenguajes 2D ahora)0 indexado. La entrada / salida es por valores de byte.
Pruébalo en línea!
fuente
4, Python 2
Eliminado
AEIZ
, pestaña agregada~
Pruébalo en línea!
fuente
11. ML estándar (mosml)
Añadido
+
. Eliminado:}
. No contiene:}0`1AEIPQx
caracteres o tabuladores.SML no está en TIO, y utiliza la variedad de Moscú ml, pero no hay un intérprete SMLNJ en línea aquí .
fuente
10. C
Agregado
m
, eliminadoPQ
. No contiene+`01AEIPQx
caracteres o tabuladores.Indicador del compilador:
-lm
Pruébalo en línea!
fuente
.
aún falta en tu comentario.9. Python 2
Agregado
-
, eliminadom
yx
. Contiene no+`01AEImx
o carácter de tabulación.¡Función recursiva de Python! Agrega todos los números de Fibonacci al revés hasta que
n
sea 1.fuente
1
y te345678BCDFGHJKLMNOPQRSTUVWXYZ
18. octava
Agregado
;
y eliminadof
y espacio. La solución contiene no{}:`*%01AEIPQfrd
, sin tabulación, sin nueva línea y sin caracteres de espacio.Idéntico a la respuesta 8 , solo que con más odio SML: P
fuente
23. ML estándar (mosml)
Ahí vamos de nuevo. Agregado
Q
, eliminado}
y]
. No utiliza%&*+01:AEILMPZ`dmrzM{}]
, tabula o salto de líneafuente
Q
lugar.25. CJam
Añadido de
+
nuevo, eliminadoS
yT
. No usa%&*01AEILMPSTZ`dmrz{}]Ww
tabulación ni salto de línea.Básicamente es un puerto de mi respuesta anterior, pero esta utiliza algunos trucos de evaluación para evitar la falta de llaves.
0 indexado.
Pruébalo en línea!
fuente
27. JavaScript
Agregado
*
, eliminado"
y'
. No usa"&'01AEIKLMNPSTZ`dmrz{}]Ww
tabulación ni salto de línea.fuente
28. Haskell
Pruébalo en línea! Uso:
g 3
da2
.Agregado
"
, eliminado<space>
y-
. No utiliza&'-01AEIKLMNPSTZ`dmrz{}]Ww
ni ninguna spcae blanca.fuente
30. ML estándar
Agregado
:
, eliminado+
y?
. No contiene!&'+-01?AEIKLMNPSTWZ`dmrwz{}
ni ningún espacio en blanco.La primera parte
fun$(a,b,x)n=if(length(x)=n)then(length(a))else$(b,a@b,()::x)n
define una función$
que calcula eln
número de fibonacci th iterativamente usando una codificación de lista unaria. La longitud del argumentox
indica el número actual ya
yb
son listas de longitudfib(length(x)-1)
yfib(length(x))
. Sin
es iguallength(x)
, retornamoslength(b)
, de lo contrario agregamos recursivamentea
yb
mediante una concatenación e incrementox
de lista agregando un elemento()
.La segunda parte
("#%*./23456789<>BCDFGHJOQRUVXY\\^_cjkopqvy|~";$([],[()],[]))
es una secuencia donde la cadena se descarta y$([],[()],[])
es la inicialización de la función$
cona = 0
,b = 1
yx = 0
, lo que resulta en una función anónima que calcula el enésimo número de Fibonacci.fuente
32, Python 3
Agregado
r
y eliminado|~
. La solución contiene no!&'/\-01?AEIKLMNPSTWZ`dmrwz{}|~
, sin tabulación, sin nueva línea y sin caracteres de espacio.fuente
39. Python 2
Añadido
0
. Eliminado@^
. No utiliza!^&'()/1?@AEIMNPSTWZdmntwz{}|~[] `
, pestaña o nueva línea.Argumento para ejecutar sin secuencias de escape:
Pruébalo en línea!
fuente
38. Matl
Añadido
q
. Eliminado0 <newline>
. No usa!&'()/1?AEIKLM0NPSTW{Z`dmntwxz}|~[]
tabulación, nueva línea o espacio.Pruébalo en línea
fuente
q
x
, no lo eliminó, pero está restringido. ¿Puedes agregar x al final del comentario? La lista restringida también dice que no usaq
, por lo que debe eliminar eso.7, Python 2
Re-incluido
_
. Caracteres eliminados: tab yAEIU`
, y (solo para ponerse un poco desagradable)0
y1
. De lo contrario, solo una copia de la respuesta de Wheat Wizard (de ahí el wiki de la comunidad).Pruébalo en línea!
fuente
13. ML estándar (mosml)
Añadido
x
. Eliminado:r
. No contiene:;{}0`1AEIPQr
caracteres o tabuladores.Después de haber excluido prácticamente los lenguajes de estilo C, veamos Python. Esta respuesta es bastante idéntica a la respuesta 11.
fuente
14. octava
Se agregó
r
y eliminó nueva línea y espacio. La solución no contiene{}:;`01AEIPQ
, sin tabulación, sin nueva línea y sin caracteres de espacio.Basado en una fórmula de forma cerrada (7) .
fuente
dieciséis. octava
Agregado
/
y eliminado * y espacio. La solución contiene no{}:;`*%01AEIPQ
, sin tabulación, sin nueva línea y sin caracteres de espacio.Idéntico a la respuesta 14 , solo un ataque directo a SML y Python: P
fuente
15. ML estándar (mosml)
Espacio añadido y eliminado
%/
. No contiene{}:;`01AEIPQ
, pestaña o nueva línea.fuente