Beatles Songs and Hexagons

30

Tulis dua program berbentuk segitiga (yaitu piramida).

Yang pertama harus berupa segitiga teks yang mengarah ke atas dengan lebar dasar minimum tiga karakter. Jadi itu akan memiliki struktur seperti

 X
XXX

atau

  X
 XXX
XXXXX

atau

   X
  XXX
 XXXXX
XXXXXXX

atau lebih besar. Masing-masing Xharus diganti dengan karakter kode Anda yang sebenarnya, yang bisa berupa apa saja kecuali terminator garis (sehingga Xbisa jadi spasi). SemuaX itu harus diganti dan spasi serta baris baru yang membantu bentuk segitiga diperlukan untuk tetap apa adanya.

Program kedua harus memiliki ukuran dan bentuk yang sama dengan yang pertama, kecuali bahwa segitiga akan mengarah ke bawah.

Jadi jika program pertama Anda terlihat seperti

  X
 XXX
XXXXX

maka program kedua Anda akan terlihat seperti

yyyyy
 yyy
  y

di mana masing y- masing adalah karakter yang perlu Anda isi dengan kode Anda yang sebenarnya (mungkin berbeda dari Xkode Anda ). Spasi dan baris baru harus tetap sama di sini juga.

Tugas Anda adalah menulis program-program ini sedemikian rupa sehingga masing-masing menghasilkan (ke stdout atau alternatif terdekat) judul lagu Beatles yang berbeda , tanpa mengambil input apa pun. Artikel Wikipedia ini akan berfungsi sebagai daftar lagu resmi kami untuk The Beatles. Outputnya harus salah satu judul persis seperti yang tercantum, misalnya I Want You (She's So Heavy).

Ini sangat mudah, namun, bahkan dengan persyaratan program segitiga aneh. Jadi kita akan membentuk program lain dari dua yang pertama yang harus menampilkan lagi judul lagu.

Dengan menggabungkan tiga salinan dari masing-masing dua program segitiga kita dapat membuat program ketiga berbentuk seperti segi enam.

Jika lebar dasar program pertama Anda adalah tiga, itu akan terlihat seperti ini:

 XyyyX
XXXyXXX
yyyXyyy
 yXXXy

Jika lebar dasar lima, itu akan terlihat seperti ini:

  XyyyyyX
 XXXyyyXXX
XXXXXyXXXXX
yyyyyXyyyyy
 yyyXXXyyy
  yXXXXXy

Program ini (ketika dijalankan dengan spasi dan baris baru seperti yang lain) harus menampilkan judul lagu Beatles lain, sama seperti dua program pertama. Juga:

  • Tiga program Anda harus menampilkan judul lagu yang berbeda.
  • Hanya judul lagu yang panjangnya delapan karakter atau lebih yang diizinkan.
  • Anda hanya dapat memilih salah satunya Revolution, Revolution 1dan Revolution 9karena judulnya sangat mirip.
  • Anda harus memilih tiga lagu Beatles favorit Anda. (Yah, cobalah .)

Perhatikan bahwa program aktual diperlukan. Fungsi tidak diizinkan. Membaca kode sumber Anda sendiri di program apa pun juga tidak diperbolehkan.

Contoh

Jika program pertama Anda

  A
 AAA
AAAAA

itu bisa keluar Across the Universe.

Kemudian program kedua Anda

bbbbb
 bbb
  b

bisa output Revolution.

Kemudian digabungkan menjadi program segi enam

  AbbbbbA
 AAAbbbAAA
AAAAAbAAAAA
bbbbbAbbbbb
 bbbAAAbbb
  bAAAAAb

mungkin outputnya Get Back.

Mencetak gol

Pengajuan dengan lebar dasar segitiga terkecil akan menang. Dalam kasus yang berkaitan dengan pengikatan, pengajuan dengan jumlah total terbesar dari tiga judul lagunya menang.

Hobi Calvin
sumber
2
Tentunya tiebreak harus menjadi pilihan terbaik dari tiga lagu? ;)
Doug McClean
1
Saya mengalami kesulitan menulis entri Python tanpa hanya menyalin metode Sp3000 (tidak pernah berpikir saya akan mengeluh tentang spasi putih sintaksis!), Tapi saya menulis naskah untuk merangkai dua segitiga menjadi segi enam. Dalam hal ini berguna untuk orang lain, ini dia di Intisari .
Tim Pederick
@ mbomb007 Ruang tertinggal bukan bagian dari pola segitiga tidak ok.
Calvin Hobbies
@TimPederick Karena saya tidak bisa membuat hexagon-ifier Anda berfungsi, saya menulis skrip Python untuk melakukannya dimulai dengan 2 string multi-line. Lihat di sini jika ada yang ingin menggunakannya.
mbomb007
@ mbomb007 Maaf tapi spasi tambahan tidak diizinkan karena ini bukan bagian dari judul. (Saya akan mengizinkan baris baru karena banyak pernyataan cetak menambahkan satu.) Saya tidak yakin tentang kebijakan backspace yang biasa tetapi mereka setuju dengan saya.
Calvin Hobbies

Jawaban:

18

GolfScript, lebar = 9 karakter, judul = 33 karakter

Segi enam

    "Let It Be"
   }";"Yeste"}";      
  "Twi""rda""Twi"
 "st an""y""st an"
"d Shout"}"d Shout"
Let It Be"Let It Be
 "Yeste"}";"Yeste"
  "rda""Twi""rda"
   "y""st an""y"
    }"d Shout"}

Cetakan Let It Be . (9 karakter)

Cobalah online.

Bagaimana itu bekerja

Token "Let It Be"pada baris pertama mendorong string Let It Be on the stack.

Baris kedua dimulai dengan }, "komentar super" tanpa dokumen yang membatalkan eksekusi segera.

Sebelum keluar, GolfScript mencetak isi tumpukan.

Segitiga X

    "
   }";
  "Twi"
 "st an"
"d Shout"

Mencetak Twist and Shout . (15 karakter)

Cobalah online.

Bagaimana itu bekerja

Dua baris pertama mendorong string "\n }", yang ;dibuang oleh perintah dari stack.

Baris yang tersisa berisi token "Twi", "st an"dan "d Shout", yang mendorong string Twist dan Shout menjadi tiga bagian.

Sebelum keluar, GolfScript mencetak isi tumpukan.

Segitiga Y

Let It Be
 "Yeste"
  "rda"
   "y"
    }

Cetakan Kemarin . (9 karakter)

Cobalah online.

Bagaimana itu bekerja

Token Let, Itdan Bepada baris pertama tidak ditentukan, sehingga mereka tidak melakukan apa pun.

Tiga baris berikut berisi token "Yeste", "rda"dan "y", yang mendorong string Kemarin dalam tiga bagian.

Baris }terakhir tidak melakukan apa-apa; program akan selesai pula.

Sekali lagi, GolfScript mencetak isi tumpukan sebelum keluar.

Dennis
sumber
21

Befunge -93, lebar = 13 15 , judul = 31 24 karakter

Pemadaman listrik semalam mencegah saya memperbarui ini ketika saya menemukannya, tapi saya berhasil mengurangi lebar segitiga dan menambah panjang lagu!

Program pengarah: "Dig a Pony", 10 karakter:

      v
     v> 
    v#  >
   "<     
  v <>"y"v>
 <v"Dig a P"
"^>:#,_@.>"no

Penjelasan

Saya BENAR-BENAR memanfaatkan trik Befunge dan saya memilih "Dig a Pony" secara khusus karena memiliki ruang di posisi ke-6. Ini memungkinkan aliran program untuk berpindah melalui nama lagu. Cobalah di penerjemah online untuk melihat cara kerjanya.

Program menunjuk-down: "If I Fell", 9 karakter:

< v"f I Fell"
 v>"I">:#,_@
  "raC yM "
   v"Drive


       .

(Periode tidak termasuk dan hanya dimasukkan untuk membuat garis lain muncul.)

Penjelasan

Satu-satunya baris yang relevan di sini adalah dua yang pertama. Saya menggunakan trik wrap-around (penunjuk instruksi dikirim segera kiri) untuk memeras dalam satu karakter lagi. Baris kedua mencetak nama lagu.

Gabungan: "Drive My Car", 12 karakter:

      v< v"f I Fell"v
     v> v>"I">:#,_@v> 
    v#  >"raC yM "v#  >
   "<     v"Drive"<     
  v <>"y"v>     v <>"y"v>
 <v"Dig a P"   <v"Dig a P"
"^>:#,_@.>"no "^>:#,_@.>"no
< v"f I Fell"v< v"f I Fell"
 v>"I">:#,_@v> v>"I">:#,_@
  "raC yM "v#  >"raC yM "
   v"Drive"<     v"Drive
         v <>"y"v>     
        <v"Dig a P"   
       "^>:#,_@.>"no 

Ini hal yang sama, tetapi dengan garis yang ditambahkan untuk menunjukkan segi enam dan segitiga.

       -----------------
      /v\< v"f I Fell"/v\
     /v> \v>"I">:#,_@/v> \
    /v#  >\"raC yM "/v#  >\
   /"<     \v"Drive/"<     \
  /v <>"y"v>\     /v <>"y"v>\
 /<v"Dig a P"\   /<v"Dig a P"\
/"^>:#,_@.>"no\ /"^>:#,_@.>"no\
-------------------------------
\< v"f I Fell"/v\< v"f I Fell"/
 \v>"I">:#,_@/v> \v>"I">:#,_@/
  \"raC yM "/v#  >\"raC yM "/
   \v"Drive/"<     \v"Drive/
    \     /v <>"y"v>\     /
     \   /<v"Dig a P"\   /
      \ /"^>:#,_@.>"no\ /
       -----------------

Penjelasan

Di sinilah garis ketiga dan keempat dari segitiga menunjuk-ikut bermain. Ada beberapa pengalihan di tepi kedua segitiga yang berfungsi untuk memindahkan penunjuk instruksi melalui dua garis dan mendorong "Drive My Car" ke tumpukan. Kemudian dicetak menggunakan >:#,_@bit dalam segitiga menunjuk-up. Kebetulan, kedua kiri dan kanan menunjuk-up segitiga digunakan.

Ada mungkin menjadi cara untuk menggunakan lebih dari ruang kosong, tapi saya pikir waktu saya lebih baik dihabiskan untuk pertanyaan lain. : P

El'endia Starman
sumber
Hmm. Aturan PPCG adalah bahwa jika sebuah program bekerja di setidaknya satu penerjemah, maka itu valid. Tempat yang bagus.
El'endia Starman
"Aturan" lain dari PPCG adalah bahwa penerjemah menentukan bahasa, bukan spesifikasinya. Dengan demikian, kode Befunge saya, pada dasarnya, valid.
El'endia Starman
18

Python 2, lebar = 51

                         #print "Yellow Submarine" if id else "(Reprise)"   ##
                        #.##...............................................##.#
                       #...##.............................................##...#
                      #.....##...........................................##.....#
                     #.......##.........................................##.......#
                    #.........##.......................................##.........#
                   #...........##.....................................##...........#
                  #.............##...................................##.............#
                 #...............##.................................##...............#
                #.................##...............................##.................#
               #...................##.............................##...................#
              #.....................##...........................##.....................#
             #.......................##.........................##.......................#
            #.........................##.......................##.........................#
           #...........................##.....................##...........................#
          #.............................##...................##.............................#
         #...............................##.................##...............................#
        #.................................##...............##.................................#
       #...................................##.............##...................................#
      #.....................................##...........##.....................................#
     #.......................................##.........##.......................................#
    #.........................................##.......##.........................................#
   #...........................................##.....##...........................................#
  #.............................................##...##.............................................#
 #...............................................##.##...............................................#
print "Sgt. Pepper's Lonely Hearts Club Band",;id=0#print "Sgt. Pepper's Lonely Hearts Club Band",;id=0
print "Yellow Submarine" if id else "(Reprise)"   ##print "Yellow Submarine" if id else "(Reprise)"   #
 #...............................................##.##...............................................#
  #.............................................##...##.............................................#
   #...........................................##.....##...........................................#
    #.........................................##.......##.........................................#
     #.......................................##.........##.......................................#
      #.....................................##...........##.....................................#
       #...................................##.............##...................................#
        #.................................##...............##.................................#
         #...............................##.................##...............................#
          #.............................##...................##.............................#
           #...........................##.....................##...........................#
            #.........................##.......................##.........................#
             #.......................##.........................##.......................#
              #.....................##...........................##.....................#
               #...................##.............................##...................#
                #.................##...............................##.................#
                 #...............##.................................##...............#
                  #.............##...................................##.............#
                   #...........##.....................................##...........#
                    #.........##.......................................##.........#
                     #.......##.........................................##.......#
                      #.....##...........................................##.....#
                       #...##.............................................##...#
                        #.##...............................................##.#
                         #print "Sgt. Pepper's Lonely Hearts Club Band",;id=0#

Ya, baik ... Python.

Komentar python dimulai dengan #, jadi mayoritas baris hanyalah komentar. Untuk segitiga yang menghadap ke atas, satu-satunya hal yang dijalankan adalah

print "Sgt. Pepper's Lonely Hearts Club Band",;id=0

yang mencetak Sgt. Pepper's Lonely Hearts Club Band.

Untuk segitiga menghadap ke bawah, kami jalankan

print "Yellow Submarine" if id else "(Reprise)"

yang mencetak Yellow Submarine, karena fungsinya idbenar.

Namun ketika kami menggabungkan program, yang terjadi hanyalah dua baris di atas secara berurutan. Karena akhir dari set baris pertama id=0, yang sekarang palsu, hasil akhirnya adalah bahwa kita memasang a(Reprise) to the end, mendapatkan Sgt. Pepper's Lonely Hearts Club Band (Reprise)sebagai output kami (Calvin mengatakan ini baik-baik saja ).

Sp3000
sumber
15
Ini membuat saya memikirkan Imperial March lebih dari lagu Beatles ...
Calvin's Hobbies
6
Saya bisa mendengar efek suara pejuang TIE hanya dengan melihat bentuk ini
Fatalize
@ Calvin Hobi Hahaha. Memang!
Luis Mendo
17

Snowman 1.0.2 , width = 13

      }?}///////////}
     ///"Get Back"////
    ///////////////////
   /////////////////////
  "Sun King//"[["Sun King
 "*"BirthdaysP/"*"Birthday
"]]8AaLsP[[///"]]8AaLsP[[//
?}///////////}?}///////////
 "Get Back"////"Get Back"/
  ///////////////////////
   /////////////////////
    //"[["Sun King//"[[
     sP/"*"BirthdaysP/
      /"]]8AaLsP[[///

Akhirnya!Sebuah tantangan di mana Snowman dapat berkembang! :DD

Garis miring sebagian besar untuk tujuan estetika, dan sebagian besar dapat diganti dengan spasi (tapi itu akan membuatnya terlihat jauh lebih membosankan). Beberapa garis miring diperlukan, untuk komentar.

Program A (keluaran:) Birthday:

      }
     ///
    /////
   ///////
  "Sun King
 "*"Birthday
"]]8AaLsP[[//

Yang ini cukup sederhana. Karakter pertama ( }) mengatur variabel aktif kami, lalu ada banyak komentar / no-op. Ini kemudian menyimpan string "Sun King\n "dan segera membuangnya (via *, menyimpannya di permavar yang tidak pernah kita gunakan). Lalu toko itu"Birthday\n" .

]]adalah no-op di sini, karena [[ foo ]]merupakan komentar blok di Snowman, tetapi karena tidak ada yang cocok [[sebelum ini ]](dalam program A sendiri), itu tidak melakukan apa-apa. Kemudian 8AaLambil 8 karakter pertama dari string, sPcetak, dan [[komentar sisa program (karena sekali lagi, tidak ada yang cocok ]].

Program B (keluaran:) Get Back:

?}///////////
 "Get Back"/
  /////////
   ///////
    //"[[
     sP/
      /

Yang ini juga cukup mudah. ?}setara dengan }( ?cukup setel semua variabel ke tidak aktif, yang merupakan larangan di sini tapi sekali lagi, penting nanti). Kemudian ia menyimpan string "Get Back", melakukan banyak no-ops ( //sampai akhir baris selalu komentar), dan mencetak melaluisP .

Program lengkap

Output adalah, Anda dapat menebaknya, Sun King1 .

Mari kita lihat baris ini per baris:

  • Baris 1

          }?}///////////}
    

    Ini mengatur variabel aktif kami, sama seperti program sebelumnya (kita dapat melihat sekarang bahwa ? diperlukan agar tidak hanya mengaktifkannya dan kemudian mundur dengan }}). Sisa kalimat dikomentari.

  • Baris 2-4

         ///"Get Back"////
        ///////////////////
       /////////////////////
    

    Komentar ...

  • Baris 5

      "Sun King//"[["Sun King
    

    Di sini kita menyimpan string "Sun King//", dan kemudian memulai komentar blokir. Ini pada dasarnya melewatkan semuanya sampai yang berikutnya]] .

  • Baris 6

     "*"BirthdaysP/"*"Birthday
    

    Masih di dalam blok komentar ...

  • Jalur 7

    "]]8AaLsP[[///"]]8AaLsP[[//
    

    Di sini kita keluar dari blok komentar untuk waktu yang singkat, untuk mengeksekusi kode 8AaLsP . Ini sebenarnya digunakan kembali dari program A. Karena saya memilih semua lagu yang panjangnya 8 huruf, saya cukup menggunakan kode yang sama untuk program gabungan.

    Maka itu akan sedikit rumit. Lain kali kita muncul dari blok komentar, kita lihat 8AaLsPlagi. Namun, kali ini, semua variabel tidak ditentukan (kami menyebutnya sp, mencetak, dalam mode konsumsi, yang menghilangkan variabel). Karena aalmemerlukan dua argumen, dan kali ini hanya memiliki satu (8 ), kesalahan dan membiarkan variabel tidak berubah.

    Demikian pula, spmenemukan 8, menyadari itu jenis yang salah untuk dicetak, dan membiarkan variabel apa adanya.

  • Baris 8-13

    ?}///////////}?}///////////
     "Get Back"////"Get Back"/
      ///////////////////////
       /////////////////////
        //"[["Sun King//"[[
         sP/"*"BirthdaysP/
    

    Masih terjebak di blok komentar itu ...

  • Baris 14

          /"]]8AaLsP[[///
    

    Akhirnya, kami mencoba memanggil urutan print-first-8-chars yang sama sekali lagi, dan gagal sekali lagi, menghasilkan dua kesalahan lagi. ( 8Berarti bahwa variabel sekarang 8 8, yang merupakan jumlah variabel yang benar untuk aalsaat ini, tetapi masih bukan tipe yang tepat.)


1: serta empat kesalahan runtime SnowmanExceptionke STDERR, tetapi sesuai meta itu tidak masalah .

Gagang pintu
sumber
The slashes are mostly for aesthetic purposes, and the majority of them can be replaced with spaces (but that would make it look a whole lot more boring)Tapi itu membuat sedikit lebih sulit untuk memahami apa yang terjadi ...
curiousdannii
14

> <> , width = 11

     /"yadhtri"\ /
           v"B"/   
        ?!;>ol      
  duJ yeH" /"eduJ yeH
 o   >l?!;   o   >l?!;
staC"/"klaw staC"/"klaw
"yadhtri"\ /"yadhtri"\ 
     v"B"/       v"B"/
  ?!;>ol      ?!;>ol 
   " /"eduJ yeH" /"e
       o   >l?!;   
      staC"/"klaw 

Bahasa 2D memiliki waktu yang cukup baik dengan tantangan ini.

Panah ke atas

     /


  duJ yeH
 o   >l?!;
staC"/"klaw

Aliran program dimulai dari kiri atas, bergerak ke kanan. The /mencerminkan up, dan karena> <> yaitu toroidal kita muncul kembali dari bawah. Kami kemudian menekan yang lain /dan memantulkan lagi, dan mendorong karakter klawstaCsatu per satu ke tumpukan dalam ""mode string . Akhirnya, kami memantulkan ke atas dan menekan satu >l?!;olingkaran, yang merupakan cara idiomatis untuk mencetak seluruh tumpukan di> <>.

Ini mencetak Catswalk.

Panah bawah

"yadhtri"\ 
     v"B"/
  ?!;>ol 
   " /"e

Pada dasarnya hal yang sama, mendorong karakter dari yang pergi dan menggunakan mirror dan panah untuk mengarahkan aliran program. Ini mencetakBirthday .

Gabungan

     /

  ?!;>ol      ?!;>ol 
     /"eduJ yeH" / 

Bagian yang relevan ada di atas (saya sudah memotong banyak garis di tengah). Dengan menggunakan /dari panah ke atas, kita merefleksikan ke atas dan membungkus, tetapi karena sekarang kita memiliki panah ke bawah di bawahnya, bagian dari kode itu yang dieksekusi sebagai gantinya. Kami kemudian mendorong karakter yang relevan ke tumpukan, dan menggunakan kembali loop output dari panah ke bawah.

Ini mencetak Hey Jude.

Sp3000
sumber
5

Python 2, ukuran 21

Program ini membutuhkan terminal yang kompatibel dengan ANSI (DOS ANSI.SYS untuk lebih spesifik), karena saya gunakan \x1b[2Juntuk menghapus konsol DAN memindahkan kursor ke kiri atas. Untuk membuat ini kompatibel dengan terminal ANSI lainnya, cetak\x1b[1J\x1b[H (ini masih bisa masuk dalam ukuran 21 segi enam). Saya tidak dapat menguji bagian ini, karena saya tidak memiliki terminal yang mencetak kode pelarian ANSI.

Saya pikir program ini terlihat sangat keren, mirip dengan simbol radioaktif (meskipun bayangan ASCII menyiratkan warna-warna yang terbalik) atau ikon senjata penembak jitu dari Metroid Prime: Hunters.

Ini memang cocok dalam ukuran 17, tapi aku lupa id=0di panah. Saya tidak berpikir saya dapat mengecilkannya kembali, karena itu semua harus pada satu baris ...

Selain itu, kredit diberikan ke Sp3000 untuk penggunaan ide id.

          #exec('print"'       ##
         ###'\x1b[2J"+(id '   ####
        #####'and"Hey Ju'    ######
       #######'de"or"Ca'    ########
      #########'tswalk'    ##########
     ###########'")')     ############
    ##############       ##############
   ################     ################
  ##################   ##################
 #################### ####################
id=0;print"Birthday"##id=0;print"Birthday"#
exec('print"'       ##exec('print"'       #
 '\x1b[2J"+(id '   ####'\x1b[2J"+(id '   #
  'and"Hey Ju'    ######'and"Hey Ju'    #
   'de"or"Ca'    ########'de"or"Ca'    #
    'tswalk'    ##########'tswalk'    #
     '")')     ############'")')     #
      #       ###############       #
       #     #################     #
        #   ###################   #
         # ##################### #
          #id=0;print"Birthday"##

Panah Atas:

          #
         ###
        #####
       #######
      #########
     ###########
    #############
   ###############
  #################
 ###################
id=0;print"Birthday",

Panah Bawah:

exec('print"'       #
 '\x1b[2J"+(id '   #
  'and"Hey Ju'    #
   'de"or"Ca'    #
    'tswalk'    #
     '")')     #
      #       #
       #     #
        #   #
         # #
          #

"Hey Jude" adalah salah satu lagu Beatles favorit saya, tapi saya benar-benar tidak tahu banyak. Saya belum pernah mendengar dua lagu lainnya yang saya gunakan. Itu bukan genre yang sering saya dengarkan.

mbomb007
sumber
1
1. hanya\x1b[2J bekerja dengan ANSI.SYS; seharusnya tidak melakukan apa pun di terminal lain. Juga, mengharapkan bilangan bulat setelah titik koma. Untuk membuat baris dan kolom menjadi default 1, gunakan . 2. dan harus bekerja pada semua terminal ANSI. 3. Pada terminal Linux, Anda cukup menggunakan untuk mengatur ulang terminal. 4. dapat diganti dengan byte ESC literal, dalam kasus yang membantu meningkatkan skor Anda. \x1b[;H\x1b[H\x1b[1J\x1b[H\x1b[H\x1b[J\x1bc\x1b
Dennis
@ Dennis Terima kasih telah menjelaskannya. Saya masih tidak akan dapat meningkatkan skor saya, karena saya tidak dapat menemukan cara untuk memecah kode panah atas ke beberapa baris.
mbomb007
2

C (gcc) , lebar alas = 17

Top, "Hei Jude"

        s
       ;//
      s;///
     main(//
    ){puts(//
   #define T//
  s?"Michell"//
 "e":"Hey Jud"//
"e");}///////////

Cobalah online!

Bawah, "Kotak korek api"

s=1;/////////////
 #ifndef T//////
  main(){puts//
   ("Matchb"//
    "ox");}//
     # endif
      /////
       //\
        ;

Cobalah online!

Hexagon, "Michelle"

        ss=1;/////////////s
       ;//#ifndef T//////;//
      s;///main(){puts//s;///
     main(//("Matchb"//main(//
    ){puts(//"ox");}//){puts(//
   #define T//# endif#define T//
  s?"Michell"///////s?"Michell"//
 "e":"Hey Jud"////\"e":"Hey Jud"//
"e");}///////////;"e");}///////////
s=1;/////////////ss=1;/////////////
 #ifndef T//////;//#ifndef T//////
  main(){puts//s;///main(){puts//
   ("Matchb"//main(//("Matchb"//
    "ox");}//){puts(//"ox");}//
     # endif#define T//# endif
      /////s?"Michell"///////
       //\"e":"Hey Jud"////\
        ;"e");}///////////;

Cobalah online!

gastropner
sumber
1

melongo, panjang pangkal 15

Baru tahu itu tidak bekerja dengan mawk : /

Ini tidak terlalu rumit, tetapi tumbuh di tahun 70-an, dengan The Beatles masih ada di udara, saya harus menjawab ini. Pertama saya pikir awk tidak cocok, tetapi kemudian datang kepada saya.

Karena skrip ini berisi blok BEGIN dan / atau END, mereka perlu diberi tahu bahwa tidak akan ada input untuk menjalankan blok END. Ini dapat dicapai dengan menekan Ctrl-D setelah memulai, atau memulainya seperti ini:

awk -f script.awk </dev/null

yang menurut saya lebih nyaman. echo | awk -f script.awkjuga akan berfungsi, tetapi jika saya akan menggunakan baris kosong sebagai input saya akan melakukan ini sama sekali berbeda.

Menunjuk ke atas, mencetak Untuk Tidak Ada (tautan Youtube)

       #
      # #
     #   #
    BEGIN {
   print n?#
  #         #
 n"So Tired":#
n="For No One"}

Kode penting tanpa komentar adalah ini. Karena ntidak didefinisikan, ia mencetak "For No One" jika dipanggil sendiri.

    BEGIN {
   print n?

 n"So Tired":
n="For No One"}

Menunjuk ke bawah, mencetak Blackbird

END{a="Blackb"#
 a=n?_:a"ird"#
  printf a  #
   n="I'm "#
    if(a) #
     print
      } #
       #

Kode dasarnya adalah ini. Jika nditentukan sebelum tidak mencetak apa pun. Saya menerapkan output yang bagus dengan baris baru setelah setiap nama trek, karena saya punya ruang untuk melakukan itu dan itu terlihat lebih bagus di konsol. ndidefinisikan dalam proses; itu dibutuhkan untuk Hexagon.

END{a="Blackb"
 a=n?_:a"ird"
  printf a
   n="I'm "
    if(a)
     print
      }

Hexagon, cetakan aku sangat lelah

       #END{a="Blackb"##
      # #a=n?_:a"ird"## #
     #   #printf a  ##   #
    BEGIN {n="I'm "#BEGIN {
   print n?#if(a) #print n?#
  #         #print#         #
 n"So Tired":#} #n"So Tired":#
n="For No One"}#n="For No One"}
END{a="Blackb"##END{a="Blackb"#
 a=n?_:a"ird"## #a=n?_:a"ird"#
  printf a  ##   #printf a  #
   n="I'm "#BEGIN {n="I'm "#
    if(a) #print n?#if(a) #
     print#         #print
      } #n"So Tired":#} #
       #n="For No One"}#

Kode penting. Sekarang akhirnya misterius nitu digunakan. Karena ndidefinisikan di baris pertama, segitiga menunjuk ke atas mencetak output alternatif, dan segitiga menunjuk ke bawah mencetak kekosongan.

    BEGIN {n="I'm "
   print n?

 n"So Tired":
n="For No One"}
END{a="Blackb"
 a=n?_:a"ird"
  printf a  
   n="I'm "
    if(a) 
     print
      } 
Cabbie407
sumber