te amo te amo te amo!

58

XKCD # 99 , con el título "Binary Heart" muestra una imagen simple de unos y ceros, con algunos dígitos de color rojo.

ingrese la descripción de la imagen aquí

El corazón rojo es visible a simple vista, pero el mensaje oculto en la secuencia binaria no lo es. Si elimina todos los espacios y líneas nuevas e interpreta la secuencia binaria como código ASCII de 8 bits, terminará con el mensaje:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

¿Hermoso, verdad?

Pssst ... La cadena no es una simple repetición de cuerda.


Su desafío es crear esta imagen binaria con 21 dígitos de ancho y 23 dígitos hacia abajo. Debe haber exactamente un espacio entre cada dígito en cada fila, y una nueva línea para cada nueva fila. Tenga en cuenta que los últimos bits son solo el comienzo de la letra e, ya 21*23que no es divisible por 8. También necesita esos bits correctos.

La función o programa no debe tomar ninguna entrada. Se aceptan espacios iniciales y finales y líneas nuevas.

El resultado de su código debería verse así:

0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1
1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1
1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0
1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0
1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0
1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1
0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1
0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1
0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0
1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1
0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0
1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1
0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0
1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1
0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1
1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0
0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0
1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1
1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0
0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0
0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0
1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1
0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1

Este es el código de golf, por lo que gana la respuesta más corta (en bytes).


Tabla de clasificación

Stewie Griffin
fuente
1
Quiero que sepas ahora, ¿encontraré una manera de alguna manera?
BlueRaja - Danny Pflughoeft
25
Daré una recompensa por el código más corto que colorea la salida usando rojo y negro para hacer el corazón
Beta Decay
¡Tengo aún más curiosidad por saber cuál es el mensaje oculto en la Os mayúscula de la cadena de salida ASCII!
brandonscript
No hay mensaje, o al menos ninguno ha sido descubierto por explicaxkcd.com que dice "La combinación de mayúsculas y minúsculas" O "se presume intencionalmente para evitar un patrón repetitivo".
Petr Hudeček
1
@WeeingIfFirst Jaja, sobreestimas mi habilidad de programación :). También puedo otorgarle al ganador una recompensa de 100 repeticiones, cuando pueda
Beta Decay

Respuestas:

21

Gelatina , 36 33 32 bytes

“ḅUɗaṚPXṙ’Bṁ484¬“½:J⁺ȤṾ‘Ḥ¤¦Ḋs21G

¡Gracias a @JonathanAllan por jugar 3 bytes!

Pruébalo en línea!

Cómo funciona

El enlace principal

“ḅUɗaṚPXṙ’Bṁ484¬“½:J⁺ȤṾ‘Ḥ¤¦Ḋs21G

se ejecuta de forma nulad (es decir, sin ningún argumento) cuando se ejecuta el programa. Su valor de retorno se imprimirá implícitamente.

“ḅUɗaṚPXṙ’

encuentra los índices de los caracteres citados en la página de códigos de Jelly y los interpreta como dígitos de un número base biyectivo 250. Esto produce el número entero 13021639057551959994 .

          B

convierte el entero generado en binario. Esto produce la matriz de bits 1011010010110110001001111011101100110010101111001010011110111010 que corresponde a la codificación UTF-8 de la cadena ilOveyOu , desplazada un bit a la izquierda.

El cambio es necesario porque Bno puede devolver una matriz de bits con un 0 inicial . Otras opciones incluyen negar los dígitos binarios o calcular el cuadrado al revés, pero este enfoque ahorra un byte.

            ṁ484

moldea la matriz generada como el rango de 1 a 484 , es decir, repite el contenido de la matriz tantas veces como sea necesario para alcanzar una longitud de 484 .

Esto es un poco más de lo que necesitamos para dar cuenta del cambio. Podríamos eliminar el primer bit ahora, pero hacerlo más tarde significa que todos los bits que deben intercambiarse se encuentran en índices pares, lo que nos permite guardar el byte mencionado anteriormente.

                 “½:J⁺ȤṾ‘Ḥ¤

toma los puntos de código de los caracteres entre y ( [10, 58, 74, 138, 154, 186] ), luego los "libera", es decir, los multiplica por 2 ( [20, 116, 148, 276, 308, 372 ] ).

                ¬           ¦

niega condicionalmente los bits en esos índices. Esto corresponde a las variaciones de O / O en el patrón original.

Finalmente,

                             Ḋs21G

elimina la matriz de bits (elimina el primer bit), divide la matriz restante en filas de 21 elementos e imprime la matriz resultante como una cuadrícula.

Dennis
fuente
2
Puede guardar 3 bytes más si usa mayúsculas Ocomo predeterminado, creo que esto lo hace:“ỊḂr×C)ḃȯ’B¬ṁ483¬“Œ` ° @‘+\¤¦s21G
Jonathan Allan
Correcto, hay más O mayúsculas que minúsculas. ¡Gracias!
Dennis
44
Así es como se ve la magia negra ...
Bassdrop Cumberwubwubwub
2
@BassdropCumberwubwubwub Ahora debería haber un esfuerzo para convertirlo en magia roja y negra
Matthew Roh
43

Gelatina , 41 40 35 33 bytes

¡Gracias a @Dennis por llegar al final ṖṖCG! (complemento C= 1-xen lugar de lógico no ¬)

“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ8_“¤ÐŒ#'/‘¦32BFs21ṖṖCG

TryItOnline

¿Cómo?

“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ8_“¤ÐŒ#'/‘¦32BFs21ṖṖCG - Main link: no arguments
“ƝƓỊ⁹Ȥ⁶Ị⁺‘                        - code page indexes [150,147,176,137,154,134,176,138]
                                        (bitwise negated values of ordinals of "ilOveyOu")
          ẋ8                      - repeat eight times
            _                     - subtract
                     ¦            - apply to indexes
             “¤ÐŒ#'/‘             - code page indexes [3,15,19,35,39,47]
                                        (the indexes of the lowercase Os)
                      32          - literal 32 (subtracting 32 from the bitwise negated
                                                'O's makes them bitwise negated 'o's)
                        B         - binary (all are 8 bits, hence the negation)
                         F        - flatten list
                          s21     - split into slices of length 21
                             ṖṖ   - pop (remove the last two slices)
                               C  - complement (transform the bits to what they should be)
                                G - format as a grid
                                        (inserts both the spaces and line feeds)

Versión "color", 77 bytes

“¤Ɓ¥J¬ ¥ƲėNėR½5ðḃḍCṬ’b19‘“Y^‘jĖŒṙḂ
“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ8_“¤ÐŒ#'/‘¦32BFż¢Ḅị“¹0°1”s21ṖṖG

TryItOnline

Jelly no tiene salida de color, pero de todos modos esto es mucho más fácil de ver (soy daltónico) ...

° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹ ° ° ° ¹ ¹ ° ¹
¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹ ° ° ¹ ° ¹ ° ¹
¹ ¹ ¹ ° ° ¹ ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ °
¹ ° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹ ° ° ° ¹ ° °
¹ ¹ ¹ ¹ ° 1 1 1 ° ¹ ¹ ° ° 1 1 0 ° ¹ ° ¹ °
¹ ¹ ¹ 1 0 0 1 0 1 1 ° 1 1 1 1 0 1 1 ¹ ° ¹
° ¹ ° 1 1 0 1 0 0 1 ° 1 1 0 1 1 0 0 ° ¹ ¹
° ¹ ¹ 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 ° ¹
° ¹ 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 ¹ °
¹ ° 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 ° ¹
° ° ¹ 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 ¹ °
¹ ° ¹ 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 ¹ ¹ ¹
° ¹ ° ¹ 0 1 1 0 1 0 0 1 0 1 1 0 ¹ ¹ ° ° °
¹ ¹ ° ¹ ¹ 1 1 0 1 1 1 0 1 1 0 0 ¹ ¹ ° ° ¹
° ¹ ° ¹ ¹ ¹ 1 0 0 1 0 1 1 0 1 ¹ ¹ ¹ ° ¹ ¹
¹ ° ¹ ° ¹ ° ¹ 1 0 1 0 0 1 0 ¹ ¹ ° ¹ ¹ ° °
° ¹ ° ° ¹ ¹ ¹ ¹ 0 1 1 1 0 ¹ ¹ ° ° ¹ ¹ ° °
¹ ° ¹ ° ¹ ¹ ¹ ¹ ° 0 1 0 ¹ ¹ ° ¹ ¹ ¹ ¹ ° ¹
¹ ¹ ° ¹ ° ¹ ° ¹ ¹ ° 1 ° ° ¹ ° ¹ ¹ ° ¹ ¹ °
° ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹ °
° ¹ ° ¹ ° ¹ ¹ ¹ ¹ ° ° ¹ ° ¹ ° ° ¹ ¹ ¹ ¹ °
¹ ¹ ¹ ° ¹ ° ¹ ° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹
° ° ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹

¿Cómo?

“¤Ɓ¥J¬ ¥ƲėNėR½5ðḃḍCṬ’b19‘“Y^‘jĖŒṙḂ - Link 1: no arguments
“¤Ɓ¥J¬ ¥ƲėNėR½5ðḃḍCṬ’              - base 250 of a big number
                     b19           - convert to base 19, yields a list of integers
                        ‘          - increment those numbers
                         “Y^‘      - get code page indexes [89,94]
                             j     - join: [89,3,5,3,8, ... ,3,19,1,94]
                                         - {left-right, top-bottom} runs of colours
                              Ė    - enumerate [[1,89],[2,3],[3,5],[4,3],[5,8], ...]
                               Œṙ  - run-length decode [89 1s, 3 2s, 5 3s, 3 4s, 8 5s, ...]
                                 Ḃ - mod 2

“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ8_“¤ÐŒ#'/‘¦32BFż¢Ḅị“¹0°1”s21ṖṖG - Main link: no arguments
“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ8_“¤ÐŒ#'/‘¦32BF                 - same as the original to get 1s and 0s
                          ż                - zip with
                           ¢               - last link (1) as a nilad
                            Ḅ              - binary to integer (vectorises)
                             ị             - index into
                              “¹0°1”       - string "¹0°1"
                                    s21    - split into length 21 slices
                                       ṖṖ  - pop last two unused slices
                                         G - format as a grid
Jonathan Allan
fuente
27
Si elimina el ¬, los últimos cuatro bytes pueden convertirse ṖṖCG. :)
Dennis
2
Oh wow, por supuesto, ¡eso solo tiene que hacerse!
Jonathan Allan
1
Perdona mi pedantería; quizás el término apropiado es complement?
Sherlock9
@ Sherlock9, sí; arreglado y gracias - No puedo deletrear todo muy bien, ¡así que a menudo me equivoco si la corrección ortográfica no muestra ninguna bandera!
Jonathan Allan
@WeeingIfFirst: no lo comprobé, pero espero que esto sea lo suficientemente bueno como para ser considerado de color.
Jonathan Allan
42

En realidad, 58 bytes

73*8╙:13542├`≈"÷≥"E`M"«%s₧ªn%s6û"7*%"♠n≥6û"+¿├`' +`M╪♂Σ♂Ri

Pruébalo en línea!

Explicación

Aquí hay tres partes principales, por lo que lo desglosaré en consecuencia.

Parte 1: Construyendo la cadena base-256

Realmente vamos a construir la cadena binaria invertida, para aprovechar la estructura basada en la pila de Actually (LIFO) y evitar complicaciones con ceros iniciales en la cadena binaria. Por lo tanto, la cadena binaria de destino es 110011011101111001000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111011010011110101001100110111011110010001101101001011010101110111101101001111010100110011011101111011000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111001010011110101001100110111011110110001101101001011010101110111101101001111010100110011011101111001000110110100101101010111011110010100111101010011001101110111101100011011010010110, que es equivalente a 20083405242288679348048842451418880256193335738939042905519679590571514414673488599852759703515507690399267425671627412178904636115120346432419478en decimal. En base-256 (usando la tabla de caracteres CP437 para la conversión), la cadena correspondiente es ♠n≥6û«≥₧ªn≥6û«÷₧ªn≥6û«÷₧ªn÷6û«≥₧ªn≥6û«≥₧ªn÷6û«÷₧ªn≥6û«≥₧ªn÷6û. Para construir la cadena binaria original, construimos la cadena base-256 (aprovechando el patrón en ella) y realizamos conversiones de base a decimal y binario.

La cadena base-256 tiene el siguiente formato (espacios y líneas nuevas añadidos para mayor claridad):

♠n≥6û
« (either ≥ or ÷) ₧ªn (either ≥ or ÷) 6û
  (7 times)

Por lo tanto, cada una de las 7 secciones intermedias se puede formar usando el andamio «%s₧ªn%s6ûy reemplazando las %spartes con o ÷.

La secuencia específica de s y ÷s es que necesitamos ≥≥÷≥÷÷≥≥≥÷÷≥≥÷. Como necesitamos esto como una lista de cadenas de longitud 1, la forma ingenua de representar esto sería "≥≥÷≥÷÷≥≥≥÷÷≥≥÷"#(empujar la cadena, convertirla en una lista). Sin embargo, podemos hacerlo un poco mejor. Al interpretar esa cadena como un número binario (donde representa 1y ÷representa 0), obtenemos 13542en decimal. Al convertir esto de nuevo a binario (usando los 1s y 0s tradicionales ) e indexarlo en una cadena de longitud 2, podemos obtener la lista usando un byte menos que el método ingenuo.

:13542├`≈"÷≥"E`M"«%s₧ªn%s6û"7*%"♠n≥6û"+
:13542├                                  push 13542, convert to binary
       `≈"÷≥"E`M                         for each bit:
        ≈                                  convert to integer (from string)
         "÷≥"E                             index into "÷≥"
                "«%s₧ªn%s6û"7*           push the scaffold for the middle section
                              %          old-style Python string formatting to fill in the scaffold
                               "♠n≥6û"+  prepend the beginning piece

Parte 2: Convertir a binario

Esta parte es mucho más sencilla. Si realmente tuviera la capacidad de convertir directamente base-256 a binario, lo usaríamos. Desafortunadamente, no es así, así que tendremos que usar decimal como formato intermedio.

El ,siguiente código representa el código de la Parte 1: para fines explicativos, he reemplazado el código de la Parte 1 ,para leer la salida de la Parte 1 de STDIN. No es parte del código final real.

8╙,¿├
  ,    Part 1 result
8╙ ¿   convert from base-256 to decimal
    ├  convert to binary

Parte 3: Formateo

Si el desafío fuera simplemente generar la cadena binaria tal como está, estaríamos listos. Sin embargo, todavía tenemos que formatear para obtener la cadena binaria en un rectángulo de 21 x 23.

Como en la Parte 2, ,representa la salida de la parte anterior y no es parte del código real.

73*,`' +`M╪♂Σ♂Ri
   ,              output from Part 2
    `' o`M        insert a space after every character
73*       ╪       chunk into 21 pieces
           ♂Σ     concatenate each piece
             ♂R   reverse each piece
               i  flatten
                  (implicitly print)

Para aquellos que realizan un seguimiento en casa, este es el código equivalente de Python 3 (481 bytes):

print('\n'.join([''.join(' '+c for c in bin(sum('\x00☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■\xa0'.index(c)*256**i for i,c in enumerate(("♠n≥6û"+("«%s₧ªn%s6û"*7)%tuple("÷≥"[int(b)]for b in bin(13542)[2:]))[::-1])))[2:])[i*42:-~i*42][::-1]for i in range(23)][::-1]))
Mego
fuente
46
Ya sabes, es una programación como esta que me hace creer a los egipcios, donde los programadores y jeroglíficos realmente avanzados y exitosos eran simplemente su idioma de elección. +1
MonkeyZeus
¿Qué idioma era este? Además, ¿se compila esta respuesta?
Jack
@ Jack Esto es en realidad . No hay compilación involucrada.
Mego
1
@Mego: 0 Eres un JEFE entonces por escribir este código
Jack
1
¿Qué sucede si necesita el dígito 34 en un número base 256? (el personaje que encierra la cadena)
Jonathan Allan
22

JavaScript (ES6), 169 ... 136135 bytes

let f =

_=>"0213021203131214".replace(x=/./g,v=>0+[a=1768714102,a-8192,a-=66265089,a+8192,3][v].toString(2)).replace(x,(c,i)=>` 
`[+!(i%21)]+c)

console.log(f());

Guardado 2 bytes gracias a Andrakis
Guardado 4 bytes gracias a Hedi
Guardado 3 5 bytes gracias a Neil

Versión coloreada, 249 bytes (237 bytes de JS + 12 bytes de CSS)

El código JS genera el arte ASCII con etiquetas en negrita para el corazón. Se requieren 12 bytes de CSS para colorear en rojo. (¿Es justo el recuento de bytes?)

let f =

_=>"0213021203131214".replace(x=/./g,v=>0+[a=1768714102,a-8192,a-=66265089,a+8192,3][v].toString(2)).replace(x,(c,i)=>` 
`[+!(y=i/21|0,x=i%21)]+([57568,a=261112,a,b=524280,b+4,b+4,b,a+1024,65520][y-4]&1<<x|y>12&x>y-9&x<29-y?c.bold():c))

document.getElementById("o").innerHTML = f();
b{color:red}
<pre id="o"></pre>

Arnauld
fuente
2
Puede guardar algunos bytes mediante la sustitución de su Reemplazar: s=>s.replace(/./g,'$& '). He estado trabajando en una solución prácticamente idéntica.
Andrakis
1
¿No podría s.replace(/./g,'$& ')ser reemplazado por s.split``.join` `?
Hedi
2
[...s].join` `
Neil
1
Creo que replace(/./g,(c,i)=>c+=++i%21?' ':'\n')(obviamente usando una nueva línea literal allí) guarda un byte adicional. Bien puede haber una mejor manera de expresar esa idea.
Neil
20

05AB1E , 77 54 53 44 43 41 bytes

Utiliza la codificación CP-1252 .

’i„΀î’8ו1žä¿*•S·£™J¦'iìÇb0ìJ011JSðý42ô»

Explicación

’i„Î€î’   # the string "iloveyou"
8×        # repeated 8 times
•1žä¿*•   # the number 3262264221 encoded in base 214
S·        # split to list and multiplied by 2, gives [6, 4, 12, 4, 4, 12, 8, 4, 4, 2]
£         # split the "iloveyou..." string into chunks of these lengths
™J        # title-case the chunks and join, giving the string with capitalized O's
¦'iì      # replace the faulty capitalized "I" in the beginning with a lower case "i"
Ç         # convert to list of ascii values
b0ì       # convert each to binary and prepend a 0 to each binary string
J011J     # join the strings and append "011"
Sðý       # add a space between each digit
42ô       # split in pieces of 42 (21 digits, 21 spaces)
»         # merge on newline

Pruébalo en línea!

Emigna
fuente
3
Parece que tienes una foto de perfil relevante
tomsmeding
3
@tomsmeding: ¡De hecho! Me dibujó un chico con sombrero cuando nos conocimos hace un par de años, así que eso es lo que soy ahora :)
Emigna
Yo sé que ha sido de 2,5 años, pero se puede jugar golf la Sðý42ô»que S21ô», ya »se une a las listas internas por espacios implícitamente (y el •1žä¿*•ahora debería ser •Å¾$6•, ya que los enteros se codifican en la base-255 ahora en lugar de la base-214).
Kevin Cruijssen
15

CJam , 48 bytes

19560Yb"Oo"f="uilvey"8*3/.\s:i2fb0a*7>21/W<Sf*N*

Colaboración con @MartinEnder, quien eliminó 3 bytes difíciles con la "uilvey"3/cadena. Intérprete en línea .

19560Yb        Convert 19560 to base 2
"Oo"f=         Index each bit into the string "Oo" to give "ooooOOooOOOooOoOOO"
"uilvey"8*3/   Repeat the string "uilvey" 8 times then split into chunks of 3
.\s            Vectorised swap (insert the Os into the right places) then stringify
:i2fb          Convert each char to int then take base 2
0a*            Join with 0s
7>             Remove the first 7 bits
21/            Split into chunks of length 21
W<             Drop the last row
Sf*            Join each row with spaces
N*             Join the rows with newlines
Sp3000
fuente
12

Javascript ES6 REPL , 124 121 119 113 bytes

Guardado 6 bytes gracias a @ETHproductions

Este es un programa completo que se puede pegar en la REPL / consola para producir el resultado correcto.

for(i=r='';i<483;)r+=(`il${"Oo"[21>>i/64&1]}vey${"oO"[77>>i/64&1]}u`.charCodeAt(i/8%8)>>7-i%8&1)+(++i%21?` `:`
`)

Más detallado

for (i=0, r='';                         // r == the result
     i < 483;)                          // 483 == 21 * 23
r+= (                                   // construct "iloveyou"
        `il${                           // il
            "Oo"[21 >> (a = i/64) & 1]  // position in the loop defines the o or O
         }vey${                         // vey
            "oO"[77 >> a & 1]           // position in the loop defines the o or O
         }u`                            // u
        .charCodeAt(                    // "i" == 105 == 01101001
            i / 8 % 8                   // find the correct bit to append
        ) >> 7-i%8 & 1                  // shift it to select 1 or 0
    )
+                                       // add a space or newline
    (
        ++i%21 == 0 ? `
` : ` `                                 // every 21 characters add a new line, 
                                           otherwise a space
    )
;                                       // Javascript implicitly returns the last value 
                                           edited in a for loop

JavaScript coloreado solo corazón, 281 bytes

for(i=z=r='',h=[],g=[90,...[...'353871767176G4H4H5G5F7CABB9D7F5H3J1'].map(n=>parseInt(n,20)),-1];i<483;)r+=`%c`+(`il${"Oo"[21>>i/64&1]}vey${"oO"[77>>i/64&1]}u`.charCodeAt(i/8%8,--g[+z]||z++,h[i]=z%2)>>7-i%8&1)+(++i%21?` `:`
`);console.log(r,...h.map(H=>`color:${H?'red':'black'}`))

Esto funciona cambiando los colores cada n bits y hace uso de la capacidad console.log para registrar colores

Corazón CSS coloreado, 229 + 12 bytes

Si se permite el uso de CSS, el corazón coloreado se puede reducir aún más a 229 bytes de código JavaScript y 12 bytes de CSS

for(i=z=r='',g=[90,...[...'353871767176G4H4H5G5F7CABB9D7F5H3J1'].map(n=>parseInt(n,20)),-1];C=`il${"Oo"[21>>i/64&1]}vey${"oO"[77>>i/64&1]}u`.charCodeAt(i/8%8,--g[+z]||z++)>>7-i%8&1,i++<483;)r+=(z%2?(''+C).bold():C)+(i%21?` `:`
`)

Bassdrop Cumberwubwubwub
fuente
La razón por la que lo hice de esta manera es porque esto puede considerarse un programa completo. No hay variables codificadas que el usuario deba cambiar, en cambio, esto se puede copiar y pegar y funciona como está. Lo llamo un fragmento pero bien podría ser un programa completo. Pensamientos?
Bassdrop Cumberwubwubwub
Se basa en el comportamiento REPL, lo que significa que el lenguaje es "Javascript ES6 REPL" ( fuente ).
Mego
@Mego Gracias, edité mi respuesta en consecuencia
Bassdrop Cumberwubwubwub
1
Estoy bastante seguro de que puede deshacerse de él ay simplemente usarlo num>>i/64&1en ambos lugares, ahorrando 1 byte. Además, ++i%21==0?newline:spacees lo mismo que ++i%21?space:newline.
ETHproductions
Otro consejo: cambiar i=0,r=''a i=r=''; ''se coacciona automáticamente a 0.
ETHproductions
9

MATL, 56 55 bytes

'!?u<TgGU*lB7SE1q3s.?Su(q6)iM'F'eilovyOu'Za8&B!FTTv21e!

Pruébalo en línea

Explicación

'!?u<TgGU*lB7SE1q3s.?Su(q6)iM'      % Previously compressed version of the string
F'eilovyOu'Za                       % Decompress this string
8&B                                 % Convert each char to 8-bit binary number
!                                   % Transpose the result
FTTv                                % Append [0 1 1] to the end to take care of 
                                    % the partial "e" bits
21e!                                % Reshape it into the appropriate shape
                                    % Implicitly display the result     
Suever
fuente
9

PowerShell v2 +, (UTF-16) 300 bytes

Recuento de bytes erróneo corregido gracias a @Mego

'ږƍ໬ƕ๓ƺ֥˄ϝӊ༭ǝ֥ţϝɥޔǮ૒ƱϝIJ˲ӷʴ˘ͻ֙ץŻ઴Ŭɻˌʼֽ͖ҶɻŦʼʞݖɛĽƳ'-split'(..)'-ne''|%{(-join($_[0,1]|%{[convert]::ToString(+$_,2)})).PadLeft(21,'0')-replace'(.)','$1 '}

No es el más corto, sino un enfoque diferente. Tomé manualmente cada línea y las corté en pares cada una (aproximadamente) 9-11 bits significativos de longitud. Convirtió cada uno de esos valores binarios en un char(Nota: PowerShell usa UTF-16 de forma predeterminada, no UTF-8), y lo convirtió en una cadena. Eso es '...'al principio.

Luego lo hacemos -spliten cadenas de longitud 2, y recorremos cada par. Esos pares se dividen en una charvía de matriz $_[0,1], y cada uno de ellos se convierte como int +$_y se [convert]edita en un binario ( ,2) String. Eso se -joinjunta en una sola cadena, luego PadLeft'd' para obtener la longitud adecuada, luego cada elemento es -replaced consigo mismo y un espacio '$1 '.

Esas cadenas se dejan en la tubería, y la salida es implícita, con el valor predeterminado Write-Outputpegando una nueva línea entre los elementos.

PS C:\Tools\Scripts\golfing> 'ږƍ໬ƕ๓ƺ֥˄ϝӊ༭ǝ֥ţϝɥޔǮ૒ƱϝIJ˲ӷʴ˘ͻ֙ץŻ઴Ŭɻˌʼֽ͖ҶɻŦʼʞݖɛĽƳ'-split'(..)'-ne''|%{(-join($_[0,1]|%{[convert]::ToString(+$_,2)})).PadLeft(21,'0')-replace'(.)','$1 '}
0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 
1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 
1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 
1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 
1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 
1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 
0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 
0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 
0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 
1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 
0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 
1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 
0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 
1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 
0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 
1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 
0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 
1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 
1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 
0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 
0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 
1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 
0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 
AdmBorkBork
fuente
Cuento 300 bytes UTF-16. Python 3:len("'ږƍ໬ƕ๓ƺ֥˄ϝӊ༭ǝ֥ţϝɥޔǮ૒ƱϝIJ˲ӷʴ˘ͻ֙ץŻ઴Ŭɻˌʼֽ͖ҶɻŦʼʞݖɛĽƳ'-split'(..)'-ne''|%{(-join($_[0,1]|%{[convert]::ToString(+$_,2)})).PadLeft(21,'0')-replace'(.)','$1 '}".encode('utf-16be'))
Mego
@Mego Oh, durr. El hecho de que cuente UTF-16 para la cadena no significa que pueda contar mágicamente UTF-8 para el resto del código. Ja Gracias por la ayuda
AdmBorkBork
Me alegro de ayudar :)
Mego
Si no se viera tan intimidante, en realidad abriría un terminal PowerShell y lo ejecutaría.
DaveTheMinion
6

/// , 237 bytes

/2/\/\///3/0 24/1 25/0
26/1
27/4428/3329/772A/432B/A732C/937A782D/B48B72E/8A4892F/98B93/373A3A737837367A7A7878AA674E37A45D83A5C78A45F7A63D83463C78A639E3745AD8368C7845A9E3763AD8573C7863AF46AAD35348C735AAF673AD5848C753AA9E57AAB48B468348C41

Pruébalo en línea!

Erik el Outgolfer
fuente
4

Python 3, 147 144 bytes

lambda i=0:exec("print(' '.join(''.join('0'+bin(ord(chr(j+30)in' ,0@DL'and'o'or c))[2:]for j,c in enumerate('ilOveyOu'*8))[i:i+21]));i+=21;"*23)

Pruébalo en ideone

Inicializa ia 0la declaración de la función, a continuación, repite este 23 veces:
hace que toda la cadena binaria sin espacios (véase más adelante);
corta una fila desde dentro usando [i:i+21];
inserta los espacios con ' '.join(...);
huellas dactilares; e
incrementa ien 21 coni+=21

Para hacer toda la cadena binaria:
se repite "ilOveyOu"ocho veces;
reemplaza Ocon odonde sea necesario (en los índices [2,14,18,34,38,46]);
- - - esto se logra con chr(j+30)in' ,0@DL'guardar 3 bytes
convierte cada carácter a su ordinal;
convierte cada ordinal en una cadena binaria ( '0bxxxxxxx');
elimina el inicio '0b'de cada uso [2:];
antecede cada uno con un '0'; y
une todo con''.join(...)

Jonathan Allan
fuente
No necesitas una lambda. Hacer i=0\nexec(...)o i=0;exec(...)para 137 bytes.
mbomb007
A menos que realmente necesite Python 3, puede usar Python 2 para cambiar exec("...")a exec"..."y print(...)paraprint...
mbomb007
3

PHP + HTML + CSS, 173 bytes coloreados 367 bytes

CLI solo PHP 173 Bytes

$o=2841;for($i=0;$i<16;)$t.=il.Oo[$o>>$i++&1].vey.Oo[$o>>$i++&1].u;foreach(str_split($t)as$c)$x.="0".decbin(ord($c));for($i=0;$i<504;$i++){$i%21?:print"\n";echo$x[$i]." ";}}

cumplir con el tipo de contenido de especificación de recompensa text / html

<?=gzinflate(base64_decode("jVNbDoIwELwKJ9Ctn9hwF9HGmFQwiB+GeHcRd7ezvDQEAmWmMzuT+nv7jKG4dddDc75UOW124foqu0OM+aO6h3Z/rGPd5E04vfz2C/a3gjLXXzTcxG/pSem7xzr4hxhn2BZLZvfpDjRg/3FBjBWuL78fflsWAOVl0uWk8rmG3yDCMNnMLMsshHpq0jLVQLKj6RrIbHBCYoq6WclPHHJ+PNdqjEZlpLNgbaTy2xoTHAQ3kBasKZyg3/XUDAVV5urVcDE5mQXsGWugIJqikibVmcZTJIrL0Bq3NKdgjxhak2q5ukmpWuXS+QJPEBVi52vE025VJy7Yw18u3g==");

b{all:unset;color:red}en lugar de b{all:unset;color:#911;background:red}en la primera versión

PHP + HTML + CSS, 392 bytes

corazón rojo + negro que se ve más bonito

Tal vez llame al número de color en la parte CSS

<?=gzinflate(base64_decode("jVTLDoIwELyb+A8m3nXrzdrwL7xijAgG8GAI/67WdpktD00DoWWmMztLMU37LPLo3t3i+nwpNe0O+a1Purgo9KNs8vaUVkVV6+1RqVMSp9dzXT3KTNd51pv9l7xemXtEG/UeZC9yT8OdhrlFK3iLKCX4IZqEwngPcuh/vBCjPd8k34nZJxGA3TLxMip9hgWAkAP67cTyUBOhJluVXDYxWIKsBWgyRE9jEntayNL75CxdfYuRBkqB1ozBkdJvg46iRIiWNmOQCSQ6vpygIEmlqYZz1LAN1AQmhUFQUfBBhjVzbWE1SFIbNOi6NqUSHkI06JvtmjlqMzR37gSCMxEboicbG/wVpPbICzv5y8sL"));

agregue esto antes de que se vea mejor

<style>*{word-spacing:1em;}</style>

La primera versión de salida es el código HTML más feo de mi vida

corazón rojo-negro

<style>*{word-spacing:1em;}</style><style>p{margin:0.2em}b{all:unset;color:#911;background:red}</style>
<p>0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1
<p>1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1
<p>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0
<p>1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0
<p>1 1 1 1 0 <b>1 1 1</b> 0 1 1 0 0 <b>1 1 0</b> 0 1 0 1 0
<p>1 1 1 <b>1 0 0 1 0 1 1</b> 0 <b>1 1 1 1 0 1 1</b> 1 0 1
<p>0 1 0 <b>1 1 0 1 0 0 1</b> 0 <b>1 1 0 1 1 0 0</b> 0 1 1
<p>0 1 1 <b>1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1</b> 0 1
<p>0 1 <b>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1</b> 1 0
<p>1 0 <b>1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0</b> 0 1
<p>0 0 1 <b>1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0</b> 1 0
<p>1 0 1 <b>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0</b> 1 1 1
<p>0 1 0 1 <b>0 1 1 0 1 0 0 1 0 1 1 0</b> 1 1 0 0 0
<p>1 1 0 1 1 <b>1 1 0 1 1 1 0 1 1 0 0</b> 1 1 0 0 1
<p>0 1 0 1 1 1 <b>1 0 0 1 0 1 1 0 1</b> 1 1 1 0 1 1
<p>1 0 1 0 1 0 1 <b>1 0 1 0 0 1 0</b> 1 1 0 1 1 0 0
<p>0 1 0 0 1 1 1 1 <b>0 1 1 1 0</b> 1 1 0 0 1 1 0 0
<p>1 0 1 0 1 1 1 1 0 <b>0 1 0</b> 1 1 0 1 1 1 1 0 1
<p>1 1 0 1 0 1 0 1 1 0 <b>1</b> 0 0 1 0 1 1 0 1 1 0
<p>0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0
<p>0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0
<p>1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1
<p>0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1

    <style>p{margin:0.2em}b{all:unset;color:red}</style>
    <p>0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1
    <p>1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1
    <p>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0
    <p>1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0
    <p>1 1 1 1 0 <b>1 1 1</b> 0 1 1 0 0 <b>1 1 0</b> 0 1 0 1 0
    <p>1 1 1 <b>1 0 0 1 0 1 1</b> 0 <b>1 1 1 1 0 1 1</b> 1 0 1
    <p>0 1 0 <b>1 1 0 1 0 0 1</b> 0 <b>1 1 0 1 1 0 0</b> 0 1 1
    <p>0 1 1 <b>1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1</b> 0 1
    <p>0 1 <b>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1</b> 1 0
    <p>1 0 <b>1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0</b> 0 1
    <p>0 0 1 <b>1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0</b> 1 0
    <p>1 0 1 <b>1 1 1 0 0 1 0 1 0 0 1 1 1 1 0</b> 1 1 1
    <p>0 1 0 1 <b>0 1 1 0 1 0 0 1 0 1 1 0</b> 1 1 0 0 0
    <p>1 1 0 1 1 <b>1 1 0 1 1 1 0 1 1 0 0</b> 1 1 0 0 1
    <p>0 1 0 1 1 1 <b>1 0 0 1 0 1 1 0 1</b> 1 1 1 0 1 1
    <p>1 0 1 0 1 0 1 <b>1 0 1 0 0 1 0</b> 1 1 0 1 1 0 0
    <p>0 1 0 0 1 1 1 1 <b>0 1 1 1 0</b> 1 1 0 0 1 1 0 0
    <p>1 0 1 0 1 1 1 1 0 <b>0 1 0</b> 1 1 0 1 1 1 1 0 1
    <p>1 1 0 1 0 1 0 1 1 0 <b>1</b> 0 0 1 0 1 1 0 1 1 0
    <p>0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0
    <p>0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0
    <p>1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1
    <p>0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1

375 bytes para crear la página HTML con PHP directamente

<?$o=2841;for(;$i<16;)$t.=il.Oo[$o>>$i++&1].vey.Oo[$o>>$i++&1].u;foreach(str_split($t)as$c)$x.="0".decbin(ord($c));$a=[1,9,20,28,41,49,62,82,103,125,146,168,190,212,234,256,278,300];$z=[3,11,26,34,47,55,77,98,119,140,160,179,200,220,240,260,280,300];for($i=0;$i<483;$i++)echo $i%21?"":"<p>",in_array($i-88,$a)?"<b style=color:red>":"",$x[$i],in_array($i-88,$z)?"</b>":""," ";
Jörg Hülsermann
fuente
2
Sólo la sustitución color:#911;background:redcon color:red;marcas que cumpla con la especificación de recompensas, así como el ahorro de unos pocos bytes.
Emigna
3

Powershell, 110 bytes

'uil','vey'*8|%{$s+=$_+'oOOooOOOooOoOOO'[$i++]}
-join(8..490|%{(+$s[$_-shr3]-shr(7-$_%8))%2
' 
'[!(++$j%21)]})

Explicación:

La primera línea del guión toma las subcadenas e inserta una letra Oentre ellas. El resultado es la cadena uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOvey. Tenga en cuenta que el primer y el último carácter son redundantes.

El bucle genera todos los (8..490)bits necesarios de los caracteres de la cadena, así como un espacio o un avance de línea.

El enigma del destinatario de la carta de San Valentín

Se puede ver que los símbolos pequeños y grandes Oforman la codificación de bits. Hay 15 símbolos (bits). Solo hay una partición en los bits para obtener caracteres ASCII: oOOooOOO+ ooOoOOO[o]. Tuvimos que agregar un pequeño en olugar de 0al final. Estos símbolos ASCII son:g.

¿Quién es este misterioso g.?

mazzy
fuente
2

PHP, 121 bytes

for($n=5682;$i++<60;)for($b=8;$b;)$p.=(1&ord(~$i&3||($n/=2)&1?uiloveyo[$i%8]:O)>>--$b)." ";echo wordwrap($p."0 1 1",42);

Descompostura

$n=2*bindec("000101100011001"); // where to NOT replace o with O
for($i=1;$i<61;$i++)            // loop $i from 1 to 60
{
    $c=
        ~$i&3                       // $i%4!=3
        ||
        ($n/=2)&1                   // or (1. shift $n, 2. test bit 0)
        ? "uiloveyo"[$i%8]          // yes: character from string
        : "O"                       // no: uppercase "O"
    ;
    for($b=8;$b--;)                 // run from bit 7 to bit 0
        $p.=(1 & ord($c)>>$b). " ";     // append 1 or 0 plus space
}
$p.="0 1 1";                    // append the missing three bits
echo wordwrap($p,42);           // wrap at column 42 (actually 41; 42 is space -> gets cut)
Titus
fuente
2

q / kdb +, 107 93 85 55 53 bytes

Solución:

23 21#0 1(,/)0b vs'@[61#"ilOveyOu";0x020e1222262e;_:]

Ejemplo:

q)23 21#0 1(,/)0b vs'@[61#"ilOveyOu";0x020e1222262e;_:]
0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1
1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1
1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0
1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0
1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0
1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1
0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1
0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1
0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0
1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1
0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0
1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1
0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0
1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1
0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1
1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0
0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0
1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1
1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0
0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0
0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0
1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1
0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1

Explicación:

23 21#0 1(,/)0b vs'@[61#"ilOveyOu";0x020e1222262e;_:] / the solution
                   @[             ;              ;  ] / apply[input;indices;function]
                                                  _:  / lowercase
                                   0x020e1222262e     / 2 14 18 34 38 46 represented in hex
                    61#"ilOveyOu"                     / 61 take "ilOveyOu" (wraps around)
             0b vs'                                   / convert into 8-bit representation
         (,/)                                         / flatten
      0 1                                             / index into 0 / 1 (convert from booleans)
23 21#                                                / reshape

Notas:

  • -2 bytes gracias a ngn!
callejero
fuente
1

Python 3, 199 Bytes:

z='01111011101'
a='011010010110110001'
b=z+'10011001010111100101'
[print(' '.join(''.join([a+i[0]+b+i[1]+z+'01'for i in'10 01 10 00 11 01 00'.split()])+a+'0'+b[:16])[i:i+41])for i in range(0,966,42)]
Tim
fuente
1

Python 3, 170 bytes

from textwrap import*
print('\n'.join(' '.join(list(i))for i in wrap(''.join(bin(ord(i)+256)[3:]for i in (7*"il%svey%su")%(tuple("oOOooOOOooOoOO"))+"ilOv"),21))+" 0 1 1")

hace una repetición de cadena de "Il% svey% su", lo repite el número requerido de veces, luego usa una tupla para sumar todas las o's. Luego lo convierte en binario, usa el módulo textwrap, convierte cada elemento del nuevo lista para lista, se une con el espacio, luego agrega 0 1 1 porque eso parece ser un trozo o algo

Limón Destructible
fuente
1

Mathematica, 123 bytes (275 con color)

No estoy seguro de si usar en Gridlugar de generar una cadena está bien (si no, esta es una entrada no competitiva).

B / W

Grid@Partition[ReplacePart[PadLeft[{},483,IntegerDigits[36^^nz4sp78k5qyb,2,64]],
Thread[51+32{0,1,4,5,6,9,11,12,13}->0]],21]

ingrese la descripción de la imagen aquí

Color

Grid[Partition[ReplacePart[PadLeft[{},483,IntegerDigits[36^^nz4sp78k5qyb,2,64]],
Thread[51+32{0,1,4,5,6,9,11,12,13}->0]],21],ItemStyle->{{},{},Thread[Join@@MapIndexed[
Thread@{Range@@#,2+First@#2}&,Thread[Partition[IntegerDigits[36^^k32b741shmsoiwed4vnakt],
17]+{0,10}]]->Red]}]

ingrese la descripción de la imagen aquí

Campeonato 2012
fuente
¿Es posible copiar / pegar el resultado griden texto plano y pegarlo en el bloc de notas? Cómo se ve? ¿Espacio separado (espacio simple) con líneas nuevas, como muestra la figura?
Stewie Griffin
1

Ruby 142 Bytes

(('iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv'.unpack('B*')[0]+'011').split(/(.{21})/)-['']).map{|i|puts(i.chars.join(' '))}

(Ligeramente más) legiblemente:

(('iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv'.unpack('B*')[0]+'011') 
  # unpack turns it into a binary string, [0] takes the first element, and then we add on the trailing 011
.split(/(.{21})/) -['']) 
  # split it every group of 21 characters and remove the empty strings that are also included
.map { |i| puts(i.chars.join(' ')) } 
  # take each string of 21 characters, get its chars and join them with an empty string for formatting (puts takes care of the newlines)

Todavía no he encontrado una manera de condensar el texto original en una forma más sucinta en Ruby: tiene algunas excelentes funciones de manipulación de cadenas, pero todas las formas en que he intentado usar más caracteres que la cadena en sí. Cualquier sugerencia apreciada, ¡este es mi primer Code Golf en StackOverflow!

Smittles2003
fuente
¡Bienvenido a Programming Puzzles y Code Golf Stack Exchange! ¿Has intentado configurar la cadena en una variable (por ejemplo a) y luego hacer a+a+a...? Aún mejor, si Ruby admite la multiplicación de cadenas a*count,!
wizzwizz4
@ wizzwizz4, la cadena no es pura repetición de cuerda. :) (Probablemente hay mejores formas de hacerlo, pero no creo que a+a+asea ​​así)
Stewie Griffin
¡Lo sé! ¡Haga una versión corta en minúsculas, repítala y luego reemplace la enésima ocon mayúscula O!
wizzwizz4
1

Óxido, 195 bytes

||for(c,i)in"iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOve".bytes().fold(String::new(),|a,c|format!("{}0{:b}",a,c)).chars().zip(1..484){print!("{}{}",c,if i%21!=0{' '}else{'\n'})}

Sin golf:

fn main(){
    // convert bytes of the string to binary numerals.
    let s = "iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOve"
        .bytes()
        .fold(String::new(),|a,c|format!("{}0{:b}",a,c));

    // print them over the range with newlines/spaces as appropriate
    for(c,i) in s.chars().zip(1..484) {
        print!("{}{}",c,if i%21!=0{' '}else{'\n'})
    }
}
Harald Korneliussen
fuente
1

C (gcc) , 102 bytes

f(i){for(i=0;i<483;)printf("\n%2d"+!!(i++%21),(i/8%4^2|35609>>i/32&1?"iloveyou"[i/8%8]:79)>>7-i%8&1);}

Atropellar

f(i){
for(i=0;i<483;)         Loop through bits.
printf("\n%2d"
+!!(i++%21),            Decide if newline in format string should be skipped.
(i/8%4^2|               Are we at a non-'o' letter?
                        (They occur every 4th letter, starting at index 2.)
35609>>i/32&1?          Check with magic number if the 'o' should be capital.
"iloveyou"[i/8%8]:      If not-'o' or not capital, use current letter.
79)                     Otherwise, use the letter 'O'.
>>7-i%8&1               Extract bit to write.
);}

Pruébalo en línea!

gastropner
fuente
1

Pyth, 47 bytes

jPcjdsm+0.BCdtPs.i*8c"uil vey"dmr\o!djC\䱨2 42

Pruébelo en línea aquí .

jPcjdsm+0.BCdtPs.i*8c"uil vey"dmr\o!djC\䱨2 42   Implicit: d=" "
                    c"uil vey"d                  Chop "uil vey" on spaces, to yield ["uil" "vey"]
                  *8                             Repeat the above 8 times - {1}
                                      C\䱨       Character code of 䱨, yields 19560
                                     j    2      Convert the above to base 2
                               m                 Map the digits of the above, as d, using:
                                r\o!d            If d is 0, yield "O", otherwise "o" - {2}
                .i                               Interleave {1} with {2}
               s                                 Concatenate into a string
                                                   This yields "uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOvey"
             tP                                  Remove first and last characters of the above
      m                                          Map each character, as d, using:
           Cd                                      Get character code
         .B                                        Convert to binary string
       +0                                          Prepend 0 (all binary strings will be length 7, so this pads to length 8)
     s                                           Flatten the result of the map
   jd                                            Join on spaces
  c                                        42    Chop into strings of length 42
 P                                               Discard the last, partial, string
j                                                Join on newlines, implicit print
Sok
fuente
0

/// , 220 bytes

/H/2E//G/CBDCC//F/ABC2C//E/AC//D/2B//C/A2//A/33//B/32//2/0 //3/1 /2G22C3
ABFDB3
ABDBHABB
BG2D2
EFDB
EDCEAB3
DG22A
HFD3
HDBHAB
BBG223
2HFD
BEDBHA3
DBG22
CEF23
DEDCEA
BBBG2
DHF2
BBEDCE3
CBBG
2DHF
DBEDBH
ABBBCBDCA
22DHABC2A

Pruébalo en línea!

acrolito
fuente
0

C ++ 11, para no competir, 726 687 636 bytes (* NIX o W10 umbral 2 se requiere)

#include <iostream>
#include <string>
#ifdef  _WIN32
#include <Windows.h>
#endif
using namespace std;int main() {
#ifdef  _WIN32
HANDLE h=GetStdHandle(-11);DWORD m;GetConsoleMode(h,&m);SetConsoleMode(h,m|0x04);
#endif
cout<<"\033[47m\033[30m";string d("4fup8y8hihjyl9g1ifh9wpc4f52l5a8giosim2isj80xff814db9wmf958x4zlbl58x4zlbl6zxgjt9whbcz4mu91r0j5c4kfq48uxw53w1zvpdshv6ylrnl3t38qyiteyw0lphs3kx59vf4ezay145thrt7lkb80w83nz10ih27f77p0820wzr9");for(int s=0;s!=184;s+=8){unsigned long long n=stoull(d.substr(s,8),NULL,36),i=3;for(int p=40;p!=-2;p-=2){int r=(n&(i<<p))>>p;printf(r>1?"\033[31m %d\033[30m":" %d",r>1?r-2:r);}puts("");}return 0;}

Sé que esto se puede jugar mucho mejor. ¡Quiero ver una breve respuesta de C ++ maldita sea!

Probablemente también cometí algunos errores al codificar la sección del corazón.

Salida (colores fijos):

ingrese la descripción de la imagen aquí


fuente
Supuse que solo la sección del corazón contenía el mensaje, así que codifiqué todo. No hace falta decir que me sentí como un idiota cuando volví a leer el desafío y probé las primeras líneas de la salida en ascii.
0

Python, 473 bytes

¡De colores!

r=str.replace;print r(r(r(r(r(r(r(r("""
jh0k1k1k0jk1
ikik1kjk0h1
ik0hjikih
k1h0k1k1k00k0
i1ksi1ejk0s1ke0h
i1sk0kie0si1kiek1
0ks1hje0s1k1k0ej1
j1s1kik1kjkjej
jsik0hjikiek
ksk1h0k1k1k0ej
0jsikik1kjk0ek
k1sik0hjikei1
0k1sjh0k1ke1k00
1kis1kik1k0e1kj
0ki1sk0k1k1eiki
hk1sh0ke1k1k0
0kji1sj1ke1kjk0
hi1ks0ke1ki1k1
1hk1ks1e00k1k1k
00kjikik1kjk
0hi1k0hjik
ihk1h0k1ki
000kjikik1kj1
""",'h','1010'),'i','11'),'j','01'),'k','10'),'1','1 '),'0','0 '),'s','\x1b[0;40;31m'),'e','\x1b[0m')
Oliver Ni
fuente
1
str.translatepodría ser una mejor opción
Mego
0

FEU , 360 bytes

m/a/0 1 /b/1 0 /c/1 1 /d/0 0 /e/0 /f/1 /g
__DATA__
afaeaafabeab1
cfacababaae1
cbaaeacfaca0
fafaeaafabeae0
ccacababaa0
cfbaafacfafb1
aafaeaafabea1
acfacababae1
acbaaeacfac0
faafaeaafabd1
eacfacababa0
facbaaeacfaf1
aaafaeaafabe0
cacfacababe1
aacbaafacfa1
faaafaeaafab0
aeacfacabab0
faacbaafacb1
caaafaeaafaf0
eaeacfacabaf0
aaacbaaeacf0
cfaaafaeaafa1
daeacfacaba1

Solo estúpida compresión

TuxCrafting
fuente