私はあなたを愛しています


58

「Kinary Heart」というタイトルのXKCD#99は、1と0の単純な画像を示し、一部の数字は赤で表示されます。

ここに画像の説明を入力してください

赤いハートは肉眼で見えますが、バイナリシーケンスに隠されたメッセージは見えません。すべてのスペースと改行を削除し、バイナリシーケンスを8ビットASCIIコードとして解釈すると、次のメッセージが表示されます。

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

かわいいね?

Pssst ...文字列は純粋な文字列の繰り返しではありません。


あなたの課題は、横21桁、下23桁のこのバイナリイメージを作成することです。各行の各桁の間にスペースが1つ、新しい行ごとに1つの改行が必要です。8で割り切れないeため、最後のビットは文字の先頭にすぎないことに注意してください21*23。これらのビットも正しく必要です。

関数またはプログラムは入力を受け付けません。先頭および末尾のスペースと改行を使用できます。

コードの結果は次のようになります。

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

これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。


リーダーボード


1
私はあなたに今すぐ知ってほしい、どうにかして方法を見つけるでしょう
BlueRaja-ダニーPflughoeft

25
心を作るために赤と黒を使用して出力を色付けする最短コードに報奨金を与えます
ベータ崩壊

OASCII出力文字列の大文字のsに隠されたメッセージが何であるかを知りたいのです。
brandonscript

メッセージはありません。または、「大文字と小文字の「O」の混合は、繰り返しパターンを避けるために意図的に推定されている」と言うExplainxkcd.comによって少なくとも発見されていません。
ペトルフデチェック

1
@WeeingIfFirstハハ、あなたは私のプログラミングスキルを過大評価しています:)。できれば、100 repの賞金も受賞者に授与します
Beta Decay

回答:


21

ゼリー36 33 32 バイト

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

@JonathanAllanに3バイトのゴルフをしてくれてありがとう!

オンラインでお試しください!

使い方

メインリンク

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

プログラムが実行されると、niladicallyに(つまり、引数なしで)実行されます。その戻り値は暗黙的に出力されます。

“ḅUɗaṚPXṙ’

Jellyのコードページで引用符で囲まれた文字のインデックスを見つけ、それらを全単射250桁の数字として解釈します。これにより、整数13021639057551959994が得られます。

          B

生成された整数をバイナリに変換します。これにより、ビット配列101101001011011000100111101110110011001010111100101001111011101010が得られます。これは、文字列ilOveyOuの UTF-8エンコードに対応し、1ビット左にシフトされています。

B先行0のビット配列を返すことができないため、シフトが必要です。他のオプションには、2進数の否定や逆数の逆算が含まれますが、この方法では1バイト節約できます。

            ṁ484

金型の範囲のような生成されたアレイ1484、すなわち、それはの長さを達成するために必要な回数だけ配列の内容を繰り返す484

これは、シフトを説明するために必要なもう1つのビットです。ここで最初のビットを削除できますが、後で削除すると、スワップする必要があるすべてのビットが偶数のインデックスにあるため、前述のバイトを保存できます。

                 “½:J⁺ȤṾ‘Ḥ¤

[ 10、58、74、138、154、186 ])の間の文字のコードポイントを取得し、それらを「半分にする」、つまり2倍にします([ 20、116、148、276、308、372 ])。

                ¬           ¦

これらのインデックスのビットを条件付きで否定します。これは、元のパターンのO / Oバリエーションに対応します。

最後に、

                             Ḋs21G

ビット配列をデキュー(最初のビットを削除)し、残りの配列を21要素の行に分割し、結果のマトリックスをグリッドとして出力します。


2
あなたが大文字を持つことにより、3つの以上のバイトを保存することができO、デフォルトとして、私は、これはそれをしないと思う:“ỊḂr×C)ḃȯ’B¬ṁ483¬“Œ` ° @‘+\¤¦s21G
ジョナサン・アラン

右、小文字よりも大文字のOが多くあります。ありがとう!
デニス

4
だからこれは黒魔術のように見える..
バスドロップCumberwubwubwub

2
@BassdropCumberwubwubwubは今赤と黒魔術にそれを回すための努力がなければならない
マシュー盧

43

ゼリー41 40 35 33 バイト

最後にくれた@Dennisに感謝しṖṖCGます!(補数C= 1-x論理notの代わり¬

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

TryItOnline

どうやって?

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

「カラー」バージョン、77バイト

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

TryItOnline

Jellyにはカラー出力がありませんが、とにかく見やすくなっています(色覚異常です)。

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

どうやって?

“¤Ɓ¥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
を削除する¬と、最後の4バイトがになりṖṖCGます。:)
デニス

2
ああすごい、もちろん-それをやるだけです!
ジョナサンアラン

1
我慢してください。おそらく適切な用語はcomplement
Sherlock9

@ Sherlock9、うん; 修正と感謝-私はすべてをうまく綴ることができないので、スペルチェックがフラグを与えない場合、しばしば単語を間違えます!
ジョナサンアラン

@WeeingIfFirst-私はチェックしませんでしたが、これがまだ色付きとみなされるのに十分であることを願っています。
ジョナサンアラン

42

実際には、58バイト

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

オンラインでお試しください!

説明

ここには3つの主要な部分があるので、それに応じて分類します。

パート1:base-256文字列の構築

Actuallyのスタックベース(LIFO)構造を活用し、バイナリ文字列の先行ゼロとの複雑さを回避するために、実際には逆にバイナリ文字列を構築します。したがって、ターゲットバイナリ文字列は1100110111011110010001101101001011010101110111100101001111010100110011011101111001000110110100101101010111011110110100111101010011001101110111100100011011010010110101011101111011010011110101001100110111011110110001101101001011010101110111100101001111010100110011011101111001000110110100101101010111011110010100111101010011001101110111101100011011010010110101011101111011010011110101001100110111011110010001101101001011010101110111100101001111010100110011011101111011000110110100101102008340524228867934804884245141888025619333573893904290551967959057151441467348859985275970351550769039926742567162741217890463611512034643241947810進数と同等です。base-256(変換にCP437文字テーブルを使用)では、対応する文字列は♠n≥6û«≥₧ªn≥6û«÷₧ªn≥6û«÷₧ªn÷6û«≥₧ªn≥6û«≥₧ªn÷6û«÷₧ªn≥6û«≥₧ªn÷6ûです。元のバイナリ文字列を構築するには、ベース256文字列を構築し(そのパターンを利用して)、10進数およびバイナリへのベース変換を実行します。

base-256文字列の形式は次のとおりです(わかりやすくするためにスペースと改行が追加されています)。

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

したがって、7つの中央セクションの各々は、足場を用いて形成することができる«%s₧ªn%s6ûと交換%sのいずれかを有する部品または÷

必要なsと÷s の特定のシーケンスは≥≥÷≥÷÷≥≥≥÷÷≥≥÷です。これを長さ1の文字列のリストとして必要とするため、これを表す単純な方法は"≥≥÷≥÷÷≥≥≥÷÷≥≥÷"#(文字列をプッシュして、リストにする)です。ただし、少し改善することができます。その文字列を2進数(ここでを表し1、を÷表す0)として解釈することにより13542、10進数で取得します。これを(従来1のsと0s を使用して)バイナリに変換し直し、長さ2の文字列にインデックスを付けることで、ナイーブメソッドより1バイト少ないリストを取得できます。

: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

パート2:バイナリへの変換

この部分ははるかに簡単です。実際にbase-256をバイナリに直接変換する機能があれば、それを使用します。残念ながら、そうではないため、中間形式として10進数を使用する必要があります。

,次のコードでのパート1からコードを表す-説明の目的のために、私はパート1のコードを交換してきました,STDINからのパート1からの出力を読み取ること。実際の最終コードの一部ではありません。

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

パート3:フォーマット

課題が単にバイナリ文字列をそのまま出力することであった場合、私たちはやったでしょう。ただし、バイナリ文字列を21 x 23の長方形にするには、まだいくつかの書式設定が必要です。

パート2と同様に,、は前のパートからの出力を表し、実際のコードの一部ではありません。

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)

自宅で追跡する場合、これは同等のPython 3コード(481バイト)です。

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
ご存知のように、実際に非常に高度で成功したプログラマーと象形文字が単に彼らの選択言語であったエジプト人を信じさせるのは、このようなプログラミングです。+1
MonkeyZeus

これは何語ですか?また、この回答はコンパイルされていますか?
ジャック

@Jackこれは実際です。コンパイルは含まれません。
メゴ

1
@Mego:0あなたはこのコードを書くために、その後BOSSある
ジャック

1
基数256の数字34が必要な場合はどうなりますか?(文字列を囲む文字)
ジョナサンアラン

22

JavaScript(ES6)、169 ... 136 135バイト

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

Andrakisのおかげで2バイトを節約し
ましたHediのおかげで4バイトを
節約しましたNeilのおかげで3 5バイトを節約しました

カラーバージョン、249バイト(237バイトのJS + 12バイトのCSS)

JSコードは、ハートの太字タグを含むASCIIアートを出力します。赤で色付けするには、12バイトのCSSが必要です。(そのバイト数は公平ですか?)

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
replace:を置き換えることで、いくつかのバイトを節約できますs=>s.replace(/./g,'$& ')。私はほとんど同じソリューションに取り組んできました。
アンドラキス

1
s.replace(/./g,'$& ')に置き換えることができませんでしたs.split``.join` `か?
エディ

2
[...s].join` `
ニール

1
私はreplace(/./g,(c,i)=>c+=++i%21?' ':'\n')(明らかにそこにリテラル改行を使用すると)さらにバイトを節約すると思います。そのアイデアを表現するさらに良い方法があるかもしれません。
ニール

20

05AB1E77 54 53 44 43 41バイト

CP-1252エンコードを使用します。

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

説明

’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

オンラインでお試しください!


3
関連するプロファイル画像があるようです
-tomsmeding

3
@tomsmeding:確かに!数年前に会ったとき、彼は私に帽子の男を描いたので、それが今の私です:)
エミグナ

私はそれが2。5年だったことを知っていますが、暗黙的にスペースで内部リストを結合するSðý42ô»ためS21ô»、to をゴルフすることができ»ます(整数は214の代わりに255でエンコードされて•1žä¿*•いるため•Å¾$6•
ケビンクルーイッセン

15

CJam、48バイト

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

@MartinEnderとのコラボレーション。この@MartinEnderは、"uilvey"3/文字列を使って3バイトのトリッキーなコードを取り出しました。オンライン通訳

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 REPL124 121 119 113バイト

@ETHproductionsのおかげで6バイト節約

これは、REPL /コンソールに貼り付けて正しい結果を生成できる完全なプログラムです。

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

より冗長

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のみのハート、281バイト

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

これは、nビットごとに色を切り替えることで機能し、console.log機能を使用して色を記録します。

カラーCSSハート、229 + 12バイト

cssの使用が許可されている場合、色付きのハートは、229バイトのJavaScriptコードと12バイトの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?` `:`
`)


私がこのようにした理由は、これが完全なプログラムとみなせるからです。ユーザーが変更する必要があるハードコーディングされた変数はありません。代わりに、これをコピーして貼り付けることができ、そのまま機能します。私はそれをスニペットと呼びますが、完全なプログラムであるかもしれません。考え?
バスドロップCumberwubwubwub 16

これはREPLの動作に依存します。つまり、言語は「Javascript ES6 REPL」(ソース)です。
メゴ

@Megoありがとう、それに応じて私の答えを編集
Bassdrop Cumberwubwubwub

1
私はあなたが両方の場所でaそれを取り除くことができて、ちょうど使うことができるとかなり確信していますnum>>i/64&1、1バイトを節約します。また、++i%21==0?newline:spaceと同じ++i%21?space:newlineです。
-ETHproductions

別のヒント:に変更i=0,r=''i=r=''ます。''自動的に0に強制されます。
ETHproductions16年

9

MATL、56 55バイト

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

オンラインで試す

説明

'!?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バイト

@Megoのおかげで誤ったバイトカウントを修正

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

最短ではなく、異なるアプローチ。私は手動で各行を取得し、それらをそれぞれ(おおよそ)9-11ビットの長さのペアにスライスしました。これらの各バイナリ値をaに変換しchar(注:PowerShellはデフォルトでUTF-8ではなくUTF-16を使用します)、それを文字列に変換しました。それ'...'が最初です。

次に-split、それを長さ2の文字列にし、各ペアをループします。これらのペアは、に分割されchar介し-array $_[0,1]、及びそれらのそれぞれがintとしてキャストされ+$_、そして[convert]バイナリにED( )。,2 Stringそれ-joinは単一の文字列にまとめPadLeftられ、適切な長さを得るためにdされ、各要素は-replaceそれ自身とスペースでdになります'$1 '

これらの文字列はすべてパイプラインに残り、出力は暗黙的で、デフォルトでWrite-Outputは要素間に改行が付けられます。

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 

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

@Megoああ、durr。文字列にUTF-16をカウントしているからといって、コードの残りの部分にUTF-8を魔法のようにカウントできるわけではありません。うん 助けてくれてありがとう。
AdmBorkBork

助けてくれてうれしい:)
Mego

それほど威圧的に見えない場合は、実際にPowerShellターミナルを開いて実行します。
-DaveTheMinion


4

Python 3、147 144バイト

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)

ideoneでテストする

関数宣言でを初期化してiから0、これを23回繰り返し
ます。バイナリ文字列全体をスペースなしで作成します(以下を参照)。
を使用して[i:i+21]、内部から行をスライスします。;で
スペースを挿入します' '.join(...)
プリント; そして、21
ずつ増加しますii+=21

バイナリ文字列全体を作成するには、8回
繰り返し"ilOveyOu"ます。
置き換えるOo、必要に応じて(インデックスで[2,14,18,34,38,46])。
---これは、 各文字を序chr(j+30)in' ,0@DL'数に
変換して3バイトを保存することで実現されます。
各序数をバイナリ文字列('0bxxxxxxx')にキャストします。を使用して、それぞれから
先頭'0b'を削除し[2:]ます。
それぞれの前に'0';を追加します。
全体を結合します''.join(...)


ラムダは必要ありません。やるi=0\nexec(...)か、i=0;exec(...)137バイトのために。
mbomb007

あなたが本当にPythonの3が必要な場合を除き、あなたは変更するPythonの2を使用することができますexec("...")exec"..."してprint(...)print...
mbomb007

3

PHP + HTML + CSS、173バイトの色付き367バイト

CLIのみPHP 173バイト

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

賞金仕様のコンテンツタイプtext / htmlに準拠

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

b{all:unset;color:red}b{all:unset;color:#911;background:red}最初のバージョンではなく

PHP + HTML + CSS、392バイト

よりきれいに見えるハートレッド+ブラック

たぶん、CSSパーツの色番号を呼び出す

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

見栄えが良くなる前にこれを追加してください

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

最初のバージョンを出力します。これは私のライブで最もuいHTMLコードです

赤黒の心

<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

PHPでHTMLページを直接作成するための375バイト

<?$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
ただ、交換color:#911;background:redでは、color:red;それが数バイトを保存するだけでなく、恵みの仕様に準拠します。
エミグナ

3

Powershell、110バイト

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

説明:

スクリプトの最初の行は部分文字列を取得し、Oその間に文字を挿入します。結果は文字列uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOveyです。最初と最後の文字は冗長であることに注意してください。

ループ(8..490)は、文字列の文字から必要なすべてのビットと、スペースまたはラインフィードを出力します。

バレンタインレターの受信者のなぞなぞ

小さいシンボルと大きいシンボルO自体がビットエンコーディングを構成していることがわかります。15個のシンボル(ビット)があります。ASCII文字を取得するためのビット上のパーティションは、oOOooOOO+のみooOoOOO[o]です。最後o0ではなく、小さなものを追加する必要がありました。このASCIIシンボルは次のとおりです。g.

この不思議なのは誰g.


2

PHP、121バイト

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

壊す

$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バイト

解決:

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

例:

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

説明:

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

ノート:

  • -2バイトはngnのおかげです!

1

Python 3、199バイト:

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バイト

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

「Il%svey%su」の文字列の繰り返しを行い、必要な回数繰り返し、次にタプルを使用してすべてのoをサブします。次に、それをバイナリに変換し、textwrapモジュールを使用して、新しい項目を変換しますリストからリストへ、スペースで結合し、スタブまたは何かのように見えるため、0 1 1を追加します


1

Mathematica、123バイト(色付き275)

Grid文字列を出力する代わりに使用してもよいかどうかはわかりません(そうでない場合、これは競合しないエントリです)。

白黒

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

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください


結果gridをプレーンテキストでコピー/貼り付けしてメモ帳に貼り付けることはできますか?どのように見えますか?図が示すように、改行で区切られたスペース(単一スペース)?
スチューウィーグリフィン

1

Ruby 142バイト

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

(少しだけ)読みやすく:

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

Rubyで元のテキストをより簡潔な形式に凝縮する方法はまだ見つかりませんでした-優れた文字列操作関数がいくつかありますが、私が試したすべての方法は文字列自体よりも多くの文字を使用しました。どんなポインターでも感謝します。これはStackOverflowでの私の最初のコードゴルフです!


プログラミングパズルとCode Golf Stack Exchangeへようこそ!文字列を変数(例a)に設定して、それからa+a+a... を試しましたか?さらに良いことに、Rubyが文字列の乗算をサポートしていれば、a*count
wizzwizz4

@ wizzwizz4、文字列は純粋な文字列の繰り返しではありません。:)(そここれかかわらを行うには良い方法がありそうですが、私は考えていないa+a+a方法です)
Stewieグリフィン

知っている!すべて小文字の短いバージョンを作成し、繰り返して、n番目oを大文字に置き換えOます!
wizzwizz4

1

さび、195バイト

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

ゴルフをしていない:

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バイト

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

流れ落ちる

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

オンラインでお試しください!



1

Pyth、47バイト

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

こちらからオンラインでお試しください。

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

C ++ 11、非競合、726 687 636バイト(* NIXまたはW10しきい値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;}

私はこれがもっと良くゴルフできることを知っています。短いc ++の回答を見たいです!

また、ハートセクションをエンコードするときに、いくつかの間違いを犯した可能性もあります。

出力(固定色):

ここに画像の説明を入力してください


ハートセクションのみにメッセージが含まれていると想定したため、すべてをエンコードしました。言うまでもなく、チャレンジを読み直し、asciiで出力の最初の数行をテストしたとき、私は馬鹿のように感じました。

0

Python、473バイト

色付き!

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.translateより良い選択かもしれません
Mego

0

FEU、360バイト

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

ただの愚かな圧縮

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.