Enviar el mensaje de Arecibo

38

El mensaje de Arecibo es un mensaje de radio interestelar de 1974 que contiene información básica sobre la humanidad y la Tierra enviada al cúmulo estelar globular M13 con la esperanza de que la inteligencia extraterrestre pueda recibirlo y descifrarlo ... El mensaje constaba de 1.679 dígitos binarios, aproximadamente 210 bytes ...

Se eligió el número 1,679 porque es un semiprime (el producto de dos números primos), que se organizará de forma rectangular como 73 filas por 23 columnas. La disposición alternativa, 23 filas por 73 columnas, produce un conjunto ininteligible de caracteres (al igual que todos los demás formatos X / Y).

El mensaje de Arecibo

Este es el mensaje con color agregado para resaltar sus partes separadas. La transmisión binaria real no tenía información de color.

Fuente: Wikipedia


Su tarea es enviar el mensaje de Arecibo en la disposición exacta de 23x73 que se muestra en la imagen. Cualquiera de estos formatos de salida es aceptable:

  • Texto, usando un carácter para unos y otro para ceros (usando las reglas habituales para la separación de filas)
  • Una matriz 2D de dos valores distintos.
  • Una imagen de 23x73 con dos colores distintos.
  • Una secuencia ininterrumpida de 1679 elementos de dos valores distintos (es decir, cualquiera de los formatos anteriores, pero planos).
  • Un entero de 1679 bits. Indique el orden de bits y bytes (endianness) en su solución.

Para su comodidad, aquí hay una versión que se puede copiar y pegar (también un ejemplo de salida en formato de texto):

00000010101010000000000
00101000001010000000100
10001000100010010110010
10101010101010100100100
00000000000000000000000
00000000000011000000000
00000000001101000000000
00000000001101000000000
00000000010101000000000
00000000011111000000000
00000000000000000000000
11000011100011000011000
10000000000000110010000
11010001100011000011010
11111011111011111011111
00000000000000000000000
00010000000000000000010
00000000000000000000000
00001000000000000000001
11111000000000000011111
00000000000000000000000
11000011000011100011000
10000000100000000010000
11010000110001110011010
11111011111011111011111
00000000000000000000000
00010000001100000000010
00000000001100000000000
00001000001100000000001
11111000001100000011111
00000000001100000000000
00100000000100000000100
00010000001100000001000
00001100001100000010000
00000011000100001100000
00000000001100110000000
00000011000100001100000
00001100001100000010000
00010000001000000001000
00100000001100000000100
01000000001100000000100
01000000000100000001000
00100000001000000010000
00010000000000001100000
00001100000000110000000
00100011101011000000000
00100000001000000000000
00100000111110000000000
00100001011101001011011
00000010011100100111111
10111000011100000110111
00000000010100000111011
00100000010100000111111
00100000010100000110000
00100000110110000000000
00000000000000000000000
00111000001000000000000
00111010100010101010101
00111000000000101010100
00000000000000101000000
00000000111110000000000
00000011111111100000000
00001110000000111000000
00011000000000001100000
00110100000000010110000
01100110000000110011000
01000101000001010001000
01000100100010010001000
00000100010100010000000
00000100001000010000000
00000100000000010000000
00000001001010000000000
01111001111101001111000

Si su idioma, por alguna razón, tiene un mensaje incorporado para el mensaje de Arecibo, no puede usarlo.

¡Buena suerte!

ACTUALIZACIÓN: acepté la respuesta 05AB1E ya que fue la primera en ser más corta que el mensaje original. No dejes que eso te disuada de nuevas soluciones.

ACTUALIZACIÓN 2019-09-09: La respuesta aceptada se movió a una nueva respuesta 05AB1E, ya que obsoleta la respuesta anterior 05AB1E. El mismo punto se aplica a la actualización anterior; nuevas soluciones aún son bienvenidas.

Carne de res
fuente
9
Si un idioma tiene un mensaje incorporado para Arecibo, puedo decir, con toda seguridad, que he visto todo en este mundo c:
Luis felipe De jesus Munoz
66
Mathematica (IIRC) tiene una imagen integrada para Lena, por lo que no me sorprendería si también tiene un mensaje de Aricebo.
Beefster
@RobertS. no porque hay otros formatos válidos además del texto.
Beefster
44
En el espíritu del formato original, se debe permitir un resultado / salida plana. El punto completo de 1679 bits es exactamente que el número adecuado de filas y columnas se puede inferir de la longitud de la señal.
Adám
44
@LuisfelipeDejesusMunoz Mathematica tiene una función incorporada para determinar las cabras en una imagen , por lo que un mensaje de Arecibo no me sorprendería realmente ... Ese lenguaje se basa en las características integrales del universo ...>.>
Kevin Cruijssen

Respuestas:

2

05AB1E , 182 bytes

•sv¯ö¨₁ÿ.ÛïžôΔ¨γ_Ígv…=Bм„Ð.(ܦi´…ε±G½0^/₃öRÛž¼¤"āêL!ˆ6‘Gā܇ðв₁÷Ã7€₂䬂Cć¨g¾†@÷[_-68¯a∍iG*6ÆîÆ;>éjζãÎÂ+ºžnî¼ć'(ÝÞΔ‹∞ÉݹÕ5λ₆*a|§oÄmôæ¨;—:hž¥ð¢ocË'¨%¡4Ćáß©ìća;FÁ?iˆèεƒʒ•Ž6–FD4‰`3ÊD?i-

Pruébalo en línea! (utiliza 1para 0 y 0para 1, según lo permitido por la pregunta).

Pruébalo en línea! (5 bytes más, 0para 0 y 1para 1, se agregaron nuevas líneas para facilitar la lectura).

La mayor parte del código es una constante entera N de base 255, el resto es un decodificador de sistema numérico asimétrico , que utiliza probabilidades codificadas de 75% / 25% (la frecuencia real de 0 es 76.35%, que está tan cerca del 75% que solo ahorraría 1.2 bits en la carga útil, mientras que el agradable y redondo 75% nos permite guardar varios bytes en el decodificador).

Ž6–F                  # repeat the following 1679 times:
    D                 #  duplicate N
     4‰`              #  divmod 4: pushes N / 4, N % 4 on the stack
        3Ê            #  is N % 4 != 3 ? (boolean 1 or 0)
          D?          #  print a copy
            i-        #  if it's 1, subtract: N = N - (N / 4)
                      #  (otherwise, N = N / 4, since that's the top of the stack)

Aquí está el codificador ANS que generó la constante: ¡ Pruébelo en línea!

Î                          # start from N = 0
 Rv         ]              # for each bit in the reversed input:
   4*                      #  N *= 4
     yi                    #  if the bit is 1:
       3+                  #   N += 3
         ë                 #  else:
          3÷               #   N /= 3 (integer division)
             ₅B'•.ø        # compress N as base-255
Mugriento
fuente
¡Buen trabajo en la obsolescencia de la respuesta anterior 05AB1E!
Beefster
13

05AB1E , 215 210 200 bytes

Guardado 15 bytes gracias a Magic Octopus Urn

•cOž¤4é57ñΛ\Ö₃BαöĀíL½₅üBdoÙRθLγ¨G×Tćú$G(˜ƒ¦!€R»SDrµCnJ†d∊ζ·<8‡T@|‹ï=BζćósxG\ÙÎ$¿o₁5/ÔŸÇBûXé-”a::Ž]°∊y;ζ]MÜβ‘иL”β{üÃÇíäc€÷›ÎU=}¨иaŸdY`»¾ÚUβ:ô©¦β†₅DGŠβ3Jêθ,äá!ícqšVÖ›lÈΣ¯pε €êʃDpÙ/¬Žλ8:ãÿ3=€.Þć•3BY¾4×:

Pruébalo en línea! o con formato adicional

Serie-255 codificada cadena trinaria con ocurrencias de 0000reemplazado por 2.

Emigna
fuente
@MagicOctopusUrn: ¡Gracias! Eso lo hace 210 incluso :)
Emigna
En realidad, es aún mejor si lo reemplaza 0000con 29 bytes más. - pastebin.com/aZ6tHxjx for 201
Magic Octopus Urn
@MagicOctopusUrn: Sí, eso también lo encontré y estaba a punto de publicarlo :)
Emigna
2
¡Guay! Como los mensajes de Arecibo tienen 210 bytes (23 * 73/8 = 209.875), su solución (actualmente en 200 bytes) es más corta que el mensaje en sí.
JL
Seguí adelante e hice de esta la respuesta aceptada, ya que fue la primera en ser más corta que el mensaje en sí.
Beefster
11

Java, 688 678 590 379 361 bytes

Devuelve una cadena.

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replace("2","0000")

-10 bytes devolviendo el flujo sin procesar (respuesta anterior)
-88 bytes usando números de base 10 (¡gracias @ceilingcat!)
-211 bytes (¡sabía que podría jugar golf!) Usando un BigInteger codificado en base 36 (gracias @JollyJoker !)
-18 bytes usando un número entero codificado diferente (gracias de nuevo @JollyJoker) ¡

Pruébelo en línea!

Explicación:

n->new java.math.BigInteger("base36 string",36) // Decode the base-36 integer.
   .toString(3)                                 // Re-encode as ternary
   .replace("2","0000")                         // Replace 2 with "0000"
                                                // Implicit return
Benjamin Urquhart
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Adam Lear
9

Jalea , 213 bytes

“H²ɓ¶Ṡḷ€ẹ]ƒf*ḳḢ&ƁṇOḥ{ḄṫwỊ+oLạʋߢH9¢¹÷ỴɗÇ⁶ƲƙæḊẋ3³=1!VƇƁ'D⁺3Ỵɱ©⁵%fȯez#ƈjƒżṆo.ZF⁶ċṢ⁶ọṛb9Ȯƒd?ƁUĠt4ẇ,ḞġƒµƭfʠƁP§÷øȤŻPɲẋ(¢ß¢(⁽3¶ṙėɗy@ṁYȮL~e⁷ƤĊ§nỊṅµṠ°@7ẠB>Ġ⁻İ}uy¡½:esOpḢt}qS©HÞṬĖṛṇḣ9÷;ESḢ,Ẉ^ṙpƲ©tṃwçnẒṆ¡⁻Jıƒị£-&Ɱ*ẋʂżoȯÑḢɼ’

Pruébalo en línea!

Jugué con la codificación Huffman, pero las mejoras en el tamaño de los datos fueron superadas por el código adicional. Como tal, esta es simplemente una versión codificada en base 250 de la salida deseada. La salida consiste en un número entero que cuando se decodifica como base biyectiva 2 producirá la lista 1D de 1s y 2s. Gracias @Emigna por señalar el cambio en las reglas.

Pruébelo en línea, ¡con más decodificación para demostrar la salida!

Si se prefiere una codificación binaria más convencional, aquí hay una que codifica una representación entera del mensaje binario invertido. El bit más significativo del número entero representa el comienzo del mensaje.

Nick Kennedy
fuente
7

Brainfuck, 2360 2008 1938 bytes

-[>+<-----]>---......+.-.+.-.+.-.+.-............+.-.+.-.....+.-.+.-.......+.-.<++++[->.+.-..<]>+.-.+..-.<+++++++++[->.+.-<]>..+.-..+.-<++++++[->......<]>.+.<++[->.-...................+..-.+<]>.-..................+.-.+.-.+.-..................+.....-<++++++++[->....<]>+..-....+...-...+..-....+..-...+.-.............+..-..+.-....+..-.+.-...+..-...+..-....+..-.+<++++[->.-.+....<]>.-<+++++[->.....<]>.+.-.................+.-............................+.-.................+......-.............+.....-.......................+..-....+..-....+...-...+..-...+.-.......+.-.........+.-....+..-.+.-....+..-...+...-..+..-.+.-.+.....-.+.....-.+.....-.+.....-..........................+.-......+..-.........+.-...........+..-...............+.-.....+..-..........+......-.....+..-......+.....-..........+..-.....<+++[->........+.-<]>.....+.-......+..-.......+.-.......+..-....+..-......+.-..........+..-...+.-....+..-...............+..-..+..-.............+..-...+.-....+..-.........+..-....+..-......+.-.......+.-......+.-........+.-.....+.-<++[->.......+..-........+.-...+.-.<]>........+.-.......+.-<++++[->.....+.-..<]>..........+..-.........+..-........+..-.........+.-...+...-.+.-.+..-...........+.-.......+.-..............+.-.....+.....-............+.-....+.-.+...-.+.-..+.-.+..-.+..-......+.-..+...-..+.-..+.......-.+...-....+...-.....+..-.+...-.........+.-.+.-.....+...-.+..-..+.-......+.-.+.-.....+......-..+.-......+.-.+.-.....+..-......+.-.....+..-.+..-<+++++++[->.....<]>+...-.....+.-..............+...-.+.-.+.-..<++++++[->.+.-<]>..+...-.........+.-.+.-.+.-.+.-................+.-.+.-..............+.....-................+.........-............+...-.......+...-.<++[->........+..-...<]>....+..-.+.-.........+.-.+..-<++[->.....+..-..+..-..<]>..+.-...+.-.+.-.....+.-.+.-...+.-..<+++[->..+.-...+.-<]>........+.-...+.-.+.-...+.-............+.-....+.-.<++[->...+.-.........<]>+.-..............+.-..+.-.+.-...........+....-..+.....-.+.-..+....-...

Pruébalo en línea!

Probablemente jugaré golf aún más pronto.

orthoplex
fuente
5

Deadfish ~ , 1115 1088 1084 bytes

oooooo{i}ooo{d}iod{o}{i}c{d}ooiodoiodoooooiodoiodoooooooiodoo{i}c{ii}is{iiii}doooio{{{d}}}oioodooiodo{i}coooooooo{d}o{{i}}oo{{d}i}c{d}{oo}ooo{i}c{d}{o}ooioodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}{o}ioodoiodooooooooo{i}c{d}oooooooooiodoiodoiodooooooooo{i}c{d}oooooooooiooooodooooooooo{i}c{d}{oo}ooo{i}c{d}ioodooooiooodoooioodooooioodooo{i}c{d}iod{o}oooioodooiodoooo{i}c{d}ioodoiodoooioodoooioodooooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiod{o}oooooooiodo{i}c{d}{oo}ooo{i}c{d}ooooiod{o}oooooooiod{i}c{d}ioooood{o}oooioooood{i}c{d}{oo}ooo{i}c{d}ioodooooioodooooiooodoooioodooo{i}c{d}iodoooooooiodoooooooooiodoooo{i}c{d}ioodoiodooooioodoooiooodooioodoiodo{i}c{d}iooooodoiooooodoiooooodoioooood{i}c{d}{oo}ooo{i}c{d}oooiodooooooioodoooooooooiodo{i}c{d}{o}iood{o}o{i}c{d}ooooiodoooooiood{o}iod{i}c{d}iooooodoooooioodooooooioooood{i}c{d}{o}iood{o}o{i}c{d}ooiodooooooooiodooooooooiodoo{i}c{d}oooiodooooooioodoooooooiodooo{i}c{d}ooooioodooooioodooooooiodoooo{i}c{d}ooooooioodoooiodooooioodooooo{i}c{d}{o}ioodooioodooooooo{i}c{d}ooooooioodoooiodooooioodooooo

Pruébalo en línea!

Si alguien tiene la paciencia para jugar golf más allá, lo saludo con anticipación. :PAGS

-27 bytes imprimiendo 10s y 100s en lugares donde corresponda.
-4 bytes imprimiendo tres 1000 y un 1001 en la línea 3

Reinstalar a Mónica
fuente
4

Piet , 1763 codeles

Emite una secuencia de 0s y 1s (sin saltos de línea).

Codel talla 1:

Programa de mensajes de Arecibo con codel tamaño 1

Codel tamaño 4, para facilitar la visualización:

Programa de mensajes de Arecibo con codel tamaño 4

Explicación

  • Primero, empuje un valor centinela de -1 en la pila.
  • Luego presione el mensaje de Arecibo, en orden inverso (porque es una pila), usando codificación de longitud de ejecución.
  • Finalmente, alterne entre dos bucles, uno imprimiendo ceros y el otro imprimiendo.
    • El contador de bucles es el valor actual de la pila, decrementado hasta que llega a cero, momento en el cual se descarta y cambiamos al otro bucle.
    • Entre el bucle de ceros y el bucle de unos, verifique el valor del centinela, saliendo si se encuentra.

Notas

El programa sigue un camino en espiral, en sentido horario desde la parte superior izquierda hacia el centro. Los bloques negros dispersos que siguen más o menos las diagonales son el control de flujo. Aquí está el rastro de NPiet .

He estado trabajando en esto desde el día en que surgió este desafío, ¡pero me tomó un poco de tiempo hacer que el mensaje "se escribiera" en la imagen! Primero escribí los bucles finales y el valor centinela, y luego construí el mensaje desde el centro hacia afuera. (Dado que Piet siempre comienza la ejecución desde la parte superior izquierda, esperaba tener que barajar y rotar la imagen para evitar el exceso de espacio en blanco, ¡pero encaja perfectamente!)

Dato curioso: la codificación de longitud de ejecución en Piet no (por sí misma) ahorra espacio. Se necesitan n codeles de un color para insertar el valor n en la pila, o n codels de diferentes colores para insertar esos 1s en la pila. Por lo tanto, es el mismo número de códeles en ambos sentidos. Pero los números más grandes que le da RLE significan que puede usar trucos aritméticos (por ejemplo, en lugar de presionar 9, puede presionar 3, duplicar y multiplicar) para reducir la cantidad de códeles y bloques de formas divertidas para completar el espacio en blanco disponible.

No estaba seguro de cómo contar el puntaje para las entradas de Piet. Encontré algunos que parecen contar todos los códeles, y otros que explícitamente solo cuentan aquellos utilizados activamente. Acabo de contarlos a todos; Ignorar los códeles blancos (incluso aquellos por los que el programa nunca se mueve) parece ignorar los espacios en blanco en un lenguaje de programación más típico.

Ah, y justo ahora (dos horas después de publicar) me di cuenta de que perdí el último tiempo trabajando en esto. Quería recortar la última fila y columna casi completamente blancas, así que barajé las cosas ... incluyendo los bloques negros de control de flujo. ¡Pero los bordes de la imagen funcionan igual que el negro! Si hubiera recordado eso, no habría necesitado pasar tanto tiempo pensando en las complejidades de los DP y CC ...

Tim Pederick
fuente
3

C # (compilador interactivo de Visual C #) , 366 332 329 319 bytes

int i;foreach(var g in"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ")Write(Convert.ToString(g,2).PadLeft(12-i++%2,'0'));

Reemplace todas las instancias de con \0para probar.

Pruébalo en línea!

C # (compilador interactivo de Visual C #) , 305 bytes, 210 caracteres

_=>"*ЀʂЄ࢈ҲપԤ␀␀␀؀ȀȀȀ؀␀␀సؘࠀƐഘؚ྾ߟ␀␀Ā␀␀ྀ␀␀రܘࠈഌΚ྾ߟ␀␀ă␀ྃ␀ȁăÃ1`ƀ1`ÃĂȃЃЁȂĀ`ÀƀȺ؀Ȃ␀ȏЀȗɛ'Ŀஇ7;ȅ?ȅ0ȍЀ␀␀΂␀ΨՕ΀Ŕ␀ŀЀ?܀àǀƀ`̀°٠Ƙѐʈш҈EB@Ѐޟɸ".Select((g,i)=>Convert.ToString(g,2).PadLeft(12-i%2,'0'))

Lo mismo con lo anterior, reemplace con con \0para probar. Salida como IEnumerable<string>.

¡Pruébelo en línea! (Cortesía de Jo King)

Encarnación de la ignorancia
fuente
Creo que el ++in 12-i++%2es un nop (al menos, funcionó para mí cuando lo quité)
mi pronombre es monicareinstate
@someone Son una copia y pego de la respuesta anterior que olvidé eliminar
Encarnación de la ignorancia
2

Perl 6 , 368 bytes

.say for :36('FJXOE0PDDNF5Y5EHGB8M9SWMXQOXIKIT9F6ZKWWDEACHCBGXL1N2H60CN0CJ4EMKF7D6MODSKYJVNR4SFTDR6NSM421LQ67B6MWF0G5BQATFOJJJBQ0UFQM64T0MWSQN41C4S5D1QR5KJM2L9UTYMMKUBBQWY45YCMRGO8ZRGTQH7LXMZBUASLCTKX30IH0AYKYEPHO8HFHX8GAY5WM38YOSUX0HABYSH2PPBLRDRZIN5ANAQ3V8PLOZ6EHC0UI95EVJVYD1820T6J14HGX85NWFQET2NWOMSNUT0JW4LHMY90X094TEE9KXJXSNN6YPERFQW').base(2).substr(1).comb(23)

Pruébalo en línea!

La cadena larga es el mensaje como un único número de base 36 (con un solo prefijo de 1 bit para preservar los ceros iniciales) que luego se vuelve a convertir en binario e imprime 23 bits a la vez.

Sean
fuente
Puedes usar >>.sayy&{S/.//} para guardar bytes. ¿Has pensado en usar una base diferente en su lugar?
Jo King
Sí, intenté usar la base 65536 / Unicode, pero el mensaje se encuentra con algunos puntos de código sustitutos prohibidos. Pude evitar eso agregando un desplazamiento fijo a cada punto de código, pero sorprendentemente, algunas de las cadenas generadas bloquearon Emacs varias veces. La resolución de los problemas comenzó a tomar más tiempo del que podía permitirme comprometer. Probablemente volveré a ver el problema más tarde.
Sean
No tiene sentido entrar en caracteres de varios bytes, ya que eso aumenta su recuento de bytes. 289 bytes implementando mis consejos de arriba y usando la base 122 (para evitar retornos de carro)
Jo King
2

Wolfram Language (Mathematica) , 383 bytes

StringPartition[Uncompress@"1:eJylVNsRwjAM44s92KBaBTZgAUZhZXqtHUuOWrgjfSRRHFlO4tyer/vjfb1clq0gHirZLRjby986hppcT5p+L3BmgJ3t4Ul4GsNyG++7YbaXLh0ZTPhXa4Sn+X/s9Qfk3Hx2cOaSIuNYaVu5laschvgzSqAjHeZBhilKgKBDEhw0upJRg+HOK4MyNC29sfbc3RV0VPDqeLiRTsG1ulExq1IitpunOa7asnYM9siDZ6eidUCkEzBOUbCkGIig4aTyUGBYWAX6W6aXIWGGI/HlhmsqzSU0QTZjkMVpaX5sBsm1OGKVg1qdjKP0EdyqZBRLhukn8DLBQav6kccgz8OKfgBzjj6Z",23]

Pruébalo en línea!

J42161217
fuente
2

Nodo.js , 333 bytes

Devuelve una cadena binaria de 1,679 caracteres.

_=>Buffer(")SI)=.);1K?>>>2333A3,93/I3>3)g33)AEAAI)5JQZJTddda3)*3*33+3,e)*e3)//0/1+)1C/7Cgggg3395)9)A3IY)h*IH),39+)995*)AA-)59Y)*O3Z,)//*)91**)A*-)Y+1)I11+)I1)/)5)Y*0?)+)I)-0Y)1@;_*7<gaE/a)Q7[*9HM+IY16I33)a1)*^.><I+S3.38I)*hY)7)a)Y)A,9*A5Y/A:9=9K:1I-=9)19I)9*329)GH<").map(x=>s+=(x-51&&x-41).toString(2).padStart(x-51?6:12,0),s='')&&s

Pruébalo en línea! (con salida formateada)


JavaScript (ES8), 413 bytes

Devuelve una cadena binaria de 1,679 caracteres.

_=>atob('AsKoAFBQEiIlwpVVUk!!ABwo!DQ!Gg!V!Aw7g!!GHGHCi!yGjHChsK+w7vDr8K!!Q!Q!!g!/DgAHDs!AGGHDhiAgCGhjwprDu8Ovwr4!ABAw4AQAcK!MKDAD8GB8OAD!QCAQQMBAYYEAMQwABwpgAMQwBwoYEBAgEEBgEQDAIwoAgIMKAwoDCgMKABgDDgDAEdcKACAgAEHwAIXTCtgTDpMO+w6HDgcK4AsKDwrIFB8OkCgwINg!!A4IAB1FVTDoArCo!U!/CgAB/w4ADwoDDoAwAYDQBYMOMBmEUFEIkSMKARR!woQgAQB!MKUAHnDtA'.split`!`.join`AA`).replace(/[\s\S]/g,c=>c.charCodeAt().toString(2).padStart(8,0))

Pruébalo en línea! (con salida formateada)

Arnauld
fuente
2

Chicle, 275 236 bytes

00000000: e006 8e00 e45d 0018 6988 6507 a228 f86f  .....]..i.e..(.o
00000010: f042 c62f d4d7 b99e 38bc 56c4 52e8 2630  .B./....8.V.R.&0
00000020: 8aaa 7252 d47d 5ef4 c96a 511f 6842 423f  ..rR.}^..jQ.hBB?
00000030: 4532 ca9f 22d3 1633 e0c4 665a d5dc 4e68  E2.."..3..fZ..Nh
00000040: 7b09 76ae 3c7e f9d4 fa4a 05e0 4163 c580  {.v.<~...J..Ac..
00000050: c585 a383 2396 4ca9 1f48 a4b9 744e 37c8  ....#.L..H..tN7.
00000060: 68c5 af23 645d 59a7 542a e6d1 23b9 3aba  h..#d]Y.T*..#.:.
00000070: f0e6 2738 dfd5 b0a3 c6a3 60bf c5b6 5ae6  ..'8......`...Z.
00000080: 7893 30a8 ae04 edf9 298b b777 4d56 285b  x.0.....)..wMV([
00000090: cb74 07cc 7a7b a399 3dc7 c6e7 b693 e715  .t..z{..=.......
000000a0: d908 876e 001f 7408 3c6a 5fcd 37cb 02c4  ...n..t.<j_.7...
000000b0: 93de 33c2 a11e 5bac cd12 d99a fac3 e0fa  ..3...[.........
000000c0: 5268 94f7 d640 0f73 cede f79d 821f 39d1  [email protected].
000000d0: dc49 ff06 6962 6c31 dc29 a077 01c3 7690  .I..ibl1.).w..v.
000000e0: 85ef bbec 31d7 5c7f f9fc 8c00            ....1.\.....

Pruébalo en línea!

orthoplex
fuente
2

herramientas bash + GNU, 351 bytes

base64 -d<<<H4sIAPnNrVwCA6WUCRLDIAwDv8T+/3NNG4wvkTBTcisGSyA8xrcxj9Ds02F+Z7yuf3hnPyz0vYEGz+FG3IKBs+x3oL2PSh0TM/PnaGamft9nPUCew3uCp5RBWdRKGz+qNJn8qRKkkNaTBgeVIFXWOdi8VCaIeUnsfHo6TXpaFa3H5olf6J5MuIHLoEi0uKcRFCvEXG4xseglKzZg7kpYJSLMA3M7wXKR+/L2WiK0kvg+TDASLp6Co1KEVIlVmFzhCktRhBBDdSZYU1xKHrmDUllcWpNR/YNW2QNcHtF0rSySb0MXk/SDUgEwG5gfLvQDxuEdDo8GAAA=|gunzip

TIO

Nahuel Fouilleul
fuente
no vi tu publicación de bash antes de que publicara la mía, ¡mucho más pequeña!
Noodle9
2

MathGolf , 223 220 bytes

'06*"x·<×J× Ç×►B×ê\"@$↕!◙è0♥f░×→0×♠p└☺α?×└•×◙×P♣p¬è:×►∟××××←♦♠♣≥â☻┘A☺▄αp⌂r☻[║►×>◘×♦♦└:☻↑`×♥@@@@►►@♦↑ ☻♀◘☻♦☻☻├×å↑×╠×Ç!♠ 0♀◘↑◘☻♦◘×♠α♥â▼ÇA×└×◘` ×××▀≈}═14♦►►π0♀××°×α•×►×××☻×◘××└≈}_├↑♪↓×─0♫♥×××|××*××♪×Ç♠×└×××× ⌐¬╩↕◄○((×T☺"$à+

Pruébalo en línea!

Explicación

'0                push single character "0"
  6*              repeat 6 times
    "..."         push the magic string
         $        convert to ordinal
          à       convert to binary string
           +      pop a, b : push(a+b) (add the 6 zeroes)
                  below is the footer
            L/    divide into groups of 23 characters
              n   join array with newlines into string
maxb
fuente
Puede mover el L/nal pie de página, por lo que en realidad son 220 bytes. ¿Se pueden guardar más bytes al portar las respuestas 05AB1E / Java (usando este entero comprimido , convertirlo a base-3 y reemplazar todos los 2s por 0000s)?
Kevin Cruijssen
@KevinCruijssen buena captura! Desearía tener más funciones de reemplazo de cadenas, pero eso no es parte de MathGolf en este momento.
maxb
¿Qué tal un mapa por dígito, que asigna 2a ♫░╞? EDITAR: no importa. ¿Veo que no tiene una conversión de base integrada (excepto para binario / hexadecimal) para convertir a base-3?
Kevin Cruijssen
@KevinCruijssen He pensado un poco en cómo debería cambiar la conversión de base. Ciertamente no necesito un comando para convertir una cadena binaria a decimal, y otro para convertir una matriz binaria a decimal. De esa manera, puedo incluir otro comando de conversión de base (y la idea siempre ha sido tener una conversión de base general en el idioma).
maxb
Seguramente puedes mover el + pie de página
Jo King
1

Perl 5 , 460 bytes

printf"%023b",oct"0x$_"for qw/15400 141404 4444b2 555524 0 600 1a00 1a00 2a00 3e00 0 61c618 400190 68c61a 7df7df 0 80002 0 40001 7c001f 0 618718 404010 68639a 7df7df 0 81802 1800 41801 7c181f 1800 100804 81808 61810 18860 1980 18860 61810 81008 101804 201804 200808 101010 80060 60180 11d600 101000 107c00 10ba5b 1393f 5c3837 283b 10283f 102830 106c00 0 1c1000 1d4555 1c0154 140 7c00 1ff00 701c0 c0060 1a00b0 330198 228288 224488 22880 21080 20080 9400 3cfa78/

Pruébalo en línea!

Xcali
fuente
1

Python 2 , 336 bytes

print bin(int('gVQAKCgJERLKqqkgAAAAAMAABoAADQAAKgAAfAAAAAMOMMQAGQ0Yw19998AAAAgAAgAAABAAB+AA+AAADDDjEBAENDHNffffAAAAIGAIAMAAQYAfgwPgBgAIBAIIGAgMMCAGIYAAzAAYhgDDAgIEAggMAiAYBEAQEEBAQEADAGAYAjrABAQACD4AELpbAnJ/cODcAUHZAoPyBQYEGwAAAAAcEAA6iqpwBVAACgAHwAA/4AHAcAYAMBoAsGYDMIoKIRIkQCKIAEIQAIAgAEoAPPp4'.decode('base64').encode('hex'),16))[3:]

Pruébalo en línea!

Imprime una cadena de bytes

TFeld
fuente
1

Java (OpenJDK 8) , 364 bytes

n->new java.math.BigInteger("in95mzupnpa2r0khpoepyql6ioqyn413avucdtfay6indx4wh9dehe3sn18klobtf4z9g9q17umqmwpegr2khb5eqinn7azl4jpfp2a8eui0xfrx5qwrou6gd65jh4ge3ls14k5lu7qrvmg6942ms29u5rb8fa6yrdhfoh5zoi9bdi7uh5ig0u0ff9kounth8sh357x7qox4m3oqviqsbrvakonbka4ahp21bgzi5v1akzzuqoncszhpabbru9q1uo2g11zr73iuyiqr5ikr69zn7cdv7e1lhd6ese9",36).toString(3).replaceAll("2","0000")

Pruébalo en línea!

Explicación: Primero tuve n->new java.math.BigInteger(str,36).toString(2) , simplemente convirtiendo un número de radix 36 en binario, pero eso necesitaba nueve caracteres adicionales para ceros iniciales. Entonces, tuve la idea de codificar en longitud de ejecución algunos ceros como dos. Una longitud de cuatro ceros parece minimizar la longitud de la raíz 36, por lo quen->new java.math.BigInteger(str,36).toString(3).replaceAll("2","0000")

Vea la discusión bajo esta respuesta para la corrección de errores de ceros a la izquierda por @KevinCruijssen

Bromista alegre
fuente
Agradable. ¡Es impresionantemente corto para Java!
Eric Duminil
1

[Python 2] , 345 bytes

s=''
for c in")pG/K(K*j$h%kk$ppjGE&I6S6S5[5eCv~vw0x&z$wgqcde$e=G4G?G4eG0e:vv~w*G,gn$wy$uuuuG=G)I,G.I2G(I-eG(I)e-I0G+G+G(G)I*G*vI)G-w'I2y0w'I,vI)G*G)G+G(G*I+W+I+W,G*G(G*G*G*G/I,I+I,iq.G*G1G(e/g$c%sG)m%md~$M(},K(cO)K(eO)K(I)G(aE$M(G1c$hpoI,pG3K1e3eU/M*M,I.I*S,Q(y*y'hG(ng&j$j$G+hW/g'G/G,G1k.d$e$mN":c=ord(c)-35;s+=[bin(c-35)[2:],'0'*c][c<35]
print s

Codifiqué la longitud de las cadenas de 0 como un byte que comienza en chr (31). Luego codifiqué los 10101 restantes como números binarios que comienzan en chr (70) hasta chr (126). Las cadenas binarias que no encajaban se dividieron en trozos más pequeños.

Editar: reducido a 326 bytes. Gracias jo king

Editar: se corrigió un error en el programa generador de código

Editar: Edición final

SorpresaPerro
fuente
No necesita guardar la cadena grande en ouna variable.
xnor
1

Zsh , 577 bytes

Pruébalo en línea !!

S=fxxxxibxxdxxfyzzzyx1yxxxxxxxxyyywl2ij1xxhj1xxhixxxhi5iw2d3c2d2cxl2bxc2az2c2d2ax4x4x4x5wcxpxwdxp15m5w2d2d3c2cxfxhxc1xxc2c2y1xx4x4x4x5wc1f2ixj2kd1e2j15e2f5j2kb1h1hyc1f2gzd2d2fzaf2c1d2ej2b2gf2c1d2ed2d2f1dc1f1hzb1g2hya1h2hya1i1gzb1g1g1dc1l2ed2h2gbz2xx2ibzd1lbzb5jb1dx2xyx1x2fy2yy6x3d3e2a3ixxd2x2b1fxxd6b1fxxd2db1e2a2jwb3e1lb2xxzxxxxx1b3ixxxynxxeh5jf9hd3g3fc2k2eb2a1ix2da2b2g2b2cazxxdxzzazyzyzzezxz1ge1d1d1ge1i1ggyxxia3y4xy3z
for X in ${(s::)S};{case $X in
[a-w])V=$[##$X-96];printf 0%.s {1..$V};;[1-9])V=$[##$X-48];printf 1%.s {1..$V};;[x-z])V=$[##$X-119];printf $[10**$V];;esac}

Lógica de codificación personalizada utilizada. La cadena Stiene 421 caracteres, posiblemente podría comprimirse un poco más. Las letras a-wrepresentan 0s repetidos . Los números 1-9representan 1s repetidos . Las letras x y zrepresentan 10 100 1000respectivamente.

Tal vez debería haber intentado codificación de pares de bytes o Ascii85 .

roblogic
fuente
0

Golpetazo , 702 697 bytes

xxd -r -p<<X|xz -dc
fd377a585a000004e6d6b4460200210116000000742fe5a3e006d7010c5d
0018698865079cf6752c9e9a501a87a798b4844f9fcfdaaf87733b9d8239
48c816d860a938767f6cb81299f3e8a638effe3068c0e096a8949c81d706
7dff3ec44e5df185b3a48e5b5857724386e8c37cfbd5c856b12614ee78ec
c41df4db3aea71fd3a8fa474905609f78eb3fd66e246557965e4ab6dfd67
efbd9202f542ded9cf98a6401ee2d23afb2f544bd2442c6f428fd612397c
f2c6ec50847ddccc5832185e487712e5a7676b97058d7e485d5a3536166a
44ab3c689c93073cdda73b5306a83c4cd268e79db238bfa2d08ac912a578
75020bc7828342d5a62ce367aff7fd89290336128d119fa4272da2b2a79f
5973c71935af054f2d91c1bd3ea4847a3502d6dc8c975114dacf8a4de600
622d80986dbb0cd00001a802d80d00001b16e2a7b1c467fb020000000004
595a
X

Pruébalo en línea!

Fideos9
fuente
0

Rubí , 362 bytes

puts"5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0".to_i(36).to_s(2).rjust(1679,?0)

Entero escrito en la base 36. Seguramente hay una forma más eficiente de comprimir el entero, por ejemplo, con zlib o base64.

Pruébalo en línea!

Eric Duminil
fuente
350 bytes si: (1) usa "% b" para formatear en lugar de to_s, (2) anteponer? 0 * 6 en lugar de llamar a rjust
GB
0

[C ++ (VC ++) (pero también probado con gcc)], 585 bytes

#define l(x,y)for(int x=0;x<y;x++)
void f(){const char*a="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";int x=1679;l(i,365){int d=a[i],c=0;d-=(d>47&d<58)?48:((d>64&d<71)?55:0);if(d>70&d<91)c=91-d,d=a[i-1];for(c;c>=0;c--)l(j,4){if(x--)cout<<(int)((d&(8>>j))>0);}}}

Pruébalo en línea!

Versión sin golf (sin embargo, carece del descanso después del elemento 1679 y continúa hasta el 1680):

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    const char arecibo[]="02A800505012Y595Y240U180YD0Y1A0Y540YF80V61C618800321A3186BEFBEF80X10Y40W20YFC001F0X1861C620200868639AFBEFBE0W40C0100180Z83003F0607C00C001008041030101860400C430Z19800310C018604040804101804403008802020808080800600C030047580080800107C002174B604E4FEE1C1B80283B20507E40A0C08360U3820Z751554E00AA0Z140ZF80Z7FC00380E00C0060340160CC06611414422448804510Z8420010040Z940079F4F0";
    int i = 0,j;
    while (i<sizeof(arecibo)-1)
    {   
        char digit = arecibo[i];
        int count=0;
        if (digit >= '0' & digit <= '9')
        {
            digit -= '0';
        }
        else if (digit>='A'& digit<='F')
        {
            digit -=  'A'-10;
        }
        else if (digit > 'F'&digit<='Z')
        {
            //digit does not contain any valid hex digit in this case
            count = 'Z' - digit+1; //digit = Z means repeat 2 more times...
            digit = arecibo[i - 1];
        }
        for (count; count >= 0; count--)
        {
            for (j = 0; j<4; j++)
            {
                cout << (int)(((digit)&(8 >> j))>0);
            }
        }
        i++;
    }
    return 0;
}

Como explicación: concatenaba las 73 líneas de salida de muestra dadas a una línea larga. los codifiqué en hexadecimal donde el orden de bits es msbfirst (usando este programa https://github.com/Marc-Bender/longBinaryStreamToHex/releases/download/addedErrorCode-4/longBinaryStreamToHex.exe ) acorté la salida de eso en aproximadamente 70 Dígitos hexadecimales usando las letras 'G' - 'Z' como un signo para repetir el último Dígito durante una cierta cantidad de veces (Z = 2 más veces, Y = 3 más veces ...) el resto debería ser relativamente explicativo para los golfistas de código . abusar del preprocesador para acortar los bucles, abusar del ,operador y similares.

El formato de salida es una secuencia ininterrumpida de 1679 valores 0/1.

der bender
fuente
antes de que alguien le pregunte al const si es compatible con VC ++ (con lo que se realizó el trabajo principal de desarrollo)
der bender
@ceilingcat, creo que incluso puedes acortar eso más al incluir tu inclusión en la sección del encabezado ...
der bender
554 bytes
ceilingcat
0

Perl 6 , 348 bytes

{"000000"~:36<5r0afnfm8wyke8tfy1pwt7xnuaxyh3wodfp7bhsdufyw0xbdp1pumrz2xir652tuc0ss9oec8yad9vefivd66j126wybhefgk2lv38uqqiur11u26q275jk3h2ucithd59awpaenqpqi1pszh52179zw0ddqtbrvo6kyrrgv8c34pqrp83j8estjp63v29t4hqp9yg2hhzjlq1e9zqx6gh20n9lsttimz3nbq060ritrphxaru7quwmv3oujhd9xjddpbacq4bnpf270znhgto59yn0980itylf95pxw9x7rvkvi7mfql1sx46puo8rg4dq0>.base(2)}

Basado en la solución Java de Benjamin Urquhart .

Utiliza un flujo directo de 0 y 1 caracteres. El siguiente enlace tiene un código para embellecer la salida.

Pruébalo en línea!

bb94
fuente
0

Tcl , 366 bytes

binary scan [binary decode base64 QBUACgpIRKSpqkoCAAAAgAEAsAAAWAAAKgAAHwAAAGA4hhEATFiMYX3f9wEAAAgAIAAAAAQA8AOADwAAGIZjBAQQFsZZ3/d9AAAAAgMIgAEAwQD8YOADMAAIECAIDAgYBgIwwgCAGQCMMIBhICAQIAgYIAIMEAEEBAEBAQFgAAMMIK4BEBAACD4AhC5tICd/h4MdQMFNoOAnUDAQbAAAAAAcBACuqCoHUAUAKADwAQD+A8ABBzAABiyABjNghigoQiQSAaIIACEEgAACACkAni8P] b* z
puts [join [regexp -all -inline .{23} $z] \n]

Pruébalo en línea!

martillo de lobo
fuente
0

C ++ (con biblioteca de precisión múltiple Gnu), 359 bytes

Esto genera la cadena como una línea. Utiliza '1' para 0 y '0' para 1: /

Simplemente lee la cadena incrustada como base 62, y la imprime como base 2.

Úselo g++ -g arecibo.cpp -lgmp -lgmpxxpara compilar y vincular

#include<gmpxx.h>
main(){mpz_out_str(stdout,2,class_mpz("vuXXKBYAu1hPsJPbFSf49akyFd0bjJbMIV3upYndU8kYFPsXcpRUK6c9qnzLfORxkxGL7ZfoSwgSxFbCrydjHL603QcxexopAzoYAcAyEiENJJU2vQA2zM8NDbeY6nHgL8rfFoPJaclwxx6TeKeOEknEQHzp7C4la3o8xijBQLOVweFZ1CI9dXy2VQhgnuwF5FeW5mQ909pRMxhn6G3RJ1QEtkS7oGMZYHM03fh4fj391IoYLGVv3iUVuTrV2ghz9CUa9hfGYrdhGoVE2w1inYalYl",62).get_mpz_t());}
CSM
fuente
No pude conseguir que esto funcione hasta que sustituye class_mpzconmpz_class
ceilingcat
0

Perl 6 , 276 bytes

:122[q{3tD!gLF['u#.K>'uCG8cvJZ[on1Z<D!	`Fhqq-_V'"qQn+n0h\:b,vXjo&1TMFaW;wvX;eUS
(ueelNSu,y93\kjGI&?UU/38 :ndi4Y5cyC+ME\g7LWaS;QLjtD^L+aVd(XW%gy\8'Eqk-+f72S5J?(r5!m^5px T[Z'3&jd0lZ'/x%#(}.ords].base(2)~~S/.//.say

Pruébalo en línea!

Salidas como una serie de 1679 0s y 1s. Puede tenerlo en diferentes líneas agregando .comb(23)>>antes desay .

Explicación:

:122["...".ords]                     # Convert the string from base 122
                .base(2)             # To base 2
                        ~~S/.//      # Remove the leading 1
                               .say  # And print

Probablemente pueda guardar bytes usando la salida como un entero de 1679 bits o invirtiendo la representación de bits.

Jo King
fuente
0

C ++ (gcc) , 748 bytes

#define l(X,Y)if(z[i]==#X[0])z.replace(i,1,#Y);
void f(){std::string z = {"ab1eeedala1ebeeheal1mmma1fa1g1eeeeeeea1a1alddhgdbcdgdacedgdacedgdeeedgdndgddhgqiafbcag1dbfa1blceafafbcegcinnnlddhgmddegddhgb1ddelcidbnlddhgqqiafag1hedeblcebcaf1acegcinnnlddhgmhcdegdacdagb1bfda1lcibfhcildacdaga1d1d1almhcheagbqch1blhcmbqgdacachghcmbqgbqch1blmh1d1aga1hfd1aledcd1aledeheaga1heheblmdbqgbcdchga1af1efdga1hedbla1bndala1b1f1ea1fflh1aia1acccl1f1bibff1ldeebf1fla1h1ebfccla1h1ebfbla1bffdalddhgaibedblaieemeeeeelaideeeealdh1ehldcidalhcccidlbihf1hlafdafbgacedefblfachfacagemebeemagema1ma1magbememhgbeb1b1hgbedehghea1edalfcacieacca0"};for(int i=0;i<1751;i++){l(q,cb)l(n,fi)l(m,ae)l(i,c1)l(h,ba)l(g,0l)l(f,0c)l(e,01)l(d,bb)l(c,11)l(b,aa)l(a,00)l(l,\n)printf("%c",z[i]);}}

Pruébalo en línea!

Al reemplazar la subcadena más utilizada con un nuevo personaje hasta que ya no valga la pena

r3dapple
fuente
735 bytes
techo
0

Python 3 , 331 bytes

exit(''.join(bin(i)[3:]for i in b'`UP@JB`IDQKJjjd`@@@@@L@@Ah@@CP@@J`@@_@@@@@LNLLP@FPtXpu}}}|@@@@`@@`@@@A@@A~@@~@@@CCCcDA@DMCGM____@@@@HF@H@L@@PX@_`pO`A`@HA@HHF@`LLB@FHX@@s@@Xa`CC@`HD@``L@b@XAD@PDDA@PD@C@F@X@ck@A@P@BCx@DKi[@gI\x7f\\NC\\@TGY@hOrAPXDFp@@@@@\\D@@zbjipAU@@B`@Gp@@\x7fx@G@\\@X@LAh@lFXCLHhJHQHdPBJH@DHP@H@`@Dh@OOix')[1:])

Pruébalo en línea!

Jitse
fuente