Desafío:
El concepto es bastante simple: ¡escriba un programa completo para generar su propio puntaje de golf de código!
La salida solo debe ser el recuento de bytes de su programa y un final bytes
.
PERO ESPERE ..... hay una restricción:
- Su código fuente no puede incluir ninguno de los dígitos de su recuento de bytes
- Así que si su puntuación es
186 bytes
, su programa no puede contener los caracteres1
,6
o8
Salida de ejemplo:
315 bytes
27 Bytes
49 BYTES
Reglas Adicionales:
- Los caracteres innecesarios, los espacios y las nuevas líneas están prohibidos en el código fuente, sin embargo, los espacios finales y las nuevas líneas son perfectamente aceptables en la salida
- Debe haber un solo espacio entre el número y
bytes
en la salida - Las letras no distinguen entre mayúsculas y minúsculas
- Sin autoinspección o lectura del código fuente
las lagunas estándar no están permitidas
esto es código golf , así que
¡El código más corto en bytes gana!
bytes
, sospecho que la intención es que el recuento incluya los bytes necesarios para imprimir el texto:bytes
1 bytes
o1 byte
? (tenga en cuenta que ya hay 41 respuestas, aunque no creo que ninguna se vea afectada)Respuestas:
JavaScript, 19 bytes
Octal fue inventado para servir a dos propósitos:
Pruébalo en línea!
fuente
Perl 5 , 16 bytes
Hay muchas otras formas de llegar,
16
pero esta es mía.Pruébalo en línea!
fuente
&
|
^
y~
también se pueden aplicar a cadenas y trabajar en ellas como en una lista de valores ASCII (si y solo si ambos lados son cadenas). For|
y^
funciona como si la cadena shorte se extendiera con\0
. Después de eso, es un ejercicio simple para encontrar combinaciones de letras que sean xor a la salida deseada,7 , 23 caracteres, 9 bytes
Pruébalo en línea!
Este es un desafío bastante difícil en un lenguaje que consiste completamente en dígitos, pero lo logré ...
Esto es solo 9 bytes en la codificación de 7. (Estrictamente hablando, son 8⅜ bytes (23 × ⅜ - ¼ porque se pueden omitir los dos últimos 1 bits finales), pero por primera vez, el requisito de PPCG de redondear a un número entero de bytes es realmente una ventaja porque significa que los bits extra de 1 son necesarios y, por lo tanto, no están prohibidos por la pregunta).
El principal desafío de escribir este programa en 7 fue jugar golf a menos de 10 bytes (como escribir 7 sin usar
0
o1
es bastante difícil). Esto usa la misma estructura que el programa estándar "Hello world":En otras palabras, comenzamos creando dos secciones del espacio de datos; tenemos dos literales, cada uno de los cuales empuja una secuencia de comandos allí. La segunda sección (se empujan al estilo de pila, por lo que primero se empuja = último pop) es una secuencia de comandos bastante arbitraria, pero se empuja usando la secuencia de comandos
5434004514133240105
(produciendo así la secuencia de datos5434664574733246765
; cuando discuto 7 en texto, normalmente uso una fuente normal para un comando que empuja un literal y negrita para el correspondiente literal resultante). La primera sección se empuja usando la secuencia de comandos403
, produciendo463
. Luego, la primera sección se copia nuevamente al programa (un comportamiento implícito de 7).El
463
ahora está compuesto por comandos (en negrita) que hacen algo de inmediato, en lugar de comandos (sin negrita) que solo empujan literales.4
reorganiza las secciones para obtener nuestro "literal de cadena" en la primera sección. Luego0
realiza la operación por la que 7 es más conocido: tomar una sección de espacio de datos y reconstruir la secuencia de comandos que es más probable que la haya creado. En el caso en el que la secuencia de comandos original de todo0
-5
, esto es 100% exacto (como era de esperar, ya que esas órdenes puramente empujan los datos y por lo tanto dejan evidencia obvia de lo que hicieron), y así obtenemos la secuencia original5434004514133240105
de vuelta. Finalmente, lo3
imprime.Entonces, lo que queda por ver aquí es la codificación de la cadena. Esto tiene su propio lenguaje específico de dominio:
(No hay un "conjunto de caracteres selectos: letras minúsculas" en el conjunto de caracteres "dígitos y símbolos comunes"; primero debe usar un conjunto de caracteres diferente, por lo que necesitaba usar mayúsculas para jugar al golf lo suficientemente corto como para caber debajo de los 10 límite de bytes)
fuente
Lienzo , 8 bytes.
Pruébalo aquí!
Una solución más interesante de 20 bytes:
Pruébalo aquí!
fuente
brainfuck , 53 BYTES
Pruébalo en línea!
Otra presentación con mayúscula
bytes
. Encontrado con la ayuda del excelente ayudante BF-crunch de primo.fuente
PHP, 14 bytes
fuente
bytes
parte fuera de la?>
? Pruébalo en línea!PHP anterior a 7.2 , 13 bytes
Asume la configuración predeterminada (advertencias E_NOTICE deshabilitadas) y la versión de PHP anterior a 7.2.
Necesita ser decodificado con
xxd -r
O si prefieres Base64
Pruébalo en línea!
fuente
Stax , 5 bytes
Ejecutar y depurarlo
Desempaquetado, se ve así. El modo fuente empaquetado hace que este tipo de trivial y sin interés.
Si no desea utilizar el modo fuente empaquetado,
6^p`5l@
funciona para 7 bytes.fuente
restricted-source
, no en el lenguaje. Esta es en realidad la forma más directa de producir"5 bytes"
usando Stax.R , 16 bytes
Pruébalo en línea!
fuente
bytes
". El programa tiene 16 bytes.cat
por defecto agrega un espacio entre sus entradas.object.size
salidas en el formato correcto (conbytes
incluido por defecto). Era un fastidio, la más corta que pude encontrar es 17:object.size(0)-39
. TIOobject.size(0)/3
.Python 3 ,
252418 bytesPruébalo en línea!
fuente
3*8
debería estar bien, sin embargo05AB1E , 6 bytes
Pruébalo en línea!
Alternativas para
₂¤
incluir:5>
,₁¤
,3·
fuente
Bash, 21 bytes
"Leer su propio código fuente" claramente no es el ganador aquí, pero nadie más envió uno, así que qué diablos.
Pruébalo en línea!
fuente
Retina , 15 bytes
Este programa cuenta el número de subcadenas con al menos dos caracteres en la cadena "bytes", y luego imprime este recuento y la cadena misma.
Pruébalo en línea!
fuente
PHP + HTML, 16 bytes
Sí, esto se está acercando bastante al abuso de lagunas, pero sentí que era necesario publicarlo. Y el uso de PHP significa que esta respuesta técnicamente está escrita en un lenguaje de programación completo de Turing. Por supuesto, cualquier otro lenguaje de plantillas HTML similar funcionaría igual de bien.
Demostración en vivo (sin PHP):
fuente
dc ,
1411 bytesPruébalo en línea!
-3 bytes por
@Cows quack
fuente
[ bytes]Bnn
afeita algunos bytesMATL , 13 bytes
Pruébalo en línea!
Esto empuja la cadena '57 $ f} xiw 'y resta
4
, para obtener13 bytes
. Esto se convierte en caracteres usandoc
.fuente
6EV' bytes'h
es 12 (estaba a punto de publicarlo)Octava , 22 bytes
Pruébalo en línea!
fuente
Octava , 23 bytes
Pruébalo en línea!
Y esto:
Pruébalo en línea!
fuente
4
de (los códigos ASCII de)'67$f}xiw'
da los códigos ASCII de'23 bytes'
. Luego, la concatenación con la cadena vacía''
convierte los códigos ASCII en caracteresPetit Computer BASIC, 11 bytes
El uso de una coma en una declaración de impresión moverá el cursor al siguiente múltiplo del tamaño de la pestaña actual. En SmileBASIC, eso es 4 por defecto, por lo que esto generaría
11 bytes
(2 espacios) pero PTC BASIC usó 3 en su lugar, por lo que la salida tiene el espaciado correcto.fuente
APL (Dyalog Unicode) , 12 bytes
Programa completo que imprime implícitamente en STDOUT.
Pruébalo en línea!
,⍨
Se agrega la cadena al resultado de la multiplicación. La visualización predeterminada de APL de datos de tipo mixto coloca un espacio entre un número y el texto posterior.fuente
Brain-Flak , 100 BYTES
Pruébalo en línea!
Emite la
bytes
parte en mayúsculas. Alguien familiarizado con Brain-Flak podría estar realmente confundido con todo((<>))
al principio, pero tenga la seguridad de que solo están allí para abusar de la altura de la pila nilad ([]
) y ninguno de los0
s que producen están impresos.fuente
Haskell , 26 bytes
Pruébalo en línea!
29 bytes
Pruébalo en línea!
fuente
$
en su lugar.Espacio en blanco , 112 bytes
Solo porque nadie lo ha hecho todavía:
Pruébalo en línea!
Imprime "BYTES" en mayúsculas, ya que las letras mayúsculas tienen códigos ASCII binarios más cortos. Los comandos en el programa, en mi propia notación visible compuesta, son:
fuente
Java 5 o 6, 44 bytes (programa completo)
Sin enlace TIO, porque Java 5/6 es antiguo. En Java 5/6 era posible tener una enumeración con código en lugar del
main
método obligatorio , lo que lo hacía más corto para los desafíos completos del programa.También se pueden
java.lang.NoSuchMethodError: main\nException in thread "main"
agregar errores con STDERR después de imprimir en STDOUT, lo cual está bien según el meta (pero si el desafío hubiera rechazado errores adicionales a STDERR,System.exit(0);
se pueden agregar (y los números octales deben actualizarse) para evitar el error.Sugerido por @ OlivierGrégoire (y su sugerencia relevante de Java ).
Java 8+, 74 bytes (programa completo)
Pruébalo en línea.
Java 8+,
1615 bytes (función lambda)-1 byte gracias a @ OliverGégoire .
Pruébalo en línea.
fuente
37*2
contiene a7
, por lo que no es válido. Sin embargo, su solución alternativa está bien.v->0xE+"bytes"
ov->0xF+" bytes"
. No se puede probar pero debería funcionar de todos modos. Nada dice que la puntuación y los "bytes" deben estar separados.Fernando , 79 bytes
Pruébalo en línea!
fuente
Applescript, 15 bytes
Sí, voy para allá
fuente
Your source code can not include any of the digits from your byte count
”
un carácter multibyte (3 bytes en Unicode si no recuerdo mal ), ¿entonces esto es más de 11 bytes?Adelante (gforth) ,
1413 bytesPruébalo en línea!
fuente
> <>, 13 bytes
Pruébalo en línea!
fuente
Lote, 32 bytes
COMSPEC
es generalmente%WINDIR%\system32\cmd.exe
así que extraigo la subcadena de 10 a 8 caracteres desde el final. Versión antigua de autorreferencia de 16 bytes:Afortunadamente, el recuento de bytes no era un múltiplo de 10.
fuente
JavaScript,
1615 bytesfuente
_=>5*3+' bytes'
5
en ese caso ..