ti amo ti amo ti amo!


58

XKCD # 99 , con il titolo "Binary Heart", mostra una semplice immagine di uno e zero, con alcune cifre colorate in rosso.

inserisci qui la descrizione dell'immagine

Il cuore rosso è visibile ad occhio nudo, ma il messaggio nascosto nella sequenza binaria non lo è. Se rimuovi tutti gli spazi e le nuove righe e interpreti la sequenza binaria come codice ASCII a 8 bit, finirai con il messaggio:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

Carino vero?

Pssst ... La stringa non è una ripetizione di stringa pura.


La tua sfida è quella di creare questa immagine binaria con 21 cifre e 23 cifre in basso. Dovrebbe esserci esattamente uno spazio tra ogni cifra in ogni riga e una nuova riga per ogni nuova riga. Si noti che gli ultimi bit sono solo l'inizio della lettera e, poiché 21*23non è divisibile per 8. È necessario che anche questi bit siano corretti.

La funzione o il programma non deve accettare alcun input. Sono ammessi spazi iniziali e finali e newline.

Il risultato del tuo codice dovrebbe apparire così:

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

Questo è il golf del codice, quindi vince la risposta più breve (in byte).


Classifica


1
Voglio che tu sappia in questo momento troverò un modo in qualche modo?
BlueRaja - Danny Pflughoeft,

25
Darò una taglia al codice più corto che colora l'output usando rosso e nero per rendere il cuore
Decadimento Beta

Sono ancora più curioso di sapere quale sia il messaggio nascosto nella Os maiuscola dalla stringa di output ASCII!
brandonscript,

Non c'è alcun messaggio, o almeno nessuno è stato scoperto da spiegatoxkcd.com che dice "La combinazione di" O "maiuscole e minuscole si presume intenzionale per evitare un modello ripetuto."
Petr Hudeček,

1
@WeeingIfFirst Haha, sopravvaluti la mia abilità di programmazione :). Premierò anche il vincitore con una ricompensa di 100 rappresentanti, quando posso
Decadimento beta

Risposte:


21

Gelatina , 36 33 32 byte

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

Grazie a @JonathanAllan per giocare a golf con 3 byte!

Provalo online!

Come funziona

Il collegamento principale

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

viene eseguito in modo niladico (ovvero, senza alcun argomento) quando viene eseguito il programma. Il valore restituito verrà stampato implicitamente.

“ḅUɗaṚPXṙ’

trova gli indici dei caratteri tra virgolette nella tabella codici di Jelly e li interpreta come cifre di un numero 250 di base biiettiva. Questo produce l'intero 13021639057551959994 .

          B

converte il numero intero generato in binario. Questo produce l'array di bit 1011010010110110001001111011101100110010101111001010011110111010 che corrisponde alla codifica UTF-8 della stringa ilOveyOu , spostata di un bit a sinistra.

Lo spostamento è necessario perché Bnon può restituire un array di bit con uno 0 iniziale . Altre opzioni includono la negazione delle cifre binarie o il calcolo del quadrato al contrario, ma questo approccio consente di risparmiare un byte.

            ṁ484

modella l'array generato come l'intervallo da 1 a 484 , ovvero ripete il contenuto dell'array tutte le volte necessarie per raggiungere una lunghezza di 484 .

Questo è un po 'più del necessario, per tenere conto del turno. Ora potremmo rimuovere il primo bit, ma farlo in seguito significa che tutti i bit che devono essere scambiati si trovano su indici pari, il che ci consente di salvare il suddetto byte.

                 “½:J⁺ȤṾ‘Ḥ¤

prende i punti di codice dei caratteri tra e ( [10, 58, 74, 138, 154, 186] ), quindi li "unhalves", cioè li moltiplica per 2 ( [20, 116, 148, 276, 308, 372 ] ).

                ¬           ¦

nega in modo condizionale i bit di quegli indici. Ciò corrisponde alle variazioni di O / o nel modello originale.

Finalmente,

                             Ḋs21G

dequeues l'array di bit (rimuovendo il primo bit), divide l'array rimanente in righe di 21 elementi e stampa la matrice risultante come una griglia.


2
Puoi salvare altri 3 byte avendo maiuscole Ocome predefinite, penso che lo faccia:“ỊḂr×C)ḃȯ’B¬ṁ483¬“Œ` ° @‘+\¤¦s21G
Jonathan Allan,

Bene, ci sono più O maiuscole che minuscole. Grazie!
Dennis,

4
Ecco come appare la magia nera ...
Bassdrop Cumberwubwubwub,

2
@BassdropCumberwubwubwub Ora ci dovrebbe essere uno sforzo per trasformarlo in magia rossa e nera
Matthew Roh

43

Gelatina , 41 40 35 33 byte

Grazie a @Dennis per la fine ṖṖCG! (complemento C= 1-xal posto del logico no ¬)

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

TryItOnline

Come?

“ƝƓỊ⁹Ȥ⁶Ị⁺‘ẋ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)

Versione "a colori", 77 byte

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

TryItOnline

Jelly non ha una resa cromatica, ma per me è molto più facile da vedere (sono daltonico) ...

° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹ ° ° ° ¹ ¹ ° ¹
¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹ ° ° ¹ ° ¹ ° ¹
¹ ¹ ¹ ° ° ¹ ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ °
¹ ° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹ ° ° ° ¹ ° °
¹ ¹ ¹ ¹ ° 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 ° ° ¹ ° ¹ ¹ ° ¹ ¹ °
° ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹ °
° ¹ ° ¹ ° ¹ ¹ ¹ ¹ ° ° ¹ ° ¹ ° ° ¹ ¹ ¹ ¹ °
¹ ¹ ¹ ° ¹ ° ¹ ° ¹ ¹ ° ¹ ° ° ¹ ° ¹ ¹ ° ¹ ¹
° ° ° ¹ ° ° ¹ ¹ ¹ ¹ ° ¹ ¹ ¹ ° ¹ ¹ ° ° ¹ ¹

Come?

“¤Ɓ¥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

27
Se si rimuove il ¬, gli ultimi quattro byte possono diventare ṖṖCG. :)
Dennis,

2
Oh wow, certo - questo deve essere fatto!
Jonathan Allan,

1
Perdonate la mia pedanteria; forse il termine corretto è complement?
Sherlock9

@ Sherlock9, sì; risolto e grazie - Non posso scrivere così bene, quindi spesso sbaglierò le parole se il controllo ortografico non dà bandiera!
Jonathan Allan,

@WeeingIfFirst - Non ho controllato, ma spero che sia ancora abbastanza buono per essere considerato colorato.
Jonathan Allan,

42

In realtà, 58 byte

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

Provalo online!

Spiegazione

Ci sono tre parti principali qui, quindi lo analizzerò di conseguenza.

Parte 1: costruzione della stringa base-256

Costruiremo effettivamente la stringa binaria invertita, per sfruttare la struttura stack-based (LIFO) di Actually ed evitare complicazioni con zeri iniziali nella stringa binaria. Pertanto, la stringa binaria di destinazione è 110011011101111001000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111011010011110101001100110111011110010001101101001011010101110111101101001111010100110011011101111011000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111001010011110101001100110111011110110001101101001011010101110111101101001111010100110011011101111001000110110100101101010111011110010100111101010011001101110111101100011011010010110, che è equivalente a 20083405242288679348048842451418880256193335738939042905519679590571514414673488599852759703515507690399267425671627412178904636115120346432419478in decimale. In base-256 (utilizzando la tabella dei caratteri CP437 per la conversione), la stringa corrispondente è ♠n≥6û«≥₧ªn≥6û«÷₧ªn≥6û«÷₧ªn÷6û«≥₧ªn≥6û«≥₧ªn÷6û«÷₧ªn≥6û«≥₧ªn÷6û. Per costruire la stringa binaria originale, costruiamo la stringa base-256 (sfruttando il modello in essa) ed eseguiamo conversioni base in decimale e binario.

La stringa base-256 ha il seguente formato (spazi e righe sono stati aggiunti per maggiore chiarezza):

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

Pertanto, ciascuna delle 7 sezioni centrali può essere formata utilizzando l'impalcatura «%s₧ªn%s6ûe sostituendo le %sparti con una o ÷.

La sequenza specifica di s e ÷s abbiamo bisogno è ≥≥÷≥÷÷≥≥≥÷÷≥≥÷. Dato che abbiamo bisogno di questo come un elenco di stringhe di lunghezza 1, il modo ingenuo di rappresentarlo sarebbe "≥≥÷≥÷÷≥≥≥÷÷≥≥÷"#(spingere la stringa, trasformarla in un elenco). Tuttavia, possiamo fare leggermente meglio. Interpretando quella stringa come un numero binario (dove rappresenta 1e ÷rappresenta 0), si arriva 13542in decimale. Convertendolo nuovamente in binario (usando i tradizionali 1s e 0s) e indicizzandolo in una stringa di lunghezza 2, possiamo ottenere l'elenco usando un byte in meno rispetto al metodo naïve.

: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: conversione in binario

Questa parte è molto più semplice. Se effettivamente avessimo la capacità di convertire direttamente base-256 in binario, lo useremmo. Sfortunatamente, non lo è, quindi dovremo usare il decimale come formato intermedio.

Il ,seguente codice rappresenta il codice della Parte 1 - a scopo esplicativo, ho sostituito il codice della Parte 1 con ,per leggere l'output della Parte 1 da STDIN. Non fa parte del codice finale effettivo.

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

Parte 3: formattazione

Se la sfida consistesse semplicemente nell'output della stringa binaria così com'è, avremmo finito. Tuttavia, abbiamo ancora della formattazione da fare per ottenere la stringa binaria in un rettangolo 21 x 23.

Come nella parte 2, ,rappresenta l'output della parte precedente e non fa parte del codice effettivo.

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)

Per coloro che tengono traccia a casa, questo è l'equivalente codice Python 3 (481 byte):

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]))

46
Sai, è una programmazione come questa che mi fa credere agli egiziani dove programmatori e geroglifici davvero avanzati e di successo erano semplicemente il loro linguaggio preferito. +1
MonkeyZeus,

Che lingua era questa? Inoltre, questa risposta è stata compilata?
Jack,

@Jack Questo è in realtà . Nessuna compilazione coinvolta.
Mego

1
@Mego: 0 Sei un BOSS allora per aver scritto questo codice
Jack

1
Cosa succede se hai bisogno della cifra 34 in un numero di base 256? (il carattere che racchiude la stringa)
Jonathan Allan,

22

JavaScript (ES6), 169 ... 136 135 byte

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());

Salvato 2 byte grazie ad Andrakis
Salvato 4 byte grazie a Hedi
Salvato 3 5 byte grazie a Neil

Versione colorata, 249 byte (237 byte di JS + 12 byte di CSS)

Il codice JS genera l'arte ASCII con tag in grassetto per il cuore. Per colorare in rosso sono necessari 12 byte di CSS. (Il conteggio dei byte è corretto?)

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>


2
È possibile salvare alcuni byte sostituendo il vostro sostituire: s=>s.replace(/./g,'$& '). Ho lavorato su una soluzione praticamente identica.
Andrakis,

1
Non potrebbe s.replace(/./g,'$& ')essere sostituito da s.split``.join` `?
Hedi,

2
[...s].join` `
Neil,

1
Penso replace(/./g,(c,i)=>c+=++i%21?' ':'\n')(ovviamente usando una nuova riga letterale lì) salva un ulteriore byte. Potrebbe esserci un modo ancora migliore per esprimere quell'idea.
Neil,

20

05AB1E , 77 54 53 44 43 41 byte

Utilizza la codifica CP-1252 .

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

Spiegazione

’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

Provalo online!


3
Sembra che tu abbia un'immagine del profilo pertinente
tomsmeding,

3
@tomsmeding: Infatti! Mi ha disegnato un tipo da cappello quando ci siamo incontrati un paio di anni fa, quindi è quello che sono ora :)
Emigna,

So che sono passati 2,5 anni, ma puoi giocare Sðý42ô»a golf S21ô», poiché »unisce gli elenchi interni in modo implicito di spazi (e •1žä¿*•ora dovrebbe essere •Å¾$6•, poiché gli interi sono codificati in base-255 ora anziché in base-214).
Kevin Cruijssen,

15

CJam , 48 byte

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

Collaborazione con @MartinEnder, che ha rimosso 3 byte complicati con la "uilvey"3/stringa. Interprete online .

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

12

Javascript ES6 REPL , 124 121 119 113 byte

6 byte salvati grazie a @ETHproductions

Questo è un programma completo che può essere incollato in REPL / console per produrre il risultato corretto.

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?` `:`
`)

Più prolisso

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

Cuore colorato solo JavaScript, 281 byte

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'}`))

Funziona cambiando i colori ogni n bit e fa uso della capacità console.log per registrare i colori

Cuore CSS colorato, 229 + 12 byte

Se è consentito l'uso del CSS, il cuore colorato può essere ulteriormente ridotto a 229 byte di codice JavaScript e 12 byte di 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?` `:`
`)


Il motivo per cui l'ho fatto in questo modo è perché questo può essere considerato un programma completo. Non ci sono variabili hardcoded che dovrebbero essere modificate dall'utente, invece questa può essere incollata e funziona così com'è. Lo chiamo frammento, ma potrebbe anche essere un programma completo. Pensieri?
Bassdrop Cumberwubwubwub,

Si basa sul comportamento REPL, il che significa che la lingua è "Javascript ES6 REPL" ( fonte ).
Mego

@Mego Grazie, ho modificato la mia risposta di conseguenza
Bassdrop Cumberwubwubwub il

1
Sono abbastanza sicuro che puoi sbarazzartene ae usarlo num>>i/64&1in entrambi i luoghi, risparmiando 1 byte. Inoltre, ++i%21==0?newline:spaceè lo stesso di ++i%21?space:newline.
ETHproductions

Un altro consiglio: cambia i=0,r=''in i=r=''; ''viene automaticamente forzato a 0.
ETHproductions

9

MATL, 56 55 byte

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

Provalo online

Spiegazione

'!?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     

9

PowerShell v2 +, (UTF-16) 300 byte

Conteggio byte errato corretto grazie a @Mego

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

Non il più breve, ma un approccio diverso. Ho preso manualmente ogni linea e le ho divise in coppie ciascuna (approssimativamente) 9-11 bit significativi di lunghezza. Convertito ciascuno di questi valori binari in un char(Nota: PowerShell utilizza UTF-16 per impostazione predefinita, non UTF-8) e li ha suddivisi in una stringa. Questo è '...'l'inizio.

Quindi lo -splittrasformiamo in stringhe di lunghezza 2 e passiamo attraverso ogni coppia. Quelle coppie sono divise in un chararray via $_[0,1], e ognuna di quelle è lanciata come un int +$_, ed [convert]edita in un binario ( ,2) String. Quel -joinEd insieme in una singola stringa, poi PadLeft'd per ottenere la lunghezza corretta, allora ogni elemento è -replaced con se stesso e uno spazio '$1 '.

Queste stringhe sono tutte lasciate sulla pipeline e l'output è implicito, con il valore predefinito Write-Outputche fissa una nuova riga tra gli elementi.

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 

Conto 300 byte 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. Solo perché sto contando UTF-16 per la stringa non significa che posso magicamente contare UTF-8 per il resto del codice. Hah. Grazie per l'assistenza.
AdmBorkBork,

Sono contento di aiutarti :)
Mego

Se non fosse così intimidatorio, aprirei un terminale PowerShell ed eseguirlo.
DaveTheMinion,

6

/// , 237 byte

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

Provalo online!


4

Python 3, 147 144 byte

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)

Provalo su ideone

Inizializza ia 0nella dichiarazione di funzione, quindi ripete 23 volte:
rende l'intera stringa binaria senza spazi (vedi sotto);
taglia una riga dall'interno usando [i:i+21];
inserisce gli spazi con ' '.join(...);
stampe; e
incrementi idi 21 coni+=21

Per rendere l'intera stringa binaria:
si ripete "ilOveyOu"otto volte;
sostituisce Ocon oove necessario (agli indici [2,14,18,34,38,46]);
- - - questo si ottiene con il chr(j+30)in' ,0@DL'salvataggio di 3 byte
converte ciascun carattere nel suo ordinale;
lancia ogni ordinale in una stringa binaria ( '0bxxxxxxx');
rimuove il lead '0b'da ogni utilizzo [2:];
antepone ciascuno con un '0'; e
unisce tutto''.join(...)


Non hai bisogno di una lambda. Fare i=0\nexec(...)o i=0;exec(...)per 137 byte.
mbomb007,

A meno che tu non abbia davvero bisogno di Python 3, puoi usare Python 2 per cambiare exec("...")in exec"..."e print(...)inprint...
mbomb007,

3

PHP + HTML + CSS, 173 byte colorati 367 byte

Solo CLI PHP 173 byte

$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]." ";}}

conforme al tipo di contenuto bounty text / html

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

b{all:unset;color:red}invece che b{all:unset;color:#911;background:red}nella prima versione

PHP + HTML + CSS, 392 byte

cuore rosso + nero che sembra più carino

Forse chiama il numero di colore nella parte CSS

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

aggiungi questo prima che appaia più bello

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

Uscita prima versione è il più brutto codice HTML nella mia vita

cuore rosso-nero

<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 byte per creare direttamente la pagina HTML con PHP

<?$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>":""," ";

2
La semplice sostituzione color:#911;background:redcon lo color:red;rende conforme alle specifiche di generosità e salva alcuni byte.
Emigna,

3

Powershell, 110 byte

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

Spiegazione:

La prima riga dello script prende le sottostringhe e inserisce una lettera Otra loro. Il risultato è la stringa uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOvey. Si noti che il primo e l'ultimo carattere sono ridondanti.

Il loop emette tutti i (8..490)bit necessari dai caratteri della stringa, nonché uno spazio o un avanzamento di riga.

L'enigma del destinatario della lettera di San Valentino

Si può vedere che i simboli piccoli e grandi Ostessi compongono la codifica dei bit. Ci sono 15 simboli (bit). C'è solo una partizione sui bit per ottenere caratteri ASCII: oOOooOOO+ ooOoOOO[o]. Abbiamo dovuto aggiungere un piccolo oinvece che 0alla fine. Questi simboli ASCII sono:g.

Chi è questo misterioso g.?


2

PHP, 121 byte

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);

abbattersi

$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)

2

q / kdb +, 107 93 85 55 53 byte

Soluzione:

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

Esempio:

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

Spiegazione:

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

Appunti:

  • -2 byte grazie a ngn!

1

Python 3, 199 byte:

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)]

1

Python 3, 170 byte

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")

crea una ripetizione stringa di "Il% svey% su", la ripete il numero di volte richiesto, quindi usa una tupla per sottoporre tutte le o in. Quindi la converte in binaria, usa il modulo textwrap, converte ogni elemento del nuovo list to list, si unisce allo spazio, quindi aggiunge 0 1 1 perché sembra essere uno stub o qualcosa del genere


1

Mathematica, 123 byte (275 con colore)

Non sono sicuro se usare Gridinvece di emettere una stringa sia OK (in caso contrario si tratta di una voce non 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]

inserisci qui la descrizione dell'immagine

Colore

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]}]

inserisci qui la descrizione dell'immagine


È possibile copiare / incollare il risultato gridin testo normale e incollarlo nel blocco note? Che cosa sembra? Spazio separato (spazio singolo) con nuove linee, come mostra la figura?
Stewie Griffin,

1

Ruby 142 byte

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

(Leggermente di più) in modo leggibile:

(('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)

Non ho ancora trovato un modo per condensare il testo originale in una forma più succinta in Ruby: ha alcune fantastiche funzioni di manipolazione delle stringhe, ma tutti i modi in cui ho provato usano più caratteri della stringa stessa. Qualche suggerimento apprezzato, questo è il mio primo Code Golf su StackOverflow!


Benvenuto in Puzzle di programmazione e scambio di code golf stack! Hai provato a impostare la stringa su una variabile (ad es. a), Quindi facendo a+a+a...? Ancora meglio, se Ruby supporta la moltiplicazione delle stringhe a*count,!
wizzwizz4,

@ wizzwizz4, la stringa non è pura ripetizione di stringa. :) (Probabilmente ci sono modi migliori per farlo, ma non credo a+a+asia il modo
giusto

Lo so! Crea una versione breve tutta minuscola, ripeti, quindi sostituisci l'ennesimo ocon la maiuscola O!
wizzwizz4,

1

Ruggine, 195 byte

||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'})}

Ungolfed:

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'})
    }
}

1

C (gcc) , 102 byte

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);}

Corri giù

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.
);}

Provalo online!



1

Pyth, 47 byte

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

Provalo online qui .

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

0

/// , 220 byte

/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

Provalo online!


0

C ++ 11, non concorrenziale, 726 687 636 byte (* richiesto NIX o W10 soglia 2)

#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;}

So che questo può essere giocato a golf molto meglio. Voglio vedere una breve risposta c ++ dannazione!

Probabilmente ho anche fatto alcuni errori durante la codifica della sezione del cuore.

Uscita (colori fissi):

inserisci qui la descrizione dell'immagine


Ho assunto che solo la sezione del cuore contenesse il messaggio, quindi ho codificato il tutto. Inutile dire che mi sono sentito un idiota quando ho riletto la sfida e testato le prime righe dell'output in ascii.

0

Python, 473 byte

Colorato!

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')

1
str.translatepotrebbe essere una scelta migliore
Mego

0

FEU , 360 byte

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 una stupida compressione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.