seni seviyorum seni seviyorum seni seviyorum


58

"İkili Kalp" başlıklı XKCD # 99 , bazı rakamların kırmızı renkli olduğu, basit ve sıfırdan oluşan bir görüntü gösterir.

görüntü tanımını buraya girin

Kırmızı kalp çıplak gözle görülebilir, ancak ikili sırada gizlenmiş mesaj görünmüyor. Tüm boşlukları ve yeni satırları kaldırır ve ikili diziyi 8 bit ASCII kodu olarak yorumlarsanız, mesajla sonlanırsınız:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv

Şirin değil mi?

Pssst ... Dize saf bir dize tekrarı değil.


Buradaki zorluk bu ikili görüntüyü 21 basamak ve 23 basamak aşağı olacak şekilde oluşturmak. Her satırdaki her hane arasında tam bir boşluk ve her yeni satır için bir satır yeni olmalıdır. Son bitlerin mektubun yalnızca başlangıcı olduğunu unutmayın e, çünkü 21*238 ile bölünemez. Bu bitlerin de doğru olması gerekir.

İşlev veya program herhangi bir giriş yapmamalıdır. Önde gelen ve takip eden alanlar ve yeni satırlar kabul edilir.

Kodunuzun sonucu şöyle görünmelidir:

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

Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.


Liderler Sıralaması


1
Bilmeni isterim ki şimdi bir şekilde bir yolunu bulacağım?
BlueRaja - Danny Pflughoeft 27:16

25
Kalbi oluşturmak için kırmızı ve siyah kullanarak çıktıyı renklendiren en kısa koda bir ödül vereceğim
Beta Decay 21

OASCII çıkış dizesindeki gizli mesajda büyük harflerin ne olduğunu bilmek daha da merak ediyorum !
brandonscript

Hiçbir mesaj yok veya en azından hiçbiri, “büyük harf ve küçük harf“ O ”karışımının tekrar eden bir paternden kaçınmak için kasıtlı olduğu varsayılıyor” diyen açıklamaxkcd.com tarafından keşfedilmedi.
Petr Hudeček

1
@WitingIfFirst Haha, programlama yeteneğimi çok abartıyorsun :). Ben de kazanabildiğimde 100 rep lütufla kazananı ödüllendireceğim
Beta Decay

Yanıtlar:


21

Jelly , 36 33 32 bayt

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

3 byte'lık golf için @JonathanAllan'a teşekkürler!

Çevrimiçi deneyin!

Nasıl çalışır

Ana bağlantı

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

Program çalıştırıldığında niladik olarak yürütülür (yani, herhangi bir argüman olmadan). Dönüş değeri dolaylı olarak yazdırılacaktır.

“ḅUɗaṚPXṙ’

Jelly’in kod sayfasında alıntılanan karakterlerin indekslerini bulun ve bunları 250 Bu, 13021639057551959994 tamsayısını verir .

          B

Oluşturulan tamsayıyı ikiliye dönüştürür. Bu , bir bit sola kaydırılan ilOveyOu dizesinin UTF-8 kodlamasına karşılık gelen 10110100101101100010011110111011001100110010101111001010011110111010 bit dizisini verir .

Kaydırma işlemi gereklidir, çünkü baştaki 0B ile bir bit dizisi döndüremez . Diğer seçenekler arasında ikili sayıları olumsuzlamak veya kareyi tersine hesaplamak sayılabilir, ancak bu yaklaşım bir bayttan tasarruf sağlar.

            ṁ484

Oluşturulan diziyi 1 ila 484 aralığındaki gibi kalıplar , yani, 484 uzunluğunu elde etmek için dizinin içeriğini gerektiği kadar tekrarlar .

Bu, kaymayı hesaba katmamız için ihtiyacımızdan bir parça daha. İlk parçayı şimdi kaldırabiliriz, ancak daha sonra yapmak, değiştirilmek zorunda olan tüm bitlerin bile endekslerde yer alması anlamına gelir; bu, yukarıda belirtilen baytı kurtarmamızı sağlar.

                 “½:J⁺ȤṾ‘Ḥ¤

ve ( [10, 58, 74, 138, 154, 186] ) ve ( [10, 58, 74, 138, 154, 186] ) arasındaki karakterlerin kod noktalarını alır , sonra onları "çıkarır", yani onları 2 ile çarpar ( [20, 116, 148, 276, 308, 372). ] ).

                ¬           ¦

koşullu olarak bu endekslerdeki bitleri olumsuzlar. Bu , orijinal desendeki O / o değişikliklerine karşılık gelir .

En sonunda,

                             Ḋs21G

bit dizisini temizler (ilk biti kaldırarak), kalan diziyi 21 öğenin satırlarına böler ve elde edilen matrisi ızgara olarak yazdırır.


2
OVarsayılan olarak büyük harf yaparak 3 bayttan daha fazla tasarruf edebilirsiniz , bence bunu yapar:“ỊḂr×C)ḃȯ’B¬ṁ483¬“Œ` ° @‘+\¤¦s21G
Jonathan Allan

Doğru, küçük harflerden daha büyük O harfi vardır. Teşekkürler!
Dennis,

4
İşte bu kara büyü neye benziyor ..
Bassdrop Cumberwubwubwub 28:16

2
@BassdropCumberwubwubwub Şimdi onu kırmızı ve kara büyüye dönüştürmek için çaba sarf edilmelidir
Matthew Roh

43

Jöle , 41 40 35 33 bayt

Sonu yaptığınız için @Dennis'e teşekkürler ṖṖCG! (tamamlayıcı C= 1-xmantıksal değil ¬)

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

TryItOnline

Nasıl?

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

"Renkli" sürüm, 77 bayt

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

TryItOnline

Jelly'in renk çıkışı yok, ama yine de görmek benim için çok daha kolay (renk körlüğüm) ...

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

Nasıl?

“¤Ɓ¥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
Kaldırırsanız, ¬son dört bayt olabilir ṖṖCG. :)
Dennis

2
Oh vay, elbette - bu sadece yapılması gerekiyor!
Jonathan Allan

1
Afedersiniz; belki uygun terim nedir complement?
Sherlock9

@ Sherlock9, evet; sabit ve teşekkürler - Her şeyi hecelemiyorum, dolayısıyla heceleme işlemi bayrak yapmazsa kelimeleri yanlış anlarsınız!
Jonathan Allan,

@WeeingIfFirst - Ben kontrol etmedim, ama bunun hala renkli sayılabilecek kadar iyi olduğunu umuyorum.
Jonathan Allan,

42

Aslında, 58 bayt

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

Çevrimiçi deneyin!

açıklama

Burada üç ana bölüm var, o yüzden onu buna göre parçalayacağım.

Bölüm 1: base-256 dizesinin oluşturulması

Aslında, aslında istifleme tabanlı (LIFO) yapısından faydalanmak ve ikili dizideki baştaki sıfırlarla komplikasyonlardan kaçınmak için ters çevrilmiş ikili diziyi oluşturacağız. Bu nedenle, hedef ikili dize, ondalık 110011011101111001000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111011010011110101001100110111011110010001101101001011010101110111101101001111010100110011011101111011000110110100101101010111011110010100111101010011001101110111100100011011010010110101011101111001010011110101001100110111011110110001101101001011010101110111101101001111010100110011011101111001000110110100101101010111011110010100111101010011001101110111101100011011010010110olarak eşdeğerdir 20083405242288679348048842451418880256193335738939042905519679590571514414673488599852759703515507690399267425671627412178904636115120346432419478. Temel- 256'da ( dönüştürme için CP437 karakter tablosunu kullanarak ) karşılık gelen dizedir ♠n≥6û«≥₧ªn≥6û«÷₧ªn≥6û«÷₧ªn÷6û«≥₧ªn≥6û«≥₧ªn÷6û«÷₧ªn≥6û«≥₧ªn÷6û. Orijinal ikili dizgeyi oluşturmak için, base-256 dizgisini (içindeki desenden yararlanarak) oluştururuz ve onlu ve ikili olarak temel dönüşümleri gerçekleştiririz.

Base-256 stringi şu formata sahiptir (netlik için eklenen boşluklar ve yeni satırlar):

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

Böylece, 7 orta bölümün her biri, iskele kullanılarak «%s₧ªn%s6ûve %sparçaların ya veya ile değiştirilmesiyle oluşturulabilir ÷.

İhtiyacımız olan s ve ÷s'nin spesifik dizisi ≥≥÷≥÷÷≥≥≥÷÷≥≥÷. Buna uzunluk-1 dizgelerin bir listesi olarak ihtiyaç duyduğumuzdan, bunu temsil etmenin naif yolu şöyle olacaktır "≥≥÷≥÷÷≥≥≥÷÷≥≥÷"#(dizgiyi itin, bir listeye yerleştirin). Ancak, biraz daha iyisini yapabiliriz. Bu dizgiyi ikili sayı olarak yorumlayarak (burada temsil eder 1ve ÷temsil eder 0), 13542ondalık basarız. Bunu tekrar ikililere dönüştürerek (geleneksel 1s ve 0s'leri kullanarak ) ve bir uzunluk-2 dizgisine indeksleyerek, listeyi naif yöntemden daha az byte kullanarak elde edebiliriz.

: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

Bölüm 2: İkili dosyaya dönüştürme

Bu kısım çok daha kolay. Aslında base-256'yı doğrudan ikili dosyaya dönüştürme kabiliyetine sahip olsaydı, bunu kullanırdık. Ne yazık ki, öyle değil, bu yüzden ondalık bir aracı format olarak kullanmak zorunda kalacağız.

,Aşağıdaki kod içerisinde Kısım 1 kodunu temsil eder - izahat kabilinden amaçlar için, I Bölüm 1 kodunu ikame ziyaretinde ,STDIN'den Part 1 çıkış okuyun. Gerçek son kodun bir parçası değil.

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

Bölüm 3: Biçimlendirme

Buradaki zorluk sadece olduğu gibi ikili dizgenin çıktısını almak olsaydı, biz olurduk. Bununla birlikte, ikili dizgiyi 21 x 23 dikdörtgenin içine almak için hala yapmamız gereken bazı biçimler vardır.

Bölüm 2'deki gibi, ,önceki bölümden çıktıyı temsil eder ve gerçek kodun bir parçası değildir.

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)

Evde izini sürmek isteyenler için bu, Python 3 kodunun eşittir (481 bayt):

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
Bilirsin, böyle bir programlama, beni gerçekten çok gelişmiş ve başarılı programcıların ve hiyerogliflerin kendi tercih ettikleri diller olduğu Mısırlılara inandırıyor. +1
MonkeyZeus

Bu hangi dildi? Ayrıca, bu cevap derlendi mi?
Jack,

@Jack Bu Aslında . Hiçbir derleme söz konusu değil.
Mego

1
@Mego: 0 Siz bir BOSS'unuz, sonra bu kodu yazıyorsunuz
Jack

1
Temel sayıdaki 34 rakamına 34 ihtiyacınız olursa ne olur? (string ekleyen karakter)
Jonathan Allan

22

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

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 sayesinde 2 byte
kurtarıldı Hedi sayesinde 4 byte
kurtarıldı Neil sayesinde 3 5 byte kurtarıldı Neil sayesinde

Renkli sürüm, 249 bayt (237 bayt JS + 12 bayt CSS)

JS kodu ASCII resmini kalp için kalın etiketlerle verir. Kırmızı renklendirmek için 12 bayt CSS gerekir. (Bu bayt sayısı adil mi?)

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
Sen senin yerine değiştirerek bazı bayt kaydedebilirsiniz: s=>s.replace(/./g,'$& '). Hemen hemen aynı özdeş bir çözüm üzerinde çalışıyorum.
Andrakis

1
Could s.replace(/./g,'$& ')ile değiştirilebilir s.split``.join` `?
Hedi

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

1
Bence replace(/./g,(c,i)=>c+=++i%21?' ':'\n')(açıkçası yeni bir satırson kullanarak) daha fazla bayt tasarrufu sağlıyor. Bu fikri ifade etmenin daha da iyi bir yolu olabilir.
Neil

20

05AB1E , 77 54 53 44 43 41 bayt

CP-1252 kodlamasını kullanır .

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

açıklama

’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

Çevrimiçi deneyin!


3
İlgili bir profil resminiz var
06'da atılıyor

3
@tomsmeding: Gerçekten de! Birkaç yıl önce tanıştığımızda bana bir şapka çekti, o yüzden şimdi ben buyum :)
Emigna

Ben 2.5 yıl geçti biliyorum ama olabildiğince golf Sðý42ô»için S21ô»yana »örtülü olarak boşluklarla iç listeleri katılır (ve •1žä¿*•şimdi olmalı •Å¾$6•tamsayılar yerine tabanın-214 artık taban-255 kodlanıyor beri).
Kevin Cruijssen

15

CJam , 48 bayt

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

"uilvey"3/Dize ile zor 3 bayt çıkardı @ Martininder ile işbirliği . Çevrimiçi tercüman .

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 bayt

@ETHproductions sayesinde 6 bayt kurtarıldı

Bu, doğru sonucu elde etmek için REPL / konsoluna yapıştırılabilen tam bir programdır.

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

Daha ayrıntılı

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

Renkli JavaScript sadece kalp, 281 bayt

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

Bu renkler her geçiş yaparak çalışır n bit ve kullanan renkleri günlüğe console.log yeteneği

Renkli CSS Kalp, 229 + 12 bayt

Css kullanımına izin verilirse, renkli kalp 229 bayt JavaScript kodu ve 12 bayt CSS'ye daha da azaltılabilir

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


Nedeni bu şekilde yaptım çünkü bunun tam bir program olduğu düşünülebilir. Kullanıcı tarafından değiştirilmesi gereken hiçbir kodlanmış değişken yoktur, bunun yerine bu kopyala yapıştırılabilir ve olduğu gibi çalışır. Ben pasajı diyorum ama tam bir program olabilir. Düşünceler?
Bassdrop Cumberwubwubwub 27:16

REPL davranışına dayanır, bu, dilin "Javascript ES6 REPL" ( kaynak ) olduğu anlamına gelir .
Mego

@Mego Teşekkürler, cevabımı buna göre düzenledi
Bassdrop Cumberwubwubwub

1
Hem bayttan kurtulabileceğiniz hem de asadece num>>i/64&11 byte tasarruf sağlayabileceğinizden eminim . Ayrıca, ++i%21==0?newline:spaceaynıdır ++i%21?space:newline.
ETHProductions

Diğer bir ipucu: değişimi i=0,r=''için i=r=''; ''otomatik olarak 0'a zorlanır
ETHproductions 6:16

9

MATL, 56 55 bayt

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

Çevrimiçi Deneyin

açıklama

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

@Mego sayesinde düzeltilmiş hatalı bayt sayısı

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

En kısa değil, farklı bir yaklaşım. Her çizgiyi manuel olarak aldım ve her birini (kabaca) 9-11 anlamlı bit uzunluğunda çiftlere ayırdım. Bu ikili değerlerin her birini bir değerine dönüştürdü char(Not: PowerShell, UTF-8'i değil, varsayılan olarak UTF-16'yı kullanır) ve bunu bir dizeye dönüştürür. Bu '...'başlangıçta.

Daha sonra -splituzunluğu 2 olan dizgilere çeviririz ve her bir çift üzerinden döneriz. Bu çiftler bir char-array ile bölünürler $_[0,1]ve her biri bir int +$_olarak kullanılır ve [convert]bir binary ( ,2) olarak düzenlenir String. Yani oluyor -jointek bir dize halinde bir araya ed ardından PadLeft'sonra her unsurdur, uygun uzunluk elde etmek d -replacekendisi ve bir boşlukla d '$1 '.

Bu dizgilerin tümü boru hattında bırakılır ve varsayılan, Write-Outputöğeler arasına yeni bir çizgi yapıştırarak çıktı örtüktür.

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

@Mego Oh, durr. Sadece dize için UTF-16'yı saydığımdan, kodun geri kalanı için sihirli bir şekilde UTF-8'i saydığım anlamına gelmez. Hah. Yardımın için teşekkürler.
AdmBorkBork 28:16


Bu kadar korkutucu görünmediyse, aslında bir PowerShell terminalini açıp çalıştırırdım.
DaveTheMinion,

6

/// , 237 bayt

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

Çevrimiçi deneyin!


4

Python 3, 147 144 bayt

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)

İdeone'da test et

Başlatır iiçin 0işlev bildiriminde, o zaman bu 23 kez tekrar eder:
boşluk (aşağıya bakınız) olmadan bütün ikili dize yapar;
kullanarak içinden bir satır dilimler [i:i+21];
boşlukları ekler ' '.join(...);
yazdırır; ve 21 ile
artışii+=21

Tüm ikili dizeyi yapmak için: sekiz kez
tekrar eder "ilOveyOu";
yerine Oile ogerektiğinde (dizinler [2,14,18,34,38,46]);
- - - bu, chr(j+30)in' ,0@DL'3 bayttan tasarruf sağlamak için gerçekleştirilir
, her karakteri sıralamasına dönüştürür;
sıraları her ikilik bir dizgiye ( '0bxxxxxxx') yazar; her kullanımdaki
öncüyü çıkarır ; her birini a ile hazırlar ; ve her şeyi birleştirir'0b'[2:]
'0'
''.join(...)


Lamdaya ihtiyacın yok. Yapın i=0\nexec(...)veya i=0;exec(...)137 bayt için.
mbomb007

Eğer gerçekten Python 3 gerekmedikçe, değiştirmek Python 2 kullanabilirsiniz exec("...")etmek exec"..."ve print(...)karşıprint...
mbomb007

3

PHP + HTML + CSS, 173 Bayt Renkli 367 Bayt

Yalnızca CLI PHP 173 Bayt

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

ödül spesifik içerik türüne uymak 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}ilk versiyonda yerine

PHP + HTML + CSS, 392 Bayt

daha güzel görünen kalp kırmızı + siyah

Belki CSS Bölümündeki renk numarasını arayın

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

daha güzel görünmeden önce bunu ekle

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

Çıktığım ilk sürüm bu benim canlı çirkin HTML Kodu

kırmızı-siyah kalp

<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 ile HTML Sayfasını oluşturmak için 375 Bayt

<?$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
Sadece değiştirilmesi color:#911;background:redile color:red;birkaç bayt tasarrufu yanı sıra ödül özelliğe de uyan yapar.
Emigna

3

Powershell, 110 bayt

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

Açıklama:

Komut dizisinin ilk satırı alt dizeleri alır ve Oaralarına bir harf ekler . Sonuç, dizgedir uiloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOvey. İlk ve son karakterlerin gereksiz olduğuna dikkat edin.

Döngü, gerekli tüm (8..490)bitleri, karakterin yanı sıra boşluk veya satır beslemesinden verir.

Sevgiliye mektubu alıcının bilmecesi

Küçük ve büyük sembollerin Okendilerinin bit kodlamasını oluşturduğu görülebilir . 15 sembol (bit) vardır. ASCII karakterlerini almak için bitlerde yalnızca bir bölüm var: oOOooOOO+ ooOoOOO[o]. Biz küçük eklemek zorunda oyerine 0sonunda. Bu ASCII sembolleri:g.

Bu gizemli kim g.?


2

PHP, 121 bayt

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

Yıkmak

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

Çözüm:

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

Örnek:

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

Açıklama:

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

Notlar:

  • Ngn sayesinde -2 bayt!

1

Python 3, 199 Bayt:

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 bayt

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" dizgisini tekrarlar, gerekli sayıyı tekrar eder, daha sonra tüm o kelimelerin altını çizmek için bir tuple kullanır. Sonra onu ikiliye çevirir, textwrap modülünü kullanır, yeni öğelerin her bir öğesini dönüştürür listelenecek liste, boşlukla birleşir, sonra 0 1 1 ekler çünkü bu bir saplama veya başka bir şey gibi görünüyor


1

Mathematica, 123 bayt (275 renkli)

GridBir dizge çıktısı yerine kullanmak tamam mı emin değilim (eğer öyleyse bu rekabet dışı bir giriştir).

S / B

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

görüntü tanımını buraya girin

Renk

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

görüntü tanımını buraya girin


Sonuçları griddüz metin olarak kopyalayıp yapıştırmak ve not defterine yapıştırmak mümkün mü? Nasıl görünüyor? Şekilde görüldüğü gibi yeni satırlarla ayrılmış boşluk (tek boşluk)?
Stewie Griffin,

1

Yakut 142 Bayt

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

(Biraz daha fazla) okunaklı olarak:

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

Orijinal metni Ruby'de daha özlü bir formda yoğunlaştırmanın bir yolunu henüz bulamadım - harika bir dize işleme işlevine sahip, ancak denediğim tüm yolların dizeden daha fazla karakter kullanması. Herhangi bir işaretçi, bu benim StackOverflow'daki ilk Code Golf'üm!


Programlama Bulmacaları ve Kod Golf Yığın Değişimine Hoş Geldiniz! Dize bir değişkene (örneğin a) ayarlamayı denediniz a+a+ami , sonra ...? Daha da iyisi, Ruby, dizelerin çarpımını destekliyorsa a*count,!
wizzwizz4

@ wizzwizz4, dize saf dize tekrarı değildir. :) (Bunu yapmanın daha iyi yolları olabilir, ama a+a+ayol olduğunu sanmıyorum )
Stewie Griffin

Biliyorum! Bir küçük harflerden kısa versiyonu olun, o daha sonra n'inci yerini tekrar obir sermaye ile O!
wizzwizz4

1

Pas, 195 bayt

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

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

Bitkin

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

Çevrimiçi deneyin!



1

Pyth, 47 bayt

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

Burada çevrimiçi deneyin .

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 bayt

/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

Çevrimiçi deneyin!


0

C ++ 11, Rekabet etmeyen, 726 687 636 bayt (* NIX veya W10 eşik 2 gerekli)

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

Bunun daha iyi golf oynayabileceğini biliyorum. Kısa bir c ++ cevabı görmek istiyorum!

Ayrıca kalp bölümünü kodlarken muhtemelen birkaç hata yaptım.

Çıktı (renkler sabit):

görüntü tanımını buraya girin


İletiyi yalnızca kalp bölümünün içerdiğini varsaydım, bu yüzden her şeyi kodladım. Söylemeye gerek yok, meydan okumayı okuduğum ve ascii'deki çıktının ilk birkaç satırını test ettiğimde kendimi aptal gibi hissettim.

0

Python, 473 bayt

Renkli!

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.translatedaha iyi bir seçim olabilir
Mego

0

FEU , 360 bayt

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

Sadece aptal sıkıştırma

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.