Ich liebe dich Ich liebe dich Ich liebe dich!


58

XKCD # 99 mit dem Titel "Binary Heart" zeigt ein einfaches Bild von Einsen und Nullen, wobei einige Ziffern rot gefärbt sind.

Bildbeschreibung hier eingeben

Das rote Herz ist mit bloßem Auge sichtbar, die in der Binärsequenz verborgene Nachricht jedoch nicht. Wenn Sie alle Leerzeichen und Zeilenumbrüche entfernen und die Binärsequenz als 8-Bit-ASCII-Code interpretieren, erhalten Sie die folgende Meldung:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

Süß, oder?

Pssst ... Die Zeichenfolge ist keine reine Zeichenfolge-Wiederholung.


Ihre Herausforderung besteht darin, dieses Binärbild mit 21 Stellen und 23 Stellen nach unten zu erstellen. Zwischen jeder Ziffer in jeder Zeile sollte genau ein Leerzeichen und für jede neue Zeile eine neue Zeile stehen. Beachten Sie, dass die letzten Bits nur den Anfang des Buchstabens darstellen e, da sie 21*23nicht durch 8 teilbar sind. Sie benötigen auch die richtigen Bits.

Die Funktion oder das Programm sollte keine Eingabe annehmen. Führende und nachfolgende Leerzeichen und Zeilenumbrüche werden akzeptiert.

Das Ergebnis Ihres Codes sollte folgendermaßen aussehen:

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

Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).


Bestenliste


1
Ich möchte, dass du es jetzt weißt. Ich werde irgendwie einen Weg finden.
BlueRaja - Danny Pflughoeft

25
Ich werde dem kürzesten Code ein Kopfgeld geben, der die Ausgabe mit Rot und Schwarz färbt, um das Herz zu bilden
Beta Decay

Ich bin noch neugieriger, was die versteckte Nachricht in den großgeschriebenen Os aus der ASCII-Ausgabezeichenfolge ist!
brandonscript

Es gibt keine Nachricht oder zumindest keine wurde von explainxkcd.com entdeckt, die sagen: "Die Mischung von O in Groß- und Kleinbuchstaben ist vermutlich beabsichtigt, um ein sich wiederholendes Muster zu vermeiden."
Petr Hudeček

1
@WeeingIfFirst Haha, du überschätzt meine Programmierkenntnisse :). Ich werde den Gewinner auch mit einem Kopfgeld von 100 Wiederholungen belohnen, wenn ich kann
Beta Decay,

Antworten:


21

Jelly , 36 33 32 Bytes

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

Vielen Dank an @ JonathanAllan für das Golfen mit 3 Bytes!

Probieren Sie es online!

Wie es funktioniert

Der Hauptlink

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

wird niladisch (dh ohne Argumente) ausgeführt, wenn das Programm ausgeführt wird. Der Rückgabewert wird implizit ausgegeben.

“ḅUɗaṚPXṙ’

Finden Sie die Indizes der zitierten Zeichen in Jellys Codepage und interpretieren Sie sie als Ziffern einer bijektiven Basis-250-Zahl. Dies ergibt die Ganzzahl 13021639057551959994 .

          B

wandelt die generierte Ganzzahl in eine Binärzahl um. Dies ergibt das Bit-Array 10110100101101100010011110111011001100101011110010100110111010, das der UTF-8-Codierung der um ein Bit nach links verschobenen Zeichenfolge ilOveyOu entspricht .

Eine Verschiebung ist erforderlich, da Bkein Bit-Array mit einer führenden 0 zurückgegeben werden kann . Andere Optionen umfassen das Negieren der Binärziffern oder das Berechnen des Quadrats in umgekehrter Reihenfolge, aber dieser Ansatz spart ein Byte.

            ṁ484

formt das generierte Array wie im Bereich von 1 bis 484 , dh es wiederholt den Inhalt des Arrays so oft wie nötig, um eine Länge von 484 zu erreichen .

Dies ist ein bisschen mehr als wir brauchen, um die Verschiebung zu erklären. Wir könnten das erste Bit jetzt entfernen, aber später bedeutet dies, dass alle Bits, die ausgetauscht werden müssen, auf geraden Indizes liegen, wodurch wir das oben genannte Byte speichern können.

                 “½:J⁺ȤṾ‘Ḥ¤

Nimmt die Codepunkte der Zeichen zwischen und ( [10, 58, 74, 138, 154, 186] ), "hebt" sie dann auf, dh multipliziert sie mit 2 ( [20, 116, 148, 276, 308, 372) ] ).

                ¬           ¦

Negiert die Bits an diesen Indizes bedingt. Dies entspricht den O / O- Abweichungen im Originalmuster.

Endlich,

                             Ḋs21G

Das Bit-Array wird aus der Warteschlange entfernt (das erste Bit wird entfernt), das verbleibende Array in Zeilen mit 21 Elementen aufgeteilt und die resultierende Matrix als Raster gedruckt.


2
Sie können 3 weitere Bytes einsparen, indem Sie Ostandardmäßig Großbuchstaben verwenden . Ich denke, dies ist der Fall:“ỊḂr×C)ḃȯ’B¬ṁ483¬“Œ` ° @‘+\¤¦s21G
Jonathan Allan

Richtig, es gibt mehr O in Großbuchstaben als in Kleinbuchstaben. Vielen Dank!
Dennis

4
So sieht also schwarze Magie aus.
Bassdrop Cumberwubwubwub

2
@BassdropCumberwubwubwub Jetzt sollte es Mühe geben, es in rote und schwarze Magie zu verwandeln
Matthew Roh

43

Jelly , 41 40 35 33 Bytes

Vielen Dank an @Dennis für das Ende ṖṖCG! (Komplement C= 1-xanstelle von logisch nicht ¬)

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

TryItOnline

Wie?

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

"Farbe" Version, 77 Bytes

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

TryItOnline

Jelly hat keine Farbausgabe, aber das ist viel einfacher für mich zu sehen (ich bin farbenblind) ...

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

Wie?

“¤Ɓ¥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
Wenn Sie das entfernen ¬, können die letzten vier Bytes werden ṖṖCG. :)
Dennis

2
Oh wow, natürlich - das muss einfach gemacht werden!
Jonathan Allan

1
Verzeihen Sie meine Pedanterie; Vielleicht ist der richtige Begriff complement?
Sherlock9

@ Sherlock9, yep; Behoben & danke - Ich kann nicht so gut schreiben, daher werden die Wörter oft falsch geschrieben, wenn die Rechtschreibprüfung keine Flagge zeigt!
Jonathan Allan

@WeeingIfFirst - Ich habe es nicht überprüft, hoffe aber, dass es immer noch gut genug ist, um als farbig eingestuft zu werden.
Jonathan Allan

42

Eigentlich 58 Bytes

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

Probieren Sie es online!

Erläuterung

Es gibt drei Hauptteile, die ich dementsprechend aufschlüsseln werde.

Teil 1: Aufbau der Base-256-Zeichenkette

Wir werden die Binärzeichenfolge umgekehrt konstruieren, um die stapelbasierte (LIFO-) Struktur von Actually zu nutzen und Komplikationen mit führenden Nullen in der Binärzeichenfolge zu vermeiden. Die Ziel-Binärzeichenfolge lautet also 110011011101111001000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111011010011110101001100110111011110010001101101001011010101110111101101001111010100110011011101111011000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111001010011110101001100110111011110110001101101001011010101110111101101001111010100110011011101111001000110110100101101010111011110010100111101010011001101110111101100011011010010110, was einer 20083405242288679348048842451418880256193335738939042905519679590571514414673488599852759703515507690399267425671627412178904636115120346432419478Dezimalzahl entspricht. In base-256 (unter Verwendung der CP437-Zeichentabelle zur Konvertierung) lautet die entsprechende Zeichenfolge ♠n≥6û«≥₧ªn≥6û«÷₧ªn≥6û«÷₧ªn÷6û«≥₧ªn≥6û«≥₧ªn÷6û«÷₧ªn≥6û«≥₧ªn÷6û. Um die ursprüngliche Binärzeichenfolge zu erstellen, erstellen wir die Base-256-Zeichenfolge (unter Ausnutzung des darin enthaltenen Musters) und führen Basisumwandlungen in Dezimal- und Binärzeichenfolgen durch.

Die Base-256-Zeichenfolge hat das folgende Format (Leerzeichen und Zeilenumbrüche wurden der Übersichtlichkeit halber hinzugefügt):

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

Somit kann jeder der 7 Mittelabschnitte gebildet werden, indem das Gerüst verwendet wird «%s₧ªn%s6ûund die %sTeile entweder durch oder ersetzt werden ÷.

Die spezifische Folge von s und ÷s, die wir brauchen, ist ≥≥÷≥÷÷≥≥≥÷÷≥≥÷. Da wir dies als Liste von Zeichenfolgen der Länge 1 benötigen, wäre die naive Art, dies darzustellen "≥≥÷≥÷÷≥≥≥÷÷≥≥÷"#(drücken Sie die Zeichenfolge, machen Sie sie zu einer Liste). Wir können es jedoch etwas besser machen. Indem wir diesen String als Binärzahl interpretieren (wobei repräsentiert 1und ÷repräsentiert 0), erhalten wir eine 13542Dezimalzahl. Indem Sie diese zurück in eine Binärdatei konvertieren (mit den herkömmlichen Methoden 1s und 0s) und in eine Zeichenfolge der Länge 2 indizieren, erhalten Sie die Liste mit einem Byte weniger als mit der naiven Methode.

: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

Teil 2: Konvertieren in eine Binärdatei

Dieser Teil ist viel einfacher. Wenn Actually die Fähigkeit hätte, Base-256 direkt in Binärdaten umzuwandeln, würden wir dies verwenden. Leider ist dies nicht der Fall, daher müssen wir Dezimalzahlen als Zwischenformat verwenden.

Der ,folgende Code stellt den Code aus Teil 1 dar. Zu Erläuterungszwecken habe ich den Code aus Teil 1 durch ersetzt ,, um die Ausgabe aus Teil 1 von STDIN zu lesen. Es ist nicht Teil des eigentlichen endgültigen Codes.

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

Teil 3: Formatieren

Wenn die Herausforderung darin bestand, die Binärzeichenfolge so wie sie ist auszugeben, wären wir fertig. Es müssen jedoch noch einige Formatierungen vorgenommen werden, um die Binärzeichenfolge in ein 21 x 23-Rechteck umzuwandeln.

Wie in Teil 2 stellt das ,die Ausgabe des vorherigen Teils dar und ist nicht Teil des tatsächlichen Codes.

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)

Für diejenigen, die zu Hause den Überblick behalten, ist dies der entsprechende Python 3-Code (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
Weißt du, es ist eine solche Programmierung, die mich glauben lässt, dass die Ägypter, in denen eigentlich sehr fortgeschrittene und erfolgreiche Programmierer und Hieroglyphen ihre bevorzugte Sprache waren. +1
MonkeyZeus

Welche Sprache war das? Ist diese Antwort auch zusammengestellt?
Jack

@ Jack Das ist eigentlich . Keine Kompilierung erforderlich.
Mego

1
@ Mego: 0 Sie sind ein Chef dann für das Schreiben dieses Codes
Jack

1
Was passiert, wenn Sie die Ziffer 34 in einer Basis-256-Zahl benötigen? (die Zeichenfolge umschließende Zeichen)
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());

2 Bytes dank Andrakis
gespeichert 4 Bytes dank Hedi
gespeichert 3 5 Bytes dank Neil gespeichert

Farbige Version, 249 Bytes (237 Bytes von JS + 12 Bytes von CSS)

Der JS-Code gibt die ASCII-Grafik mit fettgedruckten Tags für das Herz aus. 12 Bytes CSS sind erforderlich, um rot einzufärben. (Ist die Anzahl der Bytes angemessen?)

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
Sie können einige Bytes speichern durch den Austausch Ihrer ersetzen: s=>s.replace(/./g,'$& '). Ich habe an einer ziemlich identischen Lösung gearbeitet.
Andrakis

1
Konnte nicht s.replace(/./g,'$& ')durch ersetzt werden s.split``.join` `?
Hedi

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

1
Ich denke replace(/./g,(c,i)=>c+=++i%21?' ':'\n')(offensichtlich mit einem wörtlichen Zeilenumbruch dort) spart ein weiteres Byte. Es kann durchaus einen noch besseren Weg geben, diese Idee auszudrücken.
Neil

20

05AB1E , 77 54 53 44 43 41 Bytes

Verwendet die CP-1252- Codierung.

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

Erläuterung

’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

Probieren Sie es online!


3
Du
scheinst

3
@tomsmeding: In der Tat! Er hat mir einen Hut gezeichnet, als wir uns vor ein paar Jahren getroffen haben, also bin ich das jetzt :)
Emigna

Ich weiß, es sind 2,5 Jahre vergangen, aber Sie können das Sðý42ô»to spielen S21ô», da »innere Listen implizit durch Leerzeichen verbunden sind (und das •1žä¿*•sollte jetzt sein •Å¾$6•, da Ganzzahlen jetzt in base-255 anstelle von base-214 codiert sind).
Kevin Cruijssen

15

CJam , 48 Bytes

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

Zusammenarbeit mit @MartinEnder, der mit dem "uilvey"3/String knifflige 3 Bytes abgelegt hat . Online-Dolmetscher .

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 Bytes

6 Bytes gespart dank @ETHproductions

Dies ist ein vollständiges Programm, das in die REPL / Konsole eingefügt werden kann, um das richtige Ergebnis zu erzielen.

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

Ausführlicher

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

Farbiges JavaScript nur Herz, 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'}`))

Dies funktioniert, indem die Farben alle n Bits gewechselt werden, und nutzt die console.log-Funktion, um Farben zu protokollieren

Farbiges CSS-Herz, 229 + 12 Bytes

Wenn die Verwendung von CSS zulässig ist, kann das farbige Herz noch weiter auf 229 Byte JavaScript-Code und 12 Byte CSS reduziert werden

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


Der Grund, warum ich das so gemacht habe, ist, dass dies als vollständiges Programm angesehen werden kann. Es gibt keine fest codierten Variablen, die vom Benutzer geändert werden sollten. Stattdessen können diese kopiert und so eingefügt werden, wie sie sind. Ich nenne es einen Ausschnitt, aber es könnte genauso gut ein vollständiges Programm sein. Gedanken?
Bassdrop Cumberwubwubwub

Es basiert auf dem REPL-Verhalten, dh die Sprache ist "Javascript ES6 REPL" ( Quelle ).
Mego

@ Mego Danke, meine Antwort entsprechend bearbeitet
Bassdrop Cumberwubwubwub

1
Ich bin mir ziemlich sicher, dass Sie es loswerden aund nur num>>i/64&1an beiden Orten verwenden können, um 1 Byte zu sparen. Auch ++i%21==0?newline:spaceist das gleiche wie ++i%21?space:newline.
ETHproductions

Noch ein Tipp: wechseln i=0,r=''zu i=r=''; ''wird automatisch auf 0 gezwungen.
ETHproductions

9

MATL, 56 55 Bytes

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

Probieren Sie es online

Erläuterung

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

Korrektur der Anzahl fehlerhafter Bytes dank @Mego

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

Nicht die kürzeste, aber eine andere Herangehensweise. Ich nahm manuell jede Zeile und schnitt sie in Paare von jeweils (ungefähr) 9-11 signifikanten Bits Länge. Konvertierte jeden dieser Binärwerte in einen char(Hinweis: PowerShell verwendet standardmäßig UTF-16, nicht UTF-8) und verwandelte diesen in einen String. Das ist '...'der Anfang.

Wir zerlegen -splitdas dann in Strings der Länge 2 und durchlaufen jedes Paar. Diese Paare werden in ein char-array-Via aufgeteilt $_[0,1], und jedes dieser Paare wird als int umgewandelt +$_und [convert]in ein binary ( ,2) umgewandelt String. Das ist -joinzu einer einzigen Zeichenkette zusammengefasst, dann würde PadLeftman die richtige Länge erhalten, dann ist jedes Element -replaced mit sich selbst und einem Leerzeichen '$1 '.

Diese Zeichenfolgen Write-Outputverbleiben alle in der Pipeline, und die Ausgabe erfolgt implizit, wobei standardmäßig eine neue Zeile zwischen den Elementen eingefügt wird.

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 

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

@ Mego Oh, Durr. Nur weil ich UTF-16 für den String zähle, heißt das nicht, dass ich UTF-8 für den Rest des Codes magisch zählen kann. Hah Danke für die Hilfe.
AdmBorkBork

Froh zu helfen :)
Mego

Wenn es nicht so einschüchternd aussehen würde, würde ich tatsächlich ein PowerShell-Terminal öffnen und es ausführen.
DaveTheMinion

6

/// 237 Bytes

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

Probieren Sie es online!


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)

Teste es bei ideone

Initialisiert iauf 0in der Funktionsdeklaration, dann wiederholt sich diese 23 - mal:
macht die ganze binäre Zeichenfolge ohne Leerzeichen (siehe unten);
schneidet eine Reihe von innen mit [i:i+21];
fügt die Leerzeichen mit ' '.join(...);
druckt; und
erhöht sich ium 21 miti+=21

So erstellen Sie die gesamte Binärzeichenfolge:
Sie wird "ilOveyOu"achtmal wiederholt .
ersetzt Obei oBedarf durch (bei Indizes [2,14,18,34,38,46]);
- - - Dies wird erreicht chr(j+30)in' ,0@DL', indem 3 Byte
gespeichert werden und jedes Zeichen in seine Ordnungszahl umgewandelt wird.
wandelt jede Ordnungszahl in eine binäre Zeichenfolge ( '0bxxxxxxx') um;
entfernt die führenden '0b'von jedem Gebrauch [2:];
stellt jeweils ein voran '0'; und
fügt das Ganze mit''.join(...)


Du brauchst kein Lambda. Tun i=0\nexec(...)oder i=0;exec(...)für 137 Bytes.
mbomb007

Sofern Sie Python 3 nicht wirklich benötigen, können Sie mit Python 2 exec("...")zu exec"..."und print(...)nach wechselnprint...
mbomb007

3

PHP + HTML + CSS, 173 Bytes Farbige 367 Bytes

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

Entspricht dem Inhaltstyp text / html der Kopfgeldspezifikation

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

b{all:unset;color:red}statt b{all:unset;color:#911;background:red}in der ersten Version

PHP + HTML + CSS, 392 Bytes

Herz rot + schwarz, das hübscher aussieht

Rufen Sie möglicherweise die Farbnummer im CSS-Teil auf

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

Fügen Sie dies hinzu, bevor es schöner aussieht

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

Erste Version ausgeben, es ist der hässlichste HTML-Code in meinem Leben

rot-schwarzes Herz

<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 für die direkte Erstellung der HTML-Seite mit 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
Durch einfaches Ersetzen color:#911;background:reddurch color:red;wird die Kopfgeldspezifikation erfüllt und es werden ein paar Bytes gespart.
Emigna

3

Powershell, 110 Bytes

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

Erläuterung:

Die erste Zeile des Skripts nimmt die Teilzeichenfolgen und fügt einen Buchstaben Odazwischen ein. Das Ergebnis ist die Zeichenfolge uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOvey. Beachten Sie, dass das erste und das letzte Zeichen redundant sind.

Die Schleife gibt alle erforderlichen (8..490)Bits aus den Zeichen der Zeichenfolge sowie ein Leerzeichen oder einen Zeilenvorschub aus.

Das Rätsel des Empfängers des Valentinsbriefes

Es ist ersichtlich, dass kleine und große Symbole Oselbst die Bitcodierung bilden. Es gibt 15 Symbole (Bits). Es gibt nur eine Partition in den Bits, um ASCII-Zeichen zu erhalten: oOOooOOO+ ooOoOOO[o]. Wir mussten ostatt 0am Ende ein kleines hinzufügen . Diese ASCII-Symbole sind:g.

Wer ist das mysteriös g.?


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

Nervenzusammenbruch

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

Lösung:

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

Beispiel:

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

Erläuterung:

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

Anmerkungen:

  • -2 Bytes dank ngn!

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

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

Führt eine String-Wiederholung von "Il% svey% su" durch, wiederholt sie die erforderliche Anzahl von Malen und verwendet dann ein Tupel, um alle O's zu subtrahieren. Anschließend konvertiert es sie in Binär, verwendet das Textwrap-Modul und konvertiert jedes Element des neuen Liste zu Liste, verbindet sich mit Leerzeichen und hängt dann 0 1 1 an, weil das ein Stummel oder so zu sein scheint


1

Mathematica, 123 Bytes (275 mit Farbe)

Ich bin nicht sicher, ob die Verwendung Gridanstelle der Ausgabe einer Zeichenfolge in Ordnung ist (wenn nicht, handelt es sich um einen nicht konkurrierenden Eintrag).

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]

Bildbeschreibung hier eingeben

Farbe

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

Bildbeschreibung hier eingeben


Kann ich das Ergebnis von gridim Klartext kopieren / einfügen und in den Notizblock einfügen? Wie sieht es aus? Leerzeichen getrennt (Leerzeichen) mit Zeilenumbrüchen, wie die Abbildung zeigt?
Stewie Griffin

1

Ruby 142 Bytes

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

(Etwas mehr) leserlich:

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

Ich habe noch keine Möglichkeit gefunden, den Originaltext in Ruby in einer prägnanteren Form zusammenzufassen - es gibt einige großartige Funktionen zur Manipulation von Zeichenfolgen, aber auf alle Arten, die ich ausprobiert habe, werden mehr Zeichen als die Zeichenfolge selbst verwendet. Für jeden Hinweis dankbar, dies ist mein erster Code Golf auf StackOverflow!


Willkommen beim Programmieren von Rätseln und beim Code Golf Stack Exchange! Haben Sie versucht, den String auf eine Variable zu setzen (z. B. a), und dann a+a+a...? Noch besser, wenn Ruby die Multiplikation von Strings unterstützt a*count!
wizzwizz4

@ wizzwizz4, der String ist keine reine String-Wiederholung. :) (Es gibt wahrscheinlich bessere Möglichkeiten, dies zu tun, aber ich glaube nicht, dass dies so a+a+aist)
Stewie Griffin

Ich weiß! Machen Sie eine Kurzversion in Kleinbuchstaben, wiederholen Sie sie und ersetzen Sie die n-te odurch ein Großbuchstaben O!
wizzwizz4

1

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

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

Heruntergewirtschaftet

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

Probieren Sie es online!



1

Pyth, 47 Bytes

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

Probieren Sie es hier online aus .

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

Probieren Sie es online!


0

C ++ 11, nicht konkurrierend, 726 687 636 Byte (* NIX- oder W10-Schwellenwert 2 erforderlich)

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

Ich weiß, das kann man viel besser spielen. Ich möchte eine kurze c ++ Antwort sehen, verdammt!

Wahrscheinlich habe ich auch ein paar Fehler gemacht, als ich den Herzabschnitt codiert habe.

Ausgabe (Farben fest):

Bildbeschreibung hier eingeben


Ich nahm an, dass nur der Herzabschnitt die Nachricht enthielt, also verschlüsselte ich die ganze Sache. Unnötig zu erwähnen, dass ich mich wie ein Idiot fühlte, als ich die Herausforderung erneut las und die ersten Zeilen der Ausgabe in ASCII testete.

0

Python, 473 Bytes

Farbig!

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.translatekönnte eine bessere Wahl sein
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

Einfach blöde Kompression

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.