Desafío:
Su tarea es escribir tantos programas / funciones / fragmentos como sea posible, donde cada uno genera / imprime / devuelve un número entero. El primer programa debe generar el entero 1
, el segundo 2
y así sucesivamente.
No puede reutilizar ningún carácter entre los programas. Entonces, si el primer programa es:, x==x
entonces no puede usar los caracteres x
y =
nuevamente en ninguno de los otros programas. Nota: está permitido usar el mismo personaje muchas veces en un programa.
Puntuación:
El ganador será la presentación que cuenta más alto. En caso de empate, el ganador será el envío que utilizó la menor cantidad de bytes en total.
Reglas:
- Solo puede usar un solo idioma para todos los enteros
- ¡Se permiten fragmentos!
- Para que sea justo, todos los caracteres deben codificarse utilizando un solo byte en el idioma que elija.
- La salida debe estar en decimal. No puede enviarlo con notación científica u otro formato alternativo. La salida de flotantes está bien, siempre que todos los dígitos que se muestran detrás del punto decimal lo estén
0
. Entonces,4.000
es aceptado. Se aceptan imprecisiones debido a FPA, siempre que no se muestren en la salida. ans =
, se permiten espacios iniciales y finales y líneas nuevas, etc.- Puede ignorar STDERR, siempre que la salida correcta se devuelva a STDOUT
- Puede elegir enviar el entero a STDERR, pero solo si STDOUT está vacío.
- Los lenguajes independientes de símbolos (como Lenguage ) no están permitidos
- Las letras distinguen entre mayúsculas y minúsculas
a != A
. - Los programas deben ser independientes.
- El espacio en blanco no se puede reutilizar
- Debe usar dígitos ASCII en la salida
¡Se alientan las explicaciones!
number
code-challenge
restricted-source
Stewie Griffin
fuente
fuente
#include <iostream>
y otras cosas repetitivas en C ++. Usted no necesitafrom numpy import *
. Nota: no soy programador, así que no conozco todos los matices. Podemos discutir en el chat si algo no está claro :)Respuestas:
JavaScript (ES7), puntaje 17, 176 bytes
Dijeron que no se podía hacer, así que lo hice: D (gracias a mucha ayuda de @FullDecent)
Caracteres no utilizados:
No creo que 18 sea posible, pero dije lo mismo sobre 17 ...
Explicación
JavaScript es un lenguaje muy débilmente escrito; Si intenta realizar una operación matemática en un valor que no sea un número, JS hará todo lo posible para convertirlo primero en un número. Esto permite muchas soluciones interesantes. He tratado de evitar el uso de los dígitos tanto como sea posible para que puedan usarse más adelante.
**
es el operador de exponenciación en ES7. La cadena vacía cuando se convierte en un número se convierte0
, por lo que esto calcula0 ** 0
, lo que está de1
acuerdo con JavaScript./~/
es un literal regex y~/~/
devuelve-1
, por lo que es~(-1 / -1) / -1
=~(1) / -1
=-2 / -1
=2
. (créditos para @ GOTO0 por la idea)3
.4
.NaN
es falso, también lo!NaN
estrue
, lo que es equivalente a1
. La expresión se convierte así en1 - -1 - -1 - -1 - -1
=1 + 1 + 1 + 1 + 1
=5
.6
.7
.8
.9
.+[]
es decir0
,[[]][+[]]
devuelve el primer elemento de[[]]
(es decir,[]
) e++
incrementa esto a1
. Luego+[+[]]
agrega la matriz[0]
, que se coacciona a una cadena y hace"10"
.11
. Originalmente había usado11&1111
3 y33/3
11 hasta que me di cuenta una vez más de lo tonto que soy ...12
y usar.length
.2
sy>
s por un tiempo para obtener este. Tuve suerte de nuevo:222 >> 2
es55
y55 >> 2
es13
.14
en hexadecimal (0xE
), pero necesitamos el dígito en0
otro lugar. Por lo tanto, anteponemos el resultado de``^``
a la cadenaxE
; la cadena vacía convertida a un número es0
, por lo que esto devuelve0 ^ 0
=0
. Luego, el resultado se XOR con la cadena vacía, que convierte ambos valores en números;"0xE" ^ ""
es14
.0XF
es un literal hexadecimal con un valor de15
.C
enCSS == CSS
(es decir,true
). Luego tomamos el resultado y lo realizamos<< C
cuatro veces, que básicamente se multiplica1
por2 ** 4
.555...555%55
devolver un número que no es0
o5
. Tuve mucha suerte mientras jugaba por aquí.Estrategias que funcionarían en muchos números:
-!NaN
funcionaría en cualquier número (actualmente5
), aunque se hace grande muy rápido.~/~/
funcionaría en cualquier número (actualmente2
), aunque se hace muy grande muy rápido.+[]
funcionaría en cualquier número (actualmente10
), aunque es mucho más fácil en10
o11
..length
funcionaría en cualquier número.`${-``}xE`-``
funcionaría en casi cualquier número si lo haces bien.C<<C
funcionaría en cualquier potencia de dos (actualmente16
), o en cualquier int si lo incluye|
.fuente
window.
propiedades, comodefaultPixelWidth
, pero todas parecen contener unol
oe
. Puede obtener otro 0 porURL | URL
pero no ayuda mucho.+ - * ~ < x X length
1 2 3 4 5 6 7 8 9 + - * ~ < x X length
. Entonces, antes de resolverlo, no podemos ir 18Gelatina , 47 enteros, 519 bytes
Cada línea es un programa separado y completo.
Pruébalo en línea! (incluye conjunto de pruebas y corrector de intersección)
Cómo funciona
Cada programa completo sin argumentos de línea de comandos ejecuta su enlace principal (definido en la última línea) de forma nula, es decir, sin entrada. Si el primer enlace de la cadena es un nilad, se consume, se llama, y tanto el argumento del enlace principal como el valor de retorno se establecen en el resultado; si el primer eslabón de la cadena es una mónada o una díada, se no consumido y el argumento implícito y valor de retorno 0 se utiliza en su lugar. En ambos casos, el resto de la cadena se ejecuta monádicamente.
Jelly destruye su producción en varios casos. Cabe destacar que una matriz singleton se imprime sin los corchetes circundantes, por lo que 42 y [42] son indistinguibles después de la impresión. Usaremos esto en varias ocasiones.
1 - 10
El átomo existente prueba si el valor de retorno 0 pertenece al argumento 0 . Lo hace, por lo que
e
devuelve 1 .BI$
es un enlace rápido, específicamente una cadena monádica formada por la$
agrupación rápida del átomo binarioB
y el átomo incrementalI
. Combinados, convierten un número entero en la matriz de sus dígitos en la base 2, luego calculan las diferencias hacia adelante de los dígitos resultantes. Si la matriz tiene solo un elemento, no hay diferenciasI
directas y devuelve una matriz vacía (falso); si hay al menos dos dígitos,I
devuelve una matriz no vacía (verdad).El rápido
#
consume el enlace rápido anterior y lo aplica a 0 , 1, 2, ... hasta que se encuentran suficientes coincidencias y devuelve la matriz de coincidencias. La cantidad requerida se calcula mediante⁼
, que compara el valor de retorno / argumento 0 consigo mismo, produciendo 1 . Por lo tanto, todo el programa devuelve [2] , el primer entero no negativo con dos dígitos en la base 2.⁾⁾⁾
es una cadena literal, específicamente la cadena ⁾⁾ . El átomo de grado superiorỤ
clasifica sus índices por sus valores correspondientes; Como ambos caracteres son iguales, esto produce [1, 2] . La matriz resultante se reduce con XOR bit a bit^/
, por lo que todo el programa devuelve 3 .ı
inicializa el argumento y devuelve el valor a la unidad imaginaria i .*
es la diada de exponenciación , cuyo argumento correcto se predetermina al argumento del enlace principal. Por lo tanto,***ı
calcula ((i i ) i ) i ≈ 4.81 + 0i , elḞ
átomo ( piso para argumentos reales , parte real para argumentos complejos) calcula la parte real ( 4.81 ), luegoḞ
pisos, produciendo 4 .Estos tres programas consisten en un solo literal y hacen exactamente lo que esperarías.
El literal
.
es una abreviatura de 0.5 e inicializa el argumento y el valor de retorno. El argumento derecho de la división entera de la díada (:
) por defecto es el argumento de los enlaces principales, por lo que::::
calcula 0.5 / 0.5 / 0.5 / 0.5 / 0.5 , produciendo 8 .Otro literal
El átomo totalmente igual
E
devuelve 1 si todos los elementos en su argumento son iguales y 0 si no. Un argumento entero z se promueve a [z] , porE
lo que devolverá 1 para el argumento implícito 0 .Ahora, el átomo de salida
Ȯ
imprime 1 en STDOUT. Luego comparamos 1 con el argumento implícito 0 usando el átomo menor que<
. El resultado es (1 <0) = 0 , y se imprime implícitamente cuando finaliza el programa.11 - 20
El átomo de la cuadrícula
G
intenta hacer una tabla visualmente agradable a partir de su argumento. Para un argumento entero simple (aquí: 0 ), simplemente lo envuelve en una matriz. El átomo plano no igual⁻
compara el argumento implícito 0 con el resultado a la derecha ( [0] ), produciendo 1 ya que sus argumentos no son iguales. El átomo de representaciónṘ
imprime 1 en STDOUT y devuelve su resultado. Al final del programa, el valor de retorno final se imprime implícitamente, por lo que terminamos con una salida de 11 .los auto- rápido
`
convierte una díada en una mónada llamándola con idénticos argumentos izquierdo y derecho. Primero,=`
compara el argumento implícito 0 consigo mismo, produciendo 1 .El átomo de producto cartesiano
p
espera listas como argumentos, por lo que promueve el entero 1 al rango [1, ..., 1] = [1] .p`
toma el producto cartesiano de [1] y en sí mismo, produciendo [[1, 1]] .El átomo eval
V
convierte todas las matrices planas (que contienen solo números y caracteres) en cadenas, luego evalúa las cadenas resultantes como programas Jelly niládicos. [[1, 1]] se convierte primero en ["11"] , luegoV
evalúa la cadena, produciendo [11] . Una vez más,V
convierte esta matriz en "11" , luego la evalúa para obtener 11 .Ahora,
×`
multiplica 11 consigo mismo, produciendo 121 . El átomo decimal convierte 121 en [1, 2, 1] , el átomo únicoQ
descarta el segundo 1 , yV
una vez más convierte una lista de dígitos en el entero que resulta de concatenarlos, devolviendo 12 .~
es el átomo NO bit a bit . Con la aritmética del complemento a dos, asigna un argumento z a ~ z = - (z + 1) .A
es el átomo de valor absoluto , por lo que asigna - (z + 1) = z + 1 . Con el valor de retorno inicial 0 , las trece copias del~A
retorno 13 .La constante
⁷
contiene el carácter de nueva línea '\ n' e inicializa el argumento y el valor de retorno.El átomo no válido
Ṿ
intenta crear una representación de cadena de su argumento z de manera que un programa Jelly que consista en este código devuelva z .La primera llamada devuelve obedientemente la cadena "” \ n " , que es un carácter literal. La siguiente llamada devuelve "” ”,” \ n " - un par de literales de caracteres. La tercera y última llamada devuelve "” ”,” ”,” ,, ””, ”\ n" - un quintillizo de literales de caracteres.
Finalmente, el átomo del índice de la ventana
w
promueve su argumento correcto '\ n' a la cadena "\ n" y encuentra el primer índice de una subcadena que comienza con "\ n" . Esto vuelve 14 .⁴
es la constante 16 . El filtro de enlace rápido falla cada (ḟ€
) promueve su argumento izquierdo 16 al rango [1, ..., 16] , luego itera sobre sus elementos.Para cada elemento z ,
ḟ⁴
se ejecuta, primero promocionando z a [z] , luego eliminando todas (si las hay) ocurrencias de 16 . Esto produce la matriz [[1], [2],…, [14], [15], []] , donde la última matriz está vacía porque contenía 16 .Finalmente, el átomo máximo
Ṁ
selecciona [15] .El átomo modular
m
, llamado con argumentos x (matriz) e y (entero) generalmente toma cada | y | th elemento de x , comenzando con el primero si y> 0 , con el último si y <0 . Sin embargo cuando y = 0 , devuelve x concatenado con su reverso.El argumento entero izquierdo 0 se promueve primero a [0] . La primera copia de
m
concatena [0] consigo misma, produciendo [0, 0] . Las copias restantes convierten este resultado en [0, 0, 0, 0] , luego [0, 0, 0, 0, 0, 0, 0, 0] y finalmente [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .Por último, el átomo de conteo
ċ
cuenta el número de veces que el argumento implícito 0 aparece en la matriz resultante, devolviendo 16 .ṭ
es el átomo de tachuela y agrega su argumento izquierdo al derecho. Comoṭ
y lo siguienteḍ
son diádicos, todas las llamadas paraṭ
pasar el argumento implícito 0 como el argumento correcto paraṭ
. La primera llamada devuelve [0, 0] , la segunda [0, [0, 0] y la octava y última [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .ḍ
es el átomo de divisibilidad ; Para argumentos x y y , devuelve 1 es x es divisible por y , 0 si no.Ḅ
es un no-op para enteros, por lo queḍḄ
prueba 0 para la divisibilidad por cada entero en la matriz construida. 0 es divisible por sí mismo, por lo que obtenemos [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]] .Ahora, el átomo no binario
Ḅ
opera en matrices planas. Para un par [a, b] , simplemente devuelve 2a + b . Como se mencionó anteriormente,Ḅ
es un no-op para enteros: un argumento entero c se promueve a [c] , y [c] en cualquier base es simplemente c .La primera llamada a
Ḅ
reduce [1, 1] a 3 , dando así [1, [1, [1, [1, [1, [1, [1, 3]]]]]]] . La próxima llamada reduce [1, 3] a 5 , la siguiente [1, 5] a 7 , y así sucesivamente hasta que la novenaḄ
devuelva 17 .Ṇ
es el átomo NOT lógico plano y asigna el argumento implícito 0 a 1 .+
es el átomo de suma, por lo que cada una de las dieciocho copias+Ṇ
incrementa el valor de retorno anterior (inicialmente 0 ). Todo el programa devuelve así 18 .C
es el átomo del complemento y asigna su argumento z a 1-z .N
es el átomo negativo y asigna su argumento z a -z . Juntos,CN
asigna z a - (1-z) = z-1 , por lo que las dieciocho copias convierten el argumento implícito 0 en -18 . Una aplicación final deC
rendimientos1 - (-18) = 19
.El enumerate átomo
Ė
enumera los elementos de una matriz, creando pares de índice de valor. El argumento implícito 0 se promueve a [0] , luegoĖ
produce [[1, 0]] . El átomo no decimal convierte una matriz plana de base 10 a entero, produciendo [10] en este caso particular.La segunda llamada a
Ė
transforma [10] en [[1, 10]] , que la segundaḌ
finalmente transforma en [20] .21 - 30
El átomo de cola
ṫ
(una díada) selecciona el postfix de su argumento izquierdo que comienza en el índice (basado en 1 y modular) especificado en su argumento derecho, promoviendo un argumento entero izquierdo x a [x] . Cuando se llama con ambos argumentos establecidos en 0 ,ṫ
devuelve [0] .El átomo any and all
Ȧ
devuelve 1 si su argumento es verdadero y no contiene ceros a ninguna profundidad, 0 de lo contrario. Aquí, simplemente lo usamos como una función de identidad para devolver el argumento implícito 0 . La división en el átomoṣ
divide su argumento izquierdo [0] en las apariciones de su argumento derecho 0 , por lo que devuelve [[], []] aquí.El átomo de índices
J
descarta los elementos del valor de retorno y los reemplaza con sus índices, produciendo el rango [1, 2] en este caso específico.Ȧ
yṫ
ambos funcionan como antes, por lo que reducen [1, 2] al postfix que comienza en el último índice, produciendo [2] .En enlaces niládicos, la constante se
⁸
mantiene [] . Esta es una nilad no analizable, es decir, no cabe en la cadena de ninguna manera. Como resultado, el valor de retorno anterior ( [2] ) se imprime en STDOUT, luego se reemplaza con el valor de nilad ( [] ).Como [] es falso, lo
Ȧ
transforma en 0 . ElJ
átomo promueve 0 a [0] , luego devuelve la lista de sus índices ( [1] ), que se imprime implícitamente cuando finaliza el programa.Otro literal Los Repdigits parecen ser el mejor lugar para usarlos.
Esto utiliza la compresión de cadena incorporada de Jelly. Los índices de @ y ṃ en la página de códigos de Jelly son 64 y 220 y los literales de cadena pueden contener 250 caracteres diferentes, por lo que esto primero calcula el entero 250 × 65 + 220 = 16470 .
16470 es divisible por 3, por lo que el cociente 16470/3 = 5490 codifica un carácter ASCII imprimible o un salto de línea. Hay 96 de estos y 5490 = 96 × 57 + 18 , lo que significa que hemos decodificado el carácter ASCII imprimible en el índice 18 basado en 0 , que es '2' .
Nos queda 57 , que también es divisible entre 3 , por lo que el cociente 57/3 = 19 = 96 × 0 + 19 codifica el carácter ASCII imprimible en el índice 18 basado en 0 , que es '3' .
Esto deja 0 ; El proceso de decodificación se detiene. Los caracteres generados se concatenan para formar "23"
El átomo factorial
!
convierte el argumento implícito 0 en 1 . Dos invocaciones del átomo unhalveḤ
convierten 1 en 2 , luego 2 en 4 . Finalmente,!
calcula 4! = 24 .En ausencia de argumentos de línea de comandos, la constante
³
contiene 100 . Dos invocaciones de lasH
vueltas 100 en 50 , luego 50 en 25 .La constante
Øa
contiene el alfabeto en minúsculas. El átomo máximoM
produce todos los índices de elementos máximos, y dado que z es la letra minúscula más grande, el resultado es [26] .Veintiséis copias de la concatenar átomo de
;
concatenar el valor de retorno inicial 0 y veintiséis instancias del argumento por defecto 0 , la construcción de una serie de 27 ceros.¬
es el átomo lógico NOT , por lo que;¬
agrega un 1 a la matriz de ceros. El siguiente¬
niega todos los elementos en la matriz, dejándonos con una matriz de 27 unidades y 1 cero.ḅ
es la unbase átomo y convierte una matriz de dígitos de su argumento izquierdo de la base especificado en su argumento de la derecha a un entero.ḅ¬
convierte de unario a entero, por lo que simplemente realiza una suma. Para una matriz de 27 unidades, esto devuelve 27 .El índice del átomo
i
promueve su argumento izquierdo 0 a [0] , luego encuentra el índice de su argumento derecho 0 en esa matriz, produciendo 1 .El átomo de rango
r
construye un rango ascendente o descendente desde su argumento izquierdo al derecho. El argumento correcto es el argumento implícito 0 , por lo que esto produce [1, 0] . Una segunda invocación dei
encuentra el índice de 0 en [1, 0] , produciendo 2 .ð
comienza una nueva cadena diádica. Como la cadena anterior era niládica, tanto el argumento izquierdo como el derecho de esta cadena serán iguales al valor de retorno de la primera cadena ( 2 ).c
en las combinaciones atomo. Con el argumento izquierdo 8 y el argumento derecho 2 , cuenta todas las combinaciones 2 únicas y desordenadas de un conjunto de 8 elementos, devolviendo 8C2 = 8! / (6! 2!) = 28 .La constante
⁶
contiene un carácter de espacio y establece el argumento y el valor de retorno en '' . Las palabras átomoḲ
promueven el carácter '' a la cadena singleton "" y lo divide en espacios, produciendo [[], []] .El átomo del grupo
Ġ
agrupa todos los índices de elementos iguales. Como ambos elementos del último valor de retorno son iguales, devuelve [[1, 2]] aquí. El átomo mínimo extrae un elemento mínimo (el único) de esta matriz, produciendo [1, 2] .El átomo de grado
°
convierte ambos enteros de grados sexagesimales a radianes, produciendo 1 ° × 2π / 360 ° = π / 180 y 2 ° × 2π / 360 ° = π / 90 . El átomo inverso toma los inversos multiplicativos, produciendo 180 / π ≈ 57.3 y 90 / π ≈ 28.6 .Luego,
Ṃ
una vez más toma el mínimo, dando 28,6 . Finalmente, el átomo del techoĊ
transforma 28.6 en 29 .El átomo de identidad
¹
devuelve 0 para el argumento implícito 0 . El átomo dividido alrededorœṡ
promueve sus dos argumentos (ambos 0 ) a [0] , luego divide [0] alrededor de subconjuntos contiguos iguales a [0] . Esto produce [[], []] .El átomo de la ventana deslizante
Ẇ
construye todas las subconjuntos contiguos de su argumento. La primera instancia transforma [[], []] en [[[]], [[]], [[], []]] , la segunda instancia transforma [[[]], [[]], [[]] , []]] en[[[[]]], [[[]]], [[[], []]], [[[]], [[]]], [[[]], [ [], []]], [[[]], [[]], [[], []]]] .
El átomo de verdad
T
enumera todos los índices de elementos de verdad. Ninguna de las matrices en el primer nivel está vacía, por lo que esto produce [1, 2, 3, 4, 5, 6] . El átomo invertidoU
invierte esta matriz, produciendo [6, 5, 4, 3, 2, 1] .Cuatro copias del átomo pop
Ṗ
eliminan los últimos cuatro elementos, dejándonos con [6, 5] . Finalmente, el átomo del productoP
transforma esta matriz en 30 .31 - 40
ȷ
es una abreviatura de 1 × 10 3 = 1000 . El átomo de raíz cuadrada½
produce 31.6 , que el átomo de rango seR
transforma en [1, ..., 31] . Finalmente, el átomo de colaṪ
extrae el último elemento, devolviendo 31 .los átomo de longitud
L
promueve el argumento implícito 0 a [0] , luego toma la longitud para producir 1 .µ
comienza una nueva cadena monádica y el resultado 1 se convierte en su argumento.Para argumentos x y y , el átomo divmod
d
produce [x / y, x% y] . Cada llamada tendrá y = 1 , por lo que el resultado siempre será [x, 0] .La primera llamada comienza con x = 1 , produciendo [1, 0] .
d
solo opera en enteros, por lo que se vectoriza en llamadas posteriores. La segunda llamada produce [[1, 0], [0, 0]] , la tercera [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , y el quinto y último, una matriz de profundidad 5 que contiene uno solo y 31 ceros.µ
una vez más comienza una nueva cadena monádica, y la matriz de antes se convierte en su argumento. los átomo plano noF
necesita esta matriz, produciendo una matriz plana de uno solo y 31 ceros. Finalmente,L
toma la longitud del resultado, devolviendo 32 .Otro repdigito, otro literal.
Cada instancia del átomo de envoltura transforma su argumento z en [z] . Con el valor de retorno inicial de 0 , las 34 instancias juntas producen [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]) ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Finalmente, el átomo de profundidad
ŒḊ
calcula la profundidad máxima de la matriz resultante, devolviendo 34 .La ventana existe atom
ẇ
promueve sus dos argumentos (ambos predeterminados a 0 ) para [0] , luego prueba si ** [0] ** ocurre como un subconjunto contiguo de [0] . Lo hace, por lo queẇ
devuelve 1 .ɓ
comienza una nueva cadena diádica. Como la cadena anterior era niládica, tanto el argumento izquierdo como el derecho de esta cadena serán iguales al valor de retorno de la primera cadena ( 1 ). La cadena utiliza dos átomos diádicos diferentes: desplazamiento a la izquierda (æ«
) y OR (|
) a nivel de bits .Una cadena diádica que comienza con tres o más díadas inicialmente llama a la primera díada con los argumentos de la cadena. Aquí, esto da 1 << 1 = 2 . Las seis díadas posteriores se agrupan en pares (denominadas horquillas ), donde la díada más a la derecha se llama primero con los argumentos de la cadena, luego la más a la izquierda se llama con los valores de retorno anteriores a ambos lados.
Para
æ«æ«
, obtenemos 2 << (1 << 1) = 2 << 2 = 8 . Entonces,æ«æ«
calcula 8 << (1 << 1) = 8 << 2 = 32 . Ahora,|æ«
nos consigue 32 | (1 << 1) = 32 | 2 = 34 .Finalmente, el rastro
|
actúa como un gancho y se llama con el valor de retorno anterior como argumento izquierdo y el argumento derecho de la cadena como derecho. Esto devuelve 34 | 1 = 35 .En ausencia de un segundo argumento, la constante
⁹
tiene 256 . El átomo inverso promueve 256 a la matriz [2, 5, 6] y lo invierte para producir [6, 5, 2] . Luego, el átomo de cabezaḢ
extrae el primer elemento, y el átomo cuadrado²
devuelve ** 6² = 36 *.El incremento átomo
‘
incrementa su argumento 1 , por lo que‘‘‘
a su vez el valor de retorno inicial 0 en 3 . El siguiente 0 es un nilad no analizable, es decir, no cabe en la cadena de ninguna manera. Como resultado, el valor de retorno anterior ( 3 ) se imprime en STDOUT, luego se reemplaza con el valor de nilad ( 0 ).Las siguientes 7 copias de
‘
convertir este 0 en 7 , que se imprime implícitamente cuando finaliza el programa.El decremento átomo
’
decrementa su argumento 1 , por lo que treinta y ocho copias a su vez el valor de retorno inicial 0 en -38 . El átomo de diferencia absolutaạ
calcula la diferencia sin signo entre -38 y el argumento implícito 0 , devolviendo 38 .-
es una abreviatura de -1 y establece el argumento del enlace y el valor de retorno en -1 . Cada uno_
es una instancia de la diádica átomo de sustracción , cuyo argumento correcto tendrá un valor predeterminado de -1 si falta.Primero,
-____-
calcula (-1) - (-1) - (-1) - (-1) - (-1) = 3 . El siguiente -1 es un nilad no analizable, por lo que el valor de retorno anterior ( 3 ) se imprime en STDOUT, luego se reemplaza con el valor del nilad ( -1 ).A continuación,
-_
calcula (-1) - (-1) = 0 , donde el literal-
establece el argumento izquierdo_
y usa el valor de retorno como el derecho. Las siguientes nueve copias_
restan el argumento predeterminado -1 del valor de retorno, produciendo 9 , que se imprime implícitamente cuando finaliza el programa.”(
es un carácter literal y el ordinal átomoO
busca su punto de código Unicode, produciendo 40 .41 - 47
En ausencia de un tercer argumento de línea de comando, la constante
⁵
contiene 10 . El átomo de longitud libreḶ
crea un rango basado en 0, específicamente [0, ..., 9] para el argumento 10 , a ambos lados del átomo de repetición en el lugarx
. Este último hace coincidir elementos de su argumento izquierdo con repeticiones de su argumento derecho, y repite cada uno de los elementos el número correspondiente de veces. Con [0, ..., 9] como argumento izquierdo y derecho, obtenemos ceros cero, uno, dos, etc.El índice en el átomo
ị
obtiene el elemento de su argumento derecho en el índice especificado en el izquierdo. Con argumento izquierdo 10 (⁵
a su izquierda) y argumento derecho [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (resultado anterior), esto da 4 .La cadena hasta este punto es seguida por una nilad no analizable
⁵
, por lo que el valor de retorno anterior ( 4 ) se imprime en STDOUT, el valor de retorno se establece en 10 y el resto de la cadena se analiza como de costumbre.Como antes,
⁵ḶxḶ
producirá la matriz [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ..., 9] . Esta vez, llamamos al átomo ordenadoṢ
en el argumento 10 , que promueve 10 a [1, 0] , luego lo ordena para obtener [0, 1] . El átomo de cabeza diádica ahora obtiene los prefijos de longitudes 0 y 1 del resultado a la izquierda, dejándonos con [[], [1]] . Cuando se imprime, nada más que 1 permanecerá visible.⁽
y sus dos siguientes caracteres constituyen un literal numérico. Si j y k son sus puntos de código en la página de códigos de Jelly y (j, k) <(124, 250) , obtenemos el número entero 1001 + 250j + k . Los puntos de código de '{' , '}' y 'ʂ' son 123 , 125 y 167 , por lo que el literal izquierdo se evalúa a 1001 + 250 × 123 + 167 (= 31918) , mientras que el derecho se evalúa a 1001 + 250 × 123 + 125 (= 31876) .Dado que el entero izquierdo es menos del doble del grande que el derecho, el resultado es (... + 167)% (... + 125) = (... + 167) - (... + 125) = 167-125 = 42 .
La reproducción aleatoria átomo
Ẋ
cambia aleatoriamente el orden de los elementos de su argumento; un argumento numérico z se promueve al rango [1, ..., z] de antemano. Para el argumento implícito 0 , este rango está vacío yẊ
produce [] . El todo átomoẠ
devuelve 1 si todos los elementos de su argumento son Truthy, 0 en caso contrario. Como una matriz vacía no contiene elementos falsos,Ạ
devuelve 1 aquí.El zip con el átomo
ż
(una díada) toma argumentos x e y y transpone el par [x, y] . Para los enteros x e y , esto simplemente produce [[x, y]] , por lo que este particularż
, llamado con argumentos 1 y 0 (el argumento implícito), devuelve [[1, 0]] . El átomo de evaluación diádicov
convierte todas las matrices planas (que contienen solo números y caracteres) en el argumento izquierdo en cadenas, luego evalúa las cadenas resultantes como programas Jelly monádicos con su argumento derecho como argumentos de los programas. Desde ["10"]consiste únicamente en literales, esto ignora el argumento correctov
y simplemente da como resultado [10] .La copia se
©
adjunta rápidamentev
y copia su resultado en el registro. Las apariciones posteriores del átomo de recuperación®
(un nilad) obtendrán [10] del registro.Las siguientes tres copias del
żv
trabajo como antes, asignando [10] a [[10, 0] a [100] a ... a [10000] . El átomo de ordenọ
prueba cuántas veces su argumento izquierdo es divisible por el derecho, por lo que aquí, calcula el orden de 10 (obtenido con®
) en 10000 = 10 4 , produciendo [4] .El siguiente
®
es un nilad no analizable, por lo que el valor de retorno anterior ( [4] ) se imprime en STDOUT, luego se reemplaza con el valor del nilad ( 10 ). Aplicamos aẠ
continuación, produciendo 1 . (Esto se requiere ya que una nilad seguida de una díada sería analizable en este punto).Como antes,
żvżvżv
agrega tres ceros al valor de retorno actual, convirtiendo 1 en [1000] . Finalmente,ọ®
calcula el orden de 10 en 1000 = 10 3 , y 3 se imprime en STDOUT cuando finaliza el programa.Sin embargo, otro repdigito, otro literal.
En primer lugar, el literal
111111
establece el argumento y el valor de retorno inicial en 111111 . Las otras corridas1
también son literales.l
es el átomo de logaritmo , que calcula el logaritmo de su argumento izquierdo a la base especificada en el derecho. Cuando se invoca 111111 con el argumento correcto 11 , obtenemos log 11 111111 ≈ 4.85 .Las palabras átomo se
K
une a un argumento de lista en espacios, después de promover un carácter numérico / z a [z] . Aquí, simplemente lo usamos para convertir el argumento 111111 del enlace en [111111] . (No requerimos una matriz aquí, pero nos hemos quedado sin átomos de identidad). El átomo AND bit a bit&
toma los valores de retorno a ambos lados, los convierte en enteros si es necesario, y calcula su AND bit a bit. En este caso particular, devuelve [4.85 y 111111] = [4 y 111111] = [4] .El siguiente
1111111
es un nilad no analizable, por lo que el valor de retorno anterior ( [4] ) se imprime en STDOUT, luego se reemplaza con el valor del nilad ( 1111111 ).K
luego convierte este número entero en [1111111] . (Una vez más, esto no es realmente necesario, pero una nilad seguida de una díada sería analizable en este punto).Como antes,
l11
calcula el registro 11 1111111 ≈ 5.81 , luego&
devuelve [5.81 y 111111] = [5 y 111111] = [5] .Este es el único programa que consta de múltiples enlaces definidos por el usuario. El último enlace es el enlace principal y se ejecuta cuando se inicia el programa, los restantes son enlaces auxiliares. El rápido
Ç
siempre se refiere al enlace sobre el actual y lo ejecuta monádicamente. Del mismo modo, el rápidoÑ
siempre se refiere al enlace debajo del actual (envolviendo) y también lo ejecuta monádicamente.El enlace superior consiste en el átomo par
,
, una díada que convierte los argumentos x e y en [x, y] , y el átomo de sumaS
, una mónada que promueve un argumento entero z a [z] y reduce un argumento de matriz por adición. Cuando,SS
se llama al enlace con un argumento entero n , calcula Σ [n, Σn] = Σ [n, n] = 2n .El enlace del medio consiste en los átomos anteriores, el rápido mencionado anteriormente
Ç
y el átomo insignificanteỊ
, una mónada que produce 1 para argumentos numéricos z con -1 ≤ z ≤ 1 , pero 0 para todos los demás. AplicarỊ
dos veces a un argumento entero n esencialmente lo reemplaza por 1 , ya que la salida del primeroỊ
(la entrada del segundo) siempre es insignificante. Este resultado se combina con el valor de retorno deÇ
(llamado con el argumento n ), y el par resultante se reduce enS
. En total, calculamosΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .Con estos dos enlaces auxiliares en su lugar, el enlace principal ahora puede construir cualquier número entero no negativo mirando sus dígitos binarios. Con un valor de retorno inicial de 0 , la cadena
ÇÑÇÇÇÑ
calcula el resultado final ((((((0 × 2 + 1) × 2) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = (((5 × 2 + 1) × 2 + 1) × 2 = 46 .El siguiente átomo primo encuentra el número primo positivo más pequeño que es estrictamente mayor que su argumento. Con el valor de retorno inicial 0 , quince invocaciones de
Æn
calcular el decimoquinto número primo, que es 47 .fuente
brainfuck , la puntuación de 2,
25514410 bytes... Sí, no es la mejor idea, ya que solo tengo 8 caracteres (las lonas van a jugar), pero veamos cuánto es posible.
Creo que esto es todo lo que es posible. : PEsta respuesta demuestra seis de los ocho caracteres que utiliza Brainfuck, siendo los otros dos,
, que es entrada y.
salida.¡Visualízalo en línea!
Explicación
Cada número se crea y almacena en la celda inicial de la cinta. Se basa en gran medida en las celdas de ajuste, que no se implementan en algunos intérpretes.
1 :
2 :
fuente
Neim , puntaje 38, 327 bytes
Explicación:
0
.ℂ
para verificar 0 y 0 para co-primalidad, que son. Esto empuja 1. Luego obtenemos el primer primo usando𝐋
, lo que resulta en una lista singleton que contiene solo 2. Luego obtenemos el elemento más grande (𝐠
), que empuja 2 como número. Luego repetimos este proceso hasta que obtengamos la lista[2 3 5 7 11]
. Después de eso, usamos𝐝
para calcular los deltas, dando como resultado la lista[1 2 2 4]
. Luego, usamos𝐬
para obtener la suma, que es 9, luego calculamos el rango exclusivo de 0 a 9, lo que resulta en[0 1 2 3 4 5 6 7 8]
. Finalmente,𝐬
se usa nuevamente para obtener 37.α
es una constante que representa una negativa, y repetidamente la presionamos y restamos (nuevamente explotando el hecho de que cuando intentamos hacer estallar una entrada vacía, se presiona 0)Puede ser probado aquí
fuente
all characters must be encoded using a single byte in the language you choose
. ¿Neim codifica esos caracteres especiales en solo 1 byte? ¿Cómo?1
Aún no has usado el personaje . ¿Seguramente puedes usar eso?Pitón 2, 15
Aquí hay un comienzo, buscando más
Gracias a leo, cuyo consejo me ayudó a llegar a 15
fuente
-~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]
para 10 y0xD
para 13 para un recuento total de bytes más bajo''is''
evalúa como verdadero para hacer otro número?((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
string.printable
:c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
Japt , 448 bytes, puntaje 42
Una gran colaboración entre Shaggy , ETHproductions y Oliver .
Estos caracteres (útiles) quedan:
Explicaciones
Un par de cosas que debes saber sobre Japt antes de comenzar, que he utilizado con frecuencia. En primer lugar, Japt tiene 6 variables reservadas para la entrada, que son las letras mayúsculas
U-Z
. Si no se pasa ninguna entrada a través de esas variables, todas tienen el valor predeterminado0
. Lo segundo está cubierto en este consejo .Haga clic en cualquier fragmento para probarlo en el intérprete en línea .
Cuando se aplica a un número, el
v
método toma un número entero n como argumento, y devuelve 1 si el número es divisible por n , 0 si no. Si no se proporciona n , el valor predeterminado es 2 . 0 (el valor predeterminado paraU
) es divisible por 2 , por lo que nos da nuestro 1 .Muy similar al primero. Cuando se aplica a un número, el
y
método toma un número entero n como argumento y devuelve el MCD de los dos números. Si no se proporciona n , el valor predeterminado es 2 . Como 0 es divisible por 2 , GCD (0, 2) nos da nuestro 2 .Í
es el atajo paran(2)
o2
-this
. Porque no tenemos ninguna entrada, que por defectothis
a0
, lo que resulta en2-0 = 2
.à
devuelve el número de combinaciones de[1...this]
, que devuelve 3Q
el valor predeterminado es una comilla simple.i
en una cadena inserta otra cadena al principio; como se explica en el n . ° 3 , cada unoiiii)
es equivalente a.i("i".i("i"))
JS, insertando dos copiasi
al principio de la cadena. Haz esto dos veces y tienes la cuerdaiiii"
.âQ
luego simula.search(Q)
, dando el índice del primero"
en la cadena, que es 4 .H
es la constante para 32 . Cuando se aplica a un número delq
método, que se lleva número entero n como un argumento, devuelve el n º raíz de ese número. Si no se proporciona n, el valor predeterminado es 2, por loHq
que nos da la raíz cuadrada de 32, que es aproximadamente 5.6568 .Â
es el acceso directo para~~
, que da el resultado, dándonos 5 .L
está preestablecido en 100 yÁ
es el acceso directo para>>>
(desplazamiento a la derecha de relleno cero a la derecha).100>>>100
es lo mismo que100>>>4
(el operando correcto envuelve mod 32), que es 6 .Como se señaló anteriormente, el valor
V
predeterminado es 0 .´
es el acceso directo para el--
operador, por lo que el código es equivalente al siguiente JS:X.n(Y)
es equivalente a Y - X , o -X + Y ; el primero--V
devuelve -1 y el segundo -2 , por lo que es aproximadamente equivalente a - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . Simplificando, obtenemos 1 + 2 + 2 + 2 = 7 .Literalmente, 8 y 9 .
Estas son las constantes de 10 - 16 , inclusive.
J
está preestablecido a -1 . El intérprete de Japt de alguna manera logra analizar esto correctamente, como(J--) - (--J) - (--J) - (--J) - (--J)
. Haciendo un poco más de matemáticas, encontramos que esto es equivalente a (-1) - (-3) - (-4) - (-5) - (-6) , o -1 + 3 + 4 + 5 + 6 = 17 .¾
es, como puede suponer, un atajo para.75
. Ponemos 24 copias de 0.75 en una matriz, luego sumamos conx
, dando 0.75 * 24 = 18 .Creo que este es mi favorito.
;
al comienzo del programa cambia los valores de algunas de las constantes de Japt; sin ellaI
es 64 , pero con ellaI
es 91 .ìw
lo convierte en una lista de dígitos y se ejecutaw
en la lista, invierte la matriz, luego vuelve a convertirlo en un número para obtener 19 .½
es un acceso directo para.5
.e
en un número x toma un argumento y y devuelve x * 10 y . Entonces, la cadena de cálculos que sucede es:Y la final
~~
sirve para poner esto en un número entero, produciendo nuestro resultado de 20 .T
está preestablecido a 0 .++
es el operador de incremento en JS y también en Japt;T+++T
se analiza como(T++) + T
, pero++T+++T
se analiza como(++T) + (++T)
, por lo que esto es equivalente al código JSEl resultado es 1 + 2 + 3 + 4 + 5 + 6 , que suma 21 .
Un literal 22 .
Ä
es un atajo para+1
, así que esto simplemente suma 231
s.¡Esto encuentra el número de permutaciones de
[1, 2, 3, 4]
, que es 4! = 24 .²
es un atajo parap2
, que eleva un número a la potencia de dos. 5 ** 2 es 25 .°
es un acceso directo para el++
operador, o si no se puede analizar como tal,+ +
. Como se señaló anteriormente, cuando no hay entrada, el valorU
predeterminado es 0 . Entonces, el código es equivalente a(++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U)
, que es muy similar al # 17 :U
primero se incrementa1
, luego se incrementa y agrega repetidamente de modo que el resultado final sea 1 + 3 + 4 + 5 + 6 + 7 = 26 .³
es el acceso directo para elp
método con un argumento de 3 . Sin embargo, si una letra minúscula aparece directamente después de un paréntesis izquierdo (»
es el acceso directo para((
), se convierte en una cadena. Esto le permite pasar a un método y llamarlo como una función (es decirm³
, sería mapeado por.p(3)
). En este caso, sin embargo,("p",3)
devuelve nuestro3
, luego lo elevamos al poder de3
(p
es el método de poder cuando se aplica a un número), lo que nos da nuestro 27 .¼
, como probablemente ya sepa, es un atajo para.25
, así que esto calcula 7 / 0.25 = 28 .Cualquier cosa envuelta en
$
símbolos se trata como JavaScript puro, por lo que tenemos una cadena de 29 guiones bajos seguidos de ab
. (Sin el$
,'
sería una cadena de un solo carácter). Elb
método cuando se aplica a una cadena devuelve el primer índice de su argumento dentro de esa cadena. Como se explica en el n . ° 3 , el últimob
se convierte en una cadena, por lo que estamos tomando el primer índice deb
nuestra cadena, que es 29 .µ
es un atajo para-=
yÉ
para-1
. El efecto es restar 30 copias de -1 de 0 , lo que da 30 .Muy parecido al # 29. El
a
método, cuando se aplica a una cadena, devuelve el último índice de su argumento en esa cadena. Usando 0-indexing, el último índice dea
en una cadena de 32a
s es 31 .S
está predefinido a un solo espacio, yc
en una cadena de un solo carácter devuelve su código de carácter, dando 32 .Literal 33 .
MgN
devuelve el enésimo número de Fibonacci.011
es 9 en octal; el noveno número de Fibonacci es 34 .#
devuelve el código de carácter del siguiente carácter. El código char en#
sí mismo es 35 , lo que hace que nuestro trabajo aquí sea especialmente fácil.p
es exponenciación, y sin un segundo argumento, el valor predeterminado es 2 ; así, esto imprime 6 ** 2 = 36 .Este es bastante complicado.
R
el valor predeterminado es un solo carácter de nueva línea (que es una nueva línea se vuelve importante más adelante).í
en una cadena, sin ningún argumento, toma cada carácter y agrega su índice: una transformación bastante inútil, pero el resultado a través de 5 iteraciones es este: (usando enR
lugar de una nueva línea literal)Interesante cómo cada entrada es simplemente un prefijo de la siguiente ... Pero de todos modos, la última parte
è.
, cuenta cuántas coincidencias/./g
se encuentran en el resultado. Hay 38 caracteres en la cadena; sin embargo, dado que/./g
solo coincide con caracteres que no son de nueva línea, el resultado es 37 .Los backticks marcan una cadena comprimida y se
¥
descomprimen enll
.l
en una cadena dal
profundidad, así que después de la descompresión, esto da 38 .Oooh chico, este es un doozy. Primero, generamos
true
con¨N
(¨
significa>=
, yN
sin entradas es la matriz vacía), luego lo convertimos a1
con|N
. A partir de ahí se vuelve bastante loco:(Los
¹
s son solo sustitutos de parentescos cercanos y se han omitido). El finalo
aparece y devuelve el elemento final en la matriz, dando 39 .Principalmente el mismo truco que con el # 3 .
¤
es el acceso directo para els
método con un argumento de 2 . En este caso, sin embargo, el código es transpiled(("s", 2).s(2) * (("s", 2) * (("s", 2))))
o simplificado,(2).s(2) * (2 * 2)
..s(2)
devuelve el número como una cadena de base 2, que da"10"
;* (2 * 2)
implícitamente convierte esto en un número y se multiplica por 4 , dando 40 .Similar al anterior.
Å
es el acceso directo para els
método con un argumento de 1 . En este caso, sin embargo, cada uno se(Å
transfiere a("s", 1)
, que solo devuelve 1 .1<<1<<1<<1<<1<<1
es 32 y1<<1<<1<<1
es 8 ; estos son XORed junto con1
para obtener 41 .±
es un atajo para+=
y¶
para===
. Esto significa que el código es en realidadY===Y
siempre es cierto, por lo que podemos simplificar esto:0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .
fuente
Iq
8 para8
regresar, aunque tendrías que encontrar algo más para 19.q
para5
permitirme usarl
para agregar un número adicional. Trabajando en una alternativa para2
poder recuperar la=
espalda.(¤
para 2.L>>L
puede liberar 6.#w s Å
puede liberar;
yI
#
para 21.*
y^
PHP, puntaje 17, 130 Bytes
personajes utilizados
ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx
1 constante booleana Z (no establecida) igual constante Z
2 FTP_MOREDATA es una constante en PHP con el valor 2
3 bit a bit y caracteres; y W
4 bit a la izquierda Desplazar a la izquierda y lógico no convertir la matriz vacía a booleana verdadera con convertir al entero 1 a través del operador de desplazamiento a la izquierda
7 bitwise O caracteres # y $ y 1
9 SIGKILL es una constante en PHP con el valor 9
10 bits a la derecha Desplazar a la derecha cada paso es una división entera con 8, por lo que tenemos los pasos 333333, 41666, 5208, 651, 81, 10
13 cuenta char X en la cadena X ... desde el principio
15 valor hexadecimal f = 15
17 bitor Xor con las cuerdas ha y YV
Todos los fragmentos son elementos de una matriz.
Pruébalo en línea!
PHP, puntaje 16, 94 bytes
personajes utilizados
AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789
1 constante booleana Z (no establecida) igual constante Z
2 bitwise y caracteres: y w
3 Pi convertidos a valor entero a través de una matriz vacía convertida a cero
7 bits xor caracteres A y v
¡10 variables $ s no configuradas! $ S = una concat con longitud de cadena de la variable $ s
13 111/2 = 55/2 = 27/2 = 13 División entera a nivel de bits
15 valor hexadecimal f = 15
Todos los fragmentos son elementos de una matriz.
Pruébalo en línea!
PHP, puntaje 14, 84 bytes
personajes utilizados
$!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx
1 constante booleana Z (no establecida) igual constante Z
3 Pi convertidos a valor entero a través de una matriz vacía convertida a cero
7 ERA es una constante con el valor 131116 mod 11 = 7
10 variable $ s no establecida! $ S = un concat con longitud de cadena de la variable $ s es cero
13 valor hexadecimal d = 13 14 bit a bit no y el signo menos eleva NULL a 14
Todos los fragmentos son elementos de una matriz.
Pruébalo en línea!
fuente
R, puntaje
1314Conseguí uno extra gracias al usuario 2390246.
Caracteres utilizados:
0123456789acemqrstuvxDFT^=";-/+()$
fuente
F^F
2"n"%in%"n"+"n"%in%"n"
:; 3-9: números, 10:,1e1
11:,22/2
12:,T--T--T--T...
13:,0xD
14:sum(mtcars$vs)
%
y pensamiento brillantes del uso de conjuntos de datos integrados. No puedo ver por qué no estaría bien.dataset['A','B']
, siempre que evite superponer las letras ya utilizadas (y sucede para contener un valor útil!). Desafortunadamente, por lo que puedo ver por un vistazo rápido, todos los conjuntos de datos con filas con nombre contienen la letra i, por lo que no es compatible con el uso%in%
.q=""=="";q+q
. Eso liberaría el uso de las letrasi
yn
. No tengo tiempo para investigarlo ahora, pero apuesto a que hay uno extra en alguna parte ...MATL , puntaje
212223 números (273 bytes)¡Gracias a J Doe por extender de 22 a 23 números!
Pruébalo en línea!Cada fragmento del enlace finaliza con
D
(display) o]D
(close loop explícitamente y display) para borrar la pila y aislarlo del siguiente fragmento.Explicación
Empujar
0
. Negar. Datrue
, que se muestra como1
.Cadena de empuje
'bd'
. Diferencia consecutiva entre los puntos de código de los personajes.Empuje la matriz de celdas que contiene el número
pi
. Convierte a matriz numérica (es decir, a un solo número). Redondear a la baja.empujar
2
dos veces. Poder.Literal numérico.
Literal numérico.
Literal numérico.
Literal numérico.
Literal numérico.
Empujar
3
. Empujar3.333333333333333
. Multiplicar. Debido a la precisión del punto flotante esto da10
.Literal numérico.
Empujar
3
. Multiplicar por2
dos.Empujar
[6]
(que es lo mismo que6
). Calcular n -ésima prima.empujar
1
14 veces. Número de elementos en la pila. Despeja el resto de la pila.Empujar
4
. Cuadrado. Hacer lo mismo. Cualquiera: da1
. Sustraer.Empujar
4
.2
elevado a eso.Empuje la matriz
[false false ... false]
(17 veces). Número de elementos en la matriz.Empuje de matriz
[true true ... true]
(18 veces). Suma de matriz.Empuje 19 números aleatorios tomados del intervalo (0,1). Concatenar horizontalmente 18 veces. Número de elementos distintos de cero en la matriz.
Empuje
0
20 veces. Concatena el contenido de la pila verticalmente (da un vector de columna). Tamaño: da la matriz[20 1]
. Máximo de matriz.Empuje
1j
(unidad imaginaria) 21 veces. Añadir 20 veces. Dividir por1j
.Literal numérico
Hacer ... while loop (
`
) con final implícito. En la primera iteración, empuja el índice de iteración (@
) y lo incrementa (Q
) 22 veces, lo que produce23
. La condición de bucle (@@<
) es falsa, por lo que se cierra el bucle.Algunas ideas para mejorar
(espacio) en el fragmento 10 podría reemplazarse por
|
X>
en el fragmento 20 podría ser reemplazado porp
, liberando así el prefijoX
.:
,A
fuente
Vim 8 en Windows, puntaje 13, 104 bytes
^{keystroke}
representa<C-{keystroke}>
, así^X
es<C-x>
, excepto por^@
que es<C-j>
. Todavía estoy tratando de agregar más números a esta lista y<CR>
representa un salto de línea.Nota: para ejecutar estos comandos, inicie vim usando
-u NONE -U NONE
. Esto es para asegurar que sus configuraciones no interferirán con el código.Los fragmentos del 1 al 10 comienzan en modo de inserción. Mientras que los fragmentos 12 y 13 comienzan en modo normal.
Explicaciones
El fragmento 8 es
:^R=&ts^@
. Tengo que agradecer a @ L3viathan para dar con esto y @ nmjcman101 por sugerir^@
como un reemplazo para el avance de línea y @ ØrjanJohansen para acortar&tabstop
a&ts
.&ts
luego evalúa el tamaño de la pestaña, que por defecto es 8, y este valor se inserta en el editor.El fragmento 10 es
8^O^A^O^A
. Insertamos un 8 y luego lo incrementamos dos veces para obtener 10.El fragmento 11 es
0^[^X^X^X^X^X^X^X^X^X^X^X0x
. Escribimos un 0 y lo disminuimos 11 veces para obtener -11. Luego eliminamos el menos para obtener 11.El fragmento 12 es
:h<CR>wwwwwwwwwwwy$:q<CR>p
. Esto abre el menú de ayuda de Vim 8, que contiene la siguiente información:Y la secuencia de
w
s se mueve al 12, en cuyo puntoy$
copia el número. Luego se pega en el editor usandop
.Snippet 13 es
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD
gracias a @DJMcMayhem por proponerlo. Esto solo funciona en Windows. El fragmento busca en el menú de ayuda los comandos que comienzan cong
. Luego se mueve hacia abajo usandoj
para llegar a esta línea:después de lo cual lo copia y lo pega en el búfer. Después de eso, todo menos el 13 se elimina del búfer.
fuente
^R=&tabstop+&tabstop+&tabstop<CR>P
Te daría el 12, o<CR>
ya se usa por^M
?<CR>
cuando dije^M
, pero gracias, buscaré eliminar el^M
fragmento 8 ahora :)0x01
mientras que Ctrl + X da0x18
. Y claramente, estos dos son bytes separados. ¿Tiene sentido?-u NONE -U NONE
,&tabstop
evalúa a 8. Así que cambié esto con el fragmento 8 con algunas modificaciones, gracias :)Mathematica, puntaje 13
fuente
⌊⌋⌈⌉
cosas en un byte cada ...⌊⌋⌈⌉
convirtiéndonos⌊E⌋
enFloor@GoldenRatio
,⌈Pi⌉
dentro4
,LucasL@4
dentro7
y77/7
dentro22/2
. Probablemente sea posible ir al menos un paso más allá aplicando una función con//
05AB1E , puntaje 18, 67 bytes
Pruébalo en línea!
fuente
A'ok
:)„((Ç;¬
=20.0
(char de dos bytes "(("; a valores ordinales; reducir a la mitad ambos; tomar la cola);₁.²₁P₃/ï
=21
(log-2 de 256; multiplicado por 256; dividido por 95; con decimales eliminados);₂Ågttγć
=22
(26º término de Lucas; dos veces de raíz cuadrada; dividido en mandriles de elementos iguales; cabeza extraída). Los dos últimos fueron prueba y error ...;)Ping pong , puntaje 127
En PingPong, cada personaje tiene su propio valor numérico distintivo, lo que hace que contar hasta 127 sea una tarea trivial. El lenguaje funciona leyendo el valor de cada personaje y empujándolo a la parte superior de una pila, donde se realizan todas las operaciones. PingPong teóricamente puede pasar de 127 pero requeriría pasar un bloque de caracteres que simplemente aparecen como espacios en un editor de texto, por lo que los dejé fuera de mi solución.
fuente
Octava, puntaje 14, 74 bytes
Estoy bastante seguro de que estoy cerca del límite ahora.
Tenido que quitar
strchr
pues ya tengoc
en el número 10. Todavía tengoj
,^
,=
,!
, espacio y tabulador horizontal (ASCII-9) a la izquierda, lo que podría ser posible exprimir uno más en.La pestaña horizontal se puede usar como un espacio, por lo que el truco se usa con
strchr
ynnz
se puede usar una vez más. Las únicas letras minúsculas que quedan sonabdfgjkmoquvwxy
. No hay muchas funciones que se puedan hacer con estas.mod
podría funcionar, pero no puede tomar la entrada de cadena.Es fácil usar los caracteres restantes para obtener
1
, pero no sé cómo puedo obtener nada más.Prueba todo .
Posiblemente útil:
fun a
es lo mismo quefun('a')
,fun a b
es lo mismofun('a','b')
y así sucesivamente. Esto se puede usar en varios lugares:Usar esto estará
0
disponible, pero no puedo ver cómo hacerlo útil todavía.e (2.71828...)
yj
todavía no se usan. Sin embargo, debe eliminarceil
para usare
.Alternativas (inspiración):
fuente
JavaScript (ES7), 16 enteros,
137130128 bytesTomé respuesta @ETHproductions' y corrió con ella durante un tiempo; ha cambiado tanto que lo estoy publicando por separado. Las ideas son bienvenidas. :)
Restante:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
O, si el fragmento de 1 se reemplaza con
!!/!//!!/!/
:$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
JavaScript (ES7), 16 enteros, 127 bytes
Un byte más corto. :PAGS
Restante:
$_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz
fuente
-~{}-~{}
: P En general, estos son bastante buenos. Mucho más corto que el mío seguro ...!&/^|
queda todo para trabajar, bastante impresionante. Si es necesario, se puede utilizar!!/!//!!/!/
durante 1 al comercio!/
para"*
.-~-~{}
+!![]+[+[]]
, siempre que no haya un mejor uso para!
Dyalog APL, puntaje 15, 89 bytes
Las nuevas líneas anteriores
l:l
son parte de 12.Los espacios en 14 representan pestañas.
fuente
0 0 0
->0,0,0
;]fromhex f
> <> , puntaje 20,
93907465 bytes(3 bytes guardados por Teal Pelican, ¡muchos bytes guardados por Jo King!)
¡Pruébalos en el parque de peces! Puede hacer que los fragmentos impriman sus resultados agregándolos
n;
al final de cada uno. Tenga en cuenta que el noveno fragmento contiene una pestaña, que se come mediante el intercambio de pila.Explicación:
iii((
, cada unoi
intenta obtener entrada, pero como no hay ninguno, empujan EOF = en su-1
lugar. Luego(
está la instrucción menor que, y como-1
no es menor que-1
, empuja una falsey0
; pero el segundo(
pregunta si-1
es menor0
, que es, por lo que empuja una verdad1
.2
y3
son obviosll{lll{[
, el primerol
empuja la longitud de la pila, que es0
, luego el segundo empuja la nueva longitud, trayendo la pila a0, 1
. Los{
gira la pila a la izquierda, el intercambio de1
e0
. Tresl
s más traen la pila1, 0, 2, 3, 4
. Luego{
gira el1
frente y[
saca la primera1
cosa de la pila, que es4
.5
,6
,7
Y8
son evidentes también.!\t00=0g
(donde\t
representa una pestaña),!
omite la pestaña, luego00=
empuja dos ceros y comprueba si son iguales, lo son, por lo que obtenemos una verdad1
. Después de presionar otro0
,g
obtiene el carácter en la posición1,0
del código, que es la pestaña con el código del carácter9
.a
hastaf
cada impulso10
a15
respectivamente (presumiblemente para hacer hexadecimal agradable).44*
empuja dos4
sy los multiplica, para16
.'RA'
empuja los códigos de caracteres deR
yA
(82 y 65 respectivamente) a la pila, luego%
calcula82 mod 65 = 17
.999-9--
evalúa a9 - ((9 - 9) - 9) = 18
."&F#"
empuja los códigos de caracteres de&
,F
y#
, que son38
,70
y35
respectivamente. Entonces,
hay división, así que obtenemos38 / (70 / 35) = 19
.1::
empuja1
ay lo duplica dos veces,+
agrega dos de las juntas para obtener2
;:+
duplica el2
y lo agrega a sí mismo para obtener4
;+
agrega los restos1
para obtener5
; luego:+:+
duplica y agrega dos veces, lo que resulta en20
.Esta es la puntuación máxima posible con> <>. Cualquier fragmento debe incluir una instrucción alguna parte que convierte una pila vacía en una pila no está vacía, y sólo hay 18> <> instrucciones que pueden hacer eso (a saber
i
,l
y los dígitos0–9
ya–f
), más el modo de cadena. (Todas las demás instrucciones no hacen nada a una pila vacía><v^/\|_#x!{}r
o intentan hacer estallar algo y errores?.+-*,%=():~$@[]on&gp
). Al ingresar al modo de cadena se usa uno de los dos"
o'
, por lo que, como máximo, hay18 + 2 = 20
fragmentos posibles.Si se siente más cómodo con los no imprimibles que yo, esto es posible en 53 bytes, gracias a Jo King:,
00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"
dondeX
,Y
yZ
son reemplazados por caracteres con códigos17
,19
y20
respectivamente.fuente
iii((i-
16>2222***
17>lll{lllll{{[{n
(tal vez incompleto, pero si desea generar como un número, al menos hay uno menosl
) 18>11+::+:+:++
! ll$g
donde el espacio se reemplaza por el carácter de control con valor 17 (Control de dispositivo 1)?MathGolf ,
485153 enteros, 324 bytes+2 puntaje (y -2 bytes distintos utilizados para
40
) gracias a @maxb .Cada línea es un programa separado.
Bytes usados (92 bytes distintos):
îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(
Explicación y enlaces TIO:
MathGolf es un nuevo lenguaje de golf especializado en desafíos matemáticos de golf. Tiene un montón de incorporaciones de un solo byte para números, lo que lo convierte en un desafío perfecto para él.
1)
î
: empuje el valor indexado 1 del bucle, que es 1 por defecto: Pruébelo en línea.2)
ª∞~
: Presione [1]; doblarlo ([2]); lista emergente e inserte su contenido en la pila: Pruébelo en línea.3)
c±b±+
: Empuje -2; luego explote y empuje su valor absoluto; empujar -1; luego explote y empuje su valor absoluto; y agréguelos juntos Pruébelo en línea.4)
φⁿ_¥-
: empuje la proporción áurea (1.618033988749895); cúbralo (4.23606797749979); duplicar la parte superior de la pila; tomar módulo 2 (0.23606797749979); restarlos unos de otros: Pruébelo en línea.5,6,7) Los números mismos: Pruébelo en línea.
8) Pruébalo en línea. 9) : empujar -3; al cuadrado: Pruébelo en línea.
○¢i♀/
: empuje 2048; convertir a una cadena hexadecimal (800); emitido a entero; empuje 100; dividir:d²
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, 35,36,37,38) Empuje incorporados para los números mismos (♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ
): Pruébelo en línea.39)
♫¼¼¼¼
: empuje 10000; dividido en cuatro enteros cuatro veces: Pruébelo en línea.40)
88888]Σ
: Presione 8 cinco veces; envolverlos en una lista; suma esa lista: Pruébalo en línea.41) El número en sí: Pruébelo en línea.
42)
╔½½½½½½½½½½½
: Presione 86400; dividido en entero por 2 once veces: Pruébelo en línea.43)
π░3§3
: Presione PI (3.141592653589793
); fundido a cuerda; pop y empuje su tercer carácter indexado a 0 (4); empuje 3; genera la pila completa unida implícitamente: 44)Pruébalo en línea. 45) 48)22#22#
: Presione 2 dos veces; tomar el poder de los dos (4); hazlo otra vez; genera la pila completa unida implícitamente: Pruébelo en línea. : Presione 2 * PI (6.283185307179586); pop y empuje el poder de 2 debajo de él que está más cerca (4); empuje la parte superior de la pila + 1 sin reventar (5); genera la pila completa unida implícitamente: Pruébelo en línea. 46) : empuje 64; decremento por 2 nueve veces: Pruébelo en línea. 47) : Push gamma (n + 1) (1 por defecto); incremente en 2 veintitrés veces: Pruébelo en línea. : Empuje el valor ordinal del carácter '0': Pruébelo en línea. 49) : cadena de empuje ; pop y empujar su longitud (4); empuje 9; generar la pila completa unida implícitamente:τ╥└
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
'0$
ÿ@@@@£9
"@@@@"
Pruébalo en línea.50)
))))))))))))))))))))))))))))))))))))))))))))))))))
: Incremente en 1 cincuenta veces: Pruébelo en línea. : Empuje 1,000,000; Empuje 10,000,000; explotar ambos y dividirlos entre sí (10); empuje 512; pop ambos y enteros-dividirlos entre sí: Pruébelo en línea. 52) : cadena de empuje ; empuje su longitud (sin reventar la cadena); elimina todo de la pila excepto el último elemento: Pruébalo en línea. 53) : Empuje 128; decrementado por 1 setenta y cinco veces: Pruébelo en línea.51)
►◄╠•╠
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
Intentaremos agregar algo más más adelante. Todavía me quedan algunas cosas útiles, incluido el módulo
%
y la multiplicación*
.fuente
88888ΓΣαΣ
->88888]Σ
o le88888§§§§Σ
ahorra 2 comandos a costa de usar uno. También podría hacer algo como"xxxxxx"h
donde el último carácter es un espacio sin interrupciones que borra todo menos TOS y puede usar la longitud de la cadena para generar el número. Tal vez use algo diferentex
, porque entonces tiene loWx
que le da 53 siempre que pueda obtener 35 de otra manera.char/ord
operador, que funciona como'A$
->67
, y también funciona para cadenas más largas (algo así como enteros base-256). No está muy bien documentado, pero si está interesado en mejorar esta respuesta, podría recrear la sala de chat de MathGolf para cualquier pregunta.88888]Σ
. No lo sabía]
. En cuanto a eso"hhhhh"h
, eso no parece funcionar . : S[
comenzando el contexto de la matriz y]
terminando y envolviendo los resultados en una matriz. Para que el nivel superior se comportara como los niveles inferiores,]
parecía una buena idea envolver toda la pila en una matriz.Java 8,
111213, 39 bytesJava solo tiene 10 símbolos para los números (0-9) y todas las llamadas a métodos y constantes requieren un punto, por lo que no estoy seguro de poder obtener más de 11 salidasAparentemente, los caracteres se convierten en enteros de forma predeterminada cuando se aplican operaciones
+1 con la ayuda de @ OlivierGrégoire
Explicaciones:
entero lambda que no toma entrada y devuelve 1. Cuando un parámetro no toma entrada, el valor predeterminado se usa de acuerdo con la meta publicación anterior, que para enteros es 0
enteros literales
XOR de dos personajes para devolver 10
entero literal
expresión lambda que devuelve la longitud de una cadena de 12 caracteres
Hexadecimal 13
TIO Link si quieres verificarlo.
fuente
2
se puede escribir como2
y10
como'P'^'Z'
. Además, esto libera a los personajesX+*
y usosP
.i->i.ONE
lo que no es válido.Gaia , puntaje 25, 203 bytes
Considero que este es un puntaje perfecto, ya que no se pueden usar más nilas dadas las limitaciones de los personajes.
Explicaciones
1)
§‼
§
es un carácter de espacio,‼
es coercitivo a booleano, por lo que el resultado es 1.2)
..⌉+⌉
.
es un atajo para0.5
, así que esto esceil(0.5+ceil(0.5))
.3)
₵P~~
₵P
es pi~
es negación bit a bit. La doble negación bit a bit es simplemente truncamiento.4)
4
5)
5
6)
6
7)
∂Ql
∂Q
es una lista que contiene los nombres de los días de la semana,l
es la longitud.8)
8
9)
9
10)
¶c
Punto
c
de código de salto de línea¶
.11)
11
12)
'¡ċ⌋u⌋
13)
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
-
es una abreviatura de-1
,⁻
es resta. Entonces esto es-1 - -1 - -1...
suficiente para hacer 13.14)
7:,Σ
Empuje
7
, duplique:
, empareje,
los dos 7 en una lista y sumeΣ
.15.
Ø!))))))))))))))
Ø
es una cadena vacía, por lo queØ!
es 1. Incrementa)
1 14 veces.dieciséis.
øøw<øøw<«øøw<«øøw<«øøw<«
17)
⟩‘
Cerrar una cadena con lo
‘
convierte en un literal de número base-250.⟩
está en el valor de byte 17 en la página de códigos de Gaia.18)
₸ḣ₸K$₸ḣ₸/S₸₸/=$
19)
]]]]]]]]]]]]]]]]]]]n
Cada uno
]
envuelve la pila en la lista. Haga esto 19 veces y obtenga la profundidadn
de la lista.20)
⇑’e
Cerrar una cadena con la
’
convierte en una lista de puntos de código de página de códigos.e
vuelca la lista en la pila.⇑
tiene un punto de código de 20 en la página de códigos.21)
0(((((((((((((((((((((_
Disminuya
(
0 21 veces, luego niegue_
.22)
22
23)
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
Convierta la cadena
“B”
de base-24, donde están los dígitos de 0-23↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B
. El resultado es23
.24)
3₈×
3 × 8.
25)
ℍḥḥ
100
ℍ
reducido a la mitadḥ
y reducido a la mitad de nuevo.fuente
C, puntaje 13
Estas son solo un montón de constantes enteras.
0==0
evalúa a 1__LINE__
= 21+1+1...
=1*10
= 10'o'
es 111,'.'
representa el ASCII no imprimible 0x10. 111/10 = 11(2<<2)
= 8,8*2
= 16,16-2-2
= 12"strlenstrlens"
= 13fuente
Ohm , puntaje
2122, 160 bytes totalesPruébalo en línea!
Explicaciones
1)
╓S@Ri
Presione los segundos de la fecha / hora actual (
╓S
). Obtenga el rango inclusivo de 1 a segundos (@
), inviértalo (R
), obtenga el último elemento (i
), que siempre es 1.2)
ΓΓ-Γ-Γ-
Γ
es -1, entonces esto es (-1) - (-1) - (-1) - (-1), que es 2.3)
αê⌠
αê
es el número de Euler (2.71828 ...),⌠
es el techo. 3 es el resultado.4)
¡¡¡¡¼
¡
incrementa el contador,¼
empuja el contador.5)
5
Solo un literal.
6)
▀lll▀l
▀lll▀
es un literal de cadena comprimido que es equivalente a"of >ic"
.l
toma la longitud, por lo que el resultado es 6.7)
ÑÑÑÑÑÑÑÿWÿk
Primero presionamos 7 caracteres de nueva línea (
Ñ
) y luego una cadena vacía (ÿ
). La pila se envuelve en una matriz (W
) y luego se encuentra el índice de la cadena vacía en esa matriz.8)
ü`½½
ü
Es un personaje espacial.`
empuja su valor ASCII (32), luego se reduce a la mitad dos veces (½½
).9)
9
Solo un literal.
10)
..≥°
..
Es un.
personaje literal . Se incrementa (≥
), lo que analiza la cadena como un número, por defecto a 0 ya que no es un número válido, y lo incrementa a 1. Luego calculamos 10 1 (°
).11)
$$J
$
empuja el valor actual del registro, inicialmente 1. Entonces, presione 1 dos veces, una la pila e imprima.12)
3dd
Presione 3 y duplíquelo dos veces.
13)
7ƒ
Empuja el séptimo número de Fibonacci.
14)
2≡≡≡Σ
Presiona 2, triplicalo tres veces, dejando 7 2 en la pila. Luego toma la suma de la pila (
Σ
).15.
║F
║
es el delimitador para literales de base-220. Dado que esto está al final de una línea, no necesita ser terminado.dieciséis.
4º
Calcular 2 4 .
17)
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
ò
es negado a nivel de bits,~
es negado aritmético. Combinando estos operadores, podemos incrementar 0 17 veces.18)
6DD++
Presione 6, duplíquelo dos veces y calcule 6 + 6 + 6.
19)
8π
Empuje el octavo número primo.
20)
τ╛hτ*
Presione 10 (
τ
), obtenga el primer elemento (h
) de sus factores primos (╛
), multiplique eso por 10.21)
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
De manera similar a los fragmentos anteriores, la cadena
"≤"
se analiza como 0. La decrementamos 21 veces y luego tomamos el valor absoluto.22)
1111 11v11%L1111 11v11%L
Aquí calculamos 1111 div 11 mod 11, que es 2, luego imprimimos 2. Luego lo hacemos nuevamente.
fuente
PowerShell, puntaje
12, 91 bytes.14, 176 bytesEditar:
(),""
Ponder 15 con algo como,"ZZZZZZZZZZZZZZZA".InDeXof("A")
pero no puede reutilizar el punto o la 'e'.PowerShell no puede hacer variables sin $, no puede hacer exponenciación, desplazamiento de bits, Pi, ceil (), etc. con símbolos básicos, y en su mayoría escribe coercian a / from bool y to / from numbers-as-strings, por lo que hay relativamente poco margen para la generación de números de baja sintaxis.
fuente
0
Aún no lo has usado , entonces 13 puede ser0xd
. Puede poner5
en su lugar normal, liberando+
para combinar1
s. Eso debería llevarlo a 14. Si necesita guardar caracteres, las claves de la tabla hash pueden tener más de una letra. Y si tiene alguna forma de obtener 1s para sumar, puede hacer10
=1e1
.""-(""-(""-lt(""-""))-(""-lt(""-"")))
. Eso lo libera$?
para resumir, y luego puedes hacer1e1
lo que sugerí.t
enfrentamientos con ambas versiones de 1.(""-eq"")-(""-(""-eq""))
parezcan mejores,q
la tabla hash se reemplaza fácilmente.TI-Basic (serie 83), puntaje
2122232425 (1003 bytes)Referirse a http://tibasicdev.wikidot.com/one-byte-tokens para obtener una lista de las cosas que el desafío hace y no permite aquí.
Todos estos pueden ser programas completos, ya que la última línea de un programa se imprime automáticamente. Pero (a excepción de 17, que tiene varias líneas de longitud) también pueden ser fragmentos en la pantalla de inicio.
En este punto, no veo otra manera de conseguir cualquier valor distinto de cero de los tokens restantes disponibles. Si hay que hacer alguna mejora, tendrá que implicar primero hacer que algunas de las soluciones anteriores sean más conservadoras.
Explicaciones
A=A
es un booleano 1 porque la variableA
es igual a sí misma.B
es 0 por defecto,tan(tan(cos(cos(cos(B
es aproximadamente 2.21, y luego tomamos la palabra.C!°
es 1 grado en radianes, aproximadamente 0.017. Algún poder positivo de esto es tanh (2), aproximadamente 0.964. Codificamos ese poder en binario usando multiplicación implícita√(
y luego tomamostanh⁻¹(
.cosh(sinh⁻¹(X
simplifica a₁₀^(
es un byte incorporado para potencias de 10 y 10 ^ 10 ^ 0 = 10 ^ 1 = 10.F nPr F
es 1.sin(tan⁻¹(X
simplifica aG≤G
es 1, entonces[[G≤G]...[G≤G]]
es un vector de columna de 13x1. Tomar el producto de su transposición consigo mismo da la matriz[[13]]
, cuyo determinante es 13.not(H)
es 1.tanh(not(H))
es solo un número que no es igual a 0 o 1, yln(XXX....X)ln(X)^⁻1
se simplificará al número deX
's en el primer registro siempre queX
no sea 0 (para que el registro exista) y no 1 (para que no estemos dividiendo por 0).e^(e^(e^(F
evalúa a aproximadamente 15.15, y luego tomamos la palabra.J≥J
es 1.identity(
construye una matriz de identidad 1x1,dim(
encuentra sus dimensiones de fila y columna, ysum(
agrega para obtener 2. Luego hacemos esto nuevamente, agregando las dimensiones de una matriz 2x2 para obtener 4, y nuevamente, agregando las dimensiones de una matriz 4x4 para obtener 8, y nuevamente, agregando las dimensiones de una matriz de 8x8 para obtener 16.K nCr K
es el coeficiente binomial 0, elija 0 o 1. Sumar 17 1 da 17.i-i-...-i
se simplifica a ⁻18i, y tomarabs(
da 18.rand→L
almacena un número real aleatorio en L, pero no nos importa cuál sea. Estamos computandolog(L)⁻¹log(L^19)
, lo que simplifica a 19.sinh(sinh(cos⁻¹(I
tiene un poco más de 4, así queseq(III,I,I,sinh(sinh(cos⁻¹(I
da la lista{0 1 8 27 64}
cuya media aritmética es 20.π
debería dar 21; codificamos ese poder en ternario usando multiplicación implícita y³√(
.3×√(
como raíz cúbica y(
para la multiplicación.Fix 0
es la configuración para mostrar 0 dígitos después del decimal, redondeando todos los valores a enteros.sin⁻¹(ᴇ0
evalúa a π / 2, y π / 2 multiplicado por sí mismo 7 veces da aproximadamente 23.59, que se redondea a 24.5*5
es 25. (Sería más conservador usar5
para obtener 5, y adaptar la solución utilizada allí para 25. Pero de esta manera ahorra mucho espacio, y*
no es un carácter muy útil porque existe multiplicación implícita).fuente
SOGL , puntaje
161820, 109 bytes, 47 caracteres utilizadosfuente
Brachylog , 16 enteros, 86 bytes
Pruébalo en línea!(La entrada controla qué programa se ejecuta, de 1 a N)
Explicación
fuente
Jelly , puntaje 22, 177 bytes
Pruebe todo de una vez o intente uno a la vez (el argumento es qué salida desea).
Caracteres no utilizados:
fuente
A
para 2 y 4 , ¿no?22¹£€Y
en el enlace principal, puedes ejecutar todos los fragmentos a la vez. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/…Reng, puntaje 40, 149 bytes
Pruébalo aquí!
Todas las letras mayúsculas son números, así que está bien. Todos menos dos de estos son fragmentos. Los dos que son programas:
El enlace proporcionado le permite a uno ver la pila mientras se ejecuta. Escribiré una explicación más tarde.
fuente
CJam, puntaje 27, 168 bytes
1-3:
X
,Y
,Z
Las variables
X
,Y
yZ
se inicializan a 1, 2 y 3, respectivamente.4:
",,,,",
Empujar la cuerda
,,,,
y toma la longitud.5-9:
5
,6
,7
,8
,9
Literales numéricos
10-20 :
A
-K
Variables preinicializadas.
21:
U)))))))))))))))))))))
La variable
U
se inicializa en0
. empujarU
e increméntalo 22 veces.22:
22
Literal numérico.
23:
';(((((((((';((((((((
Empuja el personaje
;
y decreméntalo 9 veces para obtenerlo2
, luego presiona;
nuevamente y decreméntalo 8 veces para obtener3
.24:
4m!
Toma el factorial de 4.
25:
TT=TT=+TT=TT=TT=TT=TT=++++
TT=
empuja1
. Este código es equivalente a1 1+1 1 1 1 1++++
.26:
N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
N
empuja una cadena que contiene una nueva línea.:i
lo convierte en una lista de códigos de caracteres, produciendo[10]
.~
lo desempaca, dando10
.W-
es el equivalente de sumar uno. Incrementar 10 dieciseis veces da 26.27:
LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#
Encuentre el índice de 0 en una lista donde 0 está en el índice 27.
Personajes aún disponibles:
$%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}
Algunas notas para una posible expansión:
Podría tener que cambiar 10-20 para usar las variables para otra cosa. Si obtengo números superiores a 1, puedo usar
*
(y posiblemente operadores bit a bit, pero no creo que me ayuden mucho).Todavía tengo
S
, lo que sea bueno que me haga.Si cambio 26 a
N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
, entonces:
estará disponible.Puedo empujar algunas listas vacías y obtener más ceros con las variables existentes. También puedo obtener π, pero eso no parece muy útil a menos que pueda convertirlo a un número entero de alguna manera, y
m
(param[
) yi
ya esté tomado.En términos de manipulación de matriz, puedo:
%
of
*
|
:M1|2|3|
fuente
U)))))))))))))))))))))
y 22 be22
que se liberarían1
para un fragmento posterior.:i
en la lista de dígitos (por ejemplo,[P]1b
da3
).''
lugar de usarlo';
y luego usar lo suficiente(
para envolver los dígitos (por lo tanto, alrededor de 65k(
por cada dígito). Eso liberaría;
para otra cosa, pero no estoy seguro de lo útil que es.;
, pero por el momento no puedo.Haskell , puntaje 13, 86 bytes
Pruébalo en línea!
Gracias a Ørjan Johansen por encontrar una manera de arreglar la superposición de mi carta y preservar la puntuación de trece. (También por hacer todo lo posible para notificarme sobre esto mientras se borraba esta respuesta).
pi/pi
es1.0
.sum[]
evalúa a0
,0^0
a1
, ysum[1,1]
a2
.3
para9
decodificarse ellos mismos.length"eeeeeeeeee"
produce la longitud de la cadena, que es10
.2+2+2+2+2+2
es12
.0xD
es hexadecimal para13
.fuente