Beatles Şarkıları ve Altıgenler


30

İki üçgen (yani piramit) şeklindeki programları yazın.

İlki, en az üç karakter taban genişliğinde bir yukarı dönük metin üçgeni olmalıdır. Böylece bir yapıya sahip olacaktı

 X
XXX

veya

  X
 XXX
XXXXX

veya

   X
  XXX
 XXXXX
XXXXXXX

veya daha büyük. Her biri, satır sonlandırıcılarX dışında herhangi bir şey olabilen gerçek kodunuzun karakterleriyle değiştirilir (bu nedenle boşluklar olabilir). Bütün bunlar değiştirilmeli ve üçgen şeklini oluşturmaya yardım eden boşluklar ve yeni satırlar olduğu gibi kalmalıdır.XX

İkinci program, üçgenin aşağı dönük olması dışında, ilk ile aynı boyutta ve şekilde olmalıdır.

Yani eğer ilk programınız benziyorsa

  X
 XXX
XXXXX

o zaman ikinci programın şöyle görünürdü:

yyyyy
 yyy
  y

her birinin ygerçek kodunuzla doldurmanız gereken bir karakter olduğu (muhtemelen kodunuzdan farklı X). Boşluklar ve yeni çizgiler burada da aynı kalmalı.

Senin görevin, bu programları, her bir giriş yapmamak kaydıyla, farklı bir Beatles şarkısının başlığını (stdout veya en yakın alternatife) verecek şekilde yazmak . Bu Wikipedia makalesi , The Beatles için resmi şarkı listemiz olacak. Çıktı tam olarak listelenen başlıklardan biri olmalıdır, örn I Want You (She's So Heavy).

Bununla birlikte, garip üçgen program gereksinimiyle bile bu oldukça kolaydır. Öyleyse, ilk ikisinden, başka bir şarkı adı çıkarması gereken başka bir program oluşturacağız.

İki üçgen programın her birinin üç kopyasını birleştirerek, altıgen şeklinde üçüncü bir program oluşturabiliriz.

İlk programınızın taban genişliği üç olsaydı şöyle olurdu:

 XyyyX
XXXyXXX
yyyXyyy
 yXXXy

Taban genişliği beş olsaydı şöyle olurdu:

  XyyyyyX
 XXXyyyXXX
XXXXXyXXXXX
yyyyyXyyyyy
 yyyXXXyyy
  yXXXXXy

Bu program (diğerleri gibi boşluklarla ve yeni çizgilerle çalıştırıldığında), ilk iki program gibi, başka bir Beatles şarkı adı vermelidir. Ayrıca:

  • Üç programınız farklı şarkı başlıkları çıkarmalı.
  • Sadece sekiz karakter uzunluğunda veya daha uzun karakter başlıklarına izin verilir.
  • Yalnızca birini seçebilirsiniz Revolution, Revolution 1ve Revolution 9başlıklar benzer olmasından.
  • Favori üç Beatles şarkınızı seçmelisiniz. (Peki, dene .)

Gerçek programların gerekli olduğunu unutmayın. İşlevlere izin verilmez. Herhangi bir programda kendi kaynak kodunuzu okumak da yasaktır.

Örnek

İlk programın olsaydı

  A
 AAA
AAAAA

çıktı olabilir Across the Universe.

O zaman ikinci programın

bbbbb
 bbb
  b

çıktı olabilir Revolution.

Sonra altıgen programa birleştirildi

  AbbbbbA
 AAAbbbAAA
AAAAAbAAAAA
bbbbbAbbbbb
 bbbAAAbbb
  bAAAAAb

çıktı olabilir Get Back.

puanlama

En küçük üçgen taban genişliğine sahip gönderim kazanır. Muhtemel bağlar durumunda, üç şarkı başlığının toplam uzunluğuyla yapılan gönderim kazanır.


2
Elbette tiebreaker üç şarkının en iyi seçimi olmalı mı? ;)
Doug McClean

1
Sadece Sp3000'in yöntemini kopyalamadan Python girişi yazmakta zorlanıyorum ( sözdizimsel boşluktan şikayet edeceğimi asla düşünmedim !), Ancak iki üçgeni bir altıgene monte etmek için bir senaryo yazdım. Başkası için faydalı olması durumunda, burada bir Gist'te .
Tim Pederick

@ mbomb007 Üçgen modelinin bir parçası olmayan boşluklar tamam değil.
Calvin'in Hobileri

@TimPederick Altıgen-ifier'inizi çalıştıramadığım için 2 çok satırlı dizgeden başlayarak bir Python betiği yazdım. Birisi kullanmak isterse buraya bakın .
mbomb007 18:15

@ mbomb007 Maalesef, başlığın bir parçası olmadığından takip eden bir alana izin verilmiyor. (Çok sayıda baskı ifadesi eklediği için takip eden bir yeni satıra izin veririm.) Her zamanki backspace politikasından emin değilim ama onlar benim için sorun değil.
Calvin'in Hobileri

Yanıtlar:


18

GolfScript, genişlik = 9 karakter, başlıklar = 33 karakter

Altıgen

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

Baskılar Olsun . (9 karakter)

Çevrimiçi deneyin.

Nasıl çalışır

"Let It Be"İlk satırdaki belirteç , yığında Let It Be dizesini iter .

İkinci satır }, derhal yürütmeyi iptal eden belgesiz bir "süper yorum" ile başlar .

Çıkmadan önce GolfScript yığının içeriğini yazdırır.

X üçgeni

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

Büküm ve Bağırarak yazdırır . (15 karakter)

Çevrimiçi deneyin.

Nasıl çalışır

İlk iki satır "\n }", komutun ;yığından çıkardığı dizgiyi iter .

Kalan satırlar belirteçleri içeren "Twi", "st an"ve "d Shout"dizi itme, büküm ve Shout üç adet.

Çıkmadan önce GolfScript yığının içeriğini yazdırır.

Y üçgen

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

Dün yazdırır . (9 karakter)

Çevrimiçi deneyin.

Nasıl çalışır

Belirteçleri Let, Itve Beonlar hiçbir şey yapmak böylece ilk satırda, tanımsız olduğunu.

Üç aşağıdaki satırları simgeler ihtiva "Yeste", "rda"ve "y"dize itin Dün üç parça halinde.

}Son satırında bir şey yapmaz; program zaten bitmiş olurdu.

GolfScript, çıkmadan önce yığının içeriğini yazdırır.


21

Befunge -93, width = 13 15 , başlıklar = 31 24 karakter

Dün gece elektrik kesintisi, bunu anladığımda bunu güncellememi engelledi, ancak üçgen genişliğini azaltmayı ve şarkı uzunluğunu arttırmayı başardım !

İşaretleme programı: "Dig a Pony", 10 karakter:

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

açıklama

GERÇEKTEN Befunge'nin etrafını saran numaradan yararlandım ve 6. sıradaki boşluğundan dolayı özel olarak "Dig a Pony" i seçtim. Bu hareket için bir program akışına olanak tanır aracılığıyla şarkı adı. Nasıl çalıştığını görmek için çevrimiçi tercümanda deneyin .

Aşağıya dönük program: "Düşersem", 9 karakter:

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


       .

(Dönem yabancıdır ve yalnızca diğer satırların görünmesi için dahil edilir.)

açıklama

Buradaki tek ilgili satırlar ilk ikisidir. Etrafı saran numarayı (komut göstericisi derhal sola gönderilir) bir karakter daha sıkmak için kullandım. İkinci satır şarkı adını yazdırır.

Kombine: "Arabamı sür", 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 

İşte aynı şey, ancak altıgen ve üçgenleri göstermek için çizgiler eklenmiş.

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

açıklama

Aşağı dönük üçgenin üçüncü ve dördüncü çizgileri devreye giriyor. Her iki üçgenin ucunda, komut işaretçisini bu iki satır boyunca hareket ettiren ve "Arabamı sür" komutunu istifin üzerine iten çeşitli yönlendirmeler var. Daha sonra >:#,_@yukarı dönük üçgendeki bit kullanılarak yazdırılır . Bu arada, hem sol hem de sağ yukarı dönük üçgenler kullanılır.

Orada belki daha boş alan kullanmak için bir yol olabilir, ama benim zaman daha iyi diğer sorular harcanmaktadır düşünüyorum. : P


Hmm. PPCG'nin kuralları, eğer bir program en az bir tercümanda çalışıyorsa, geçerli olacaktır. Yine de iyi yer.
El'endia Starman

PPCG'nin bir başka "kuralı", tercümanın, şartnameyi değil dili tanımlamasıdır. Bu nedenle, Befunge kodum esasen geçerlidir.
El'endia Starman

18

Python 2, genişlik = 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#

Evet, peki ... Python.

Python yorumları ile başlar #, bu yüzden satırların çoğu sadece yorumlardır. Yukarı dönük üçgen için, yürütülen tek şey

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

hangi yazdırır Sgt. Pepper's Lonely Hearts Club Band.

Aşağı bakan üçgen için,

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

Bu Yellow Submarinefonksiyon id, baskıdan dolayı basittir.

Ancak programları birleştirdiğimizde, tüm bunlar sırayla yukarıdaki iki satırdır. İlk satır kümeleri sonundan beri id=0falsy şimdi, sonuç bir çakmak ki (Reprise)almak, sonuna kadar Sgt. Pepper's Lonely Hearts Club Band (Reprise)bizim çıkış olarak (Calvin bu tamam dedi ).


15
Bu, Imperial March'ı Beatles şarkısından daha fazla düşündürmeme neden oluyor ...
Calvin'in Hobileri

6
TIE-fighter ses efektini yalnızca bu şekli görerek duyabiliyorum
Fatalize,

@ Calvin'in Hobileri Hahaha. Aslında!
Luis Mendo

17

Kardan adam 1.0.2 , genişlik = 13

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

En sonunda! Snowman'ın başarılı olabileceği bir meydan okuma! : D: D

Eğik çizgiler çoğunlukla estetik amaçlıdır ve büyük çoğunluğu boşluklarla değiştirilebilir (ancak bu onu çok daha sıkıcı gösterebilir). Yorumlar için bazı eğik çizgiler gereklidir.

Program A (çıktı:) Birthday:

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

Bu oldukça basit. İlk karakter ( }) aktif değişkenlerimizi kurar, daha sonra bir sürü yorum / no-op var. Daha sonra ipi saklar "Sun King\n "ve hemen atar (üzerinden *, hiç kullanmadığımız bir permavarda saklayarak). Sonra depolar "Birthday\n".

]]burada bir no-op, çünkü [[ foo ]]Snowman'da bir blok yorum, ancak bundan [[önce bir eşleşme olmadığından ]](programın kendisinde) hiçbir şey yapmıyor. Sonra 8AaLdizenin ilk 8 karakterini alır, sPyazdırır ve [[programın geri kalanını yorumlar (çünkü yine de eşleşme yoktur) ]].

B Programı (çıktı:) Get Back:

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

Bu da oldukça basit. ?}eşittir }( ?basitçe tüm değişkenleri inaktif olarak ayarlar, burada no-op'tur, ancak daha sonra önemli). Sonra dizgiyi depolar, "Get Back"bir grup no-op yapar ( //satırın sonuna kadar her zaman bir yorumdur) ve üzerinden yazdırır sP.

Tam program

Çıktı, tahmin ettin, Sun King1 .

Bu satıra satır satır bakalım:

  • Satır 1

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

    Bu, aktif değişkenlerimizi önceki programlarda olduğu gibi ayarlar ( ?onları açıp kapatmamaları için artık gerekli olduğunu görüyoruz }}). Çizginin geri kalanı yorumlandı.

  • Satır 2-4

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

    Yorumlar ...

  • Satır 5

      "Sun King//"[["Sun King
    

    Burada dizeyi saklıyoruz "Sun King//"ve daha sonra bir blok yorum başlatıyoruz. Bu aslında bir sonraki kadar her şeyi atlar ]].

  • Satır 6

     "*"BirthdaysP/"*"Birthday
    

    Yine de bloğun yorumu içinde ...

  • Satır 7

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

    Burada kod yorumunu yapmak için kısa bir süre blok yorumundan çıkarız 8AaLsP. Bu aslında A programından tekrar kullanılıyor. 8 harften tüm şarkıları seçtiğim için, aynı kodu sadece birleştirilmiş program için kullanabilirim.

    Sonra biraz zorlaşıyor. Bir dahaki sefere blok yorumundan çıktığımızda 8AaLsPtekrar görüyoruz . Ancak bu sefer, tüm değişkenler tanımsız (değişken olarak adlandırılan sptüketme modunda baskı olarak adlandırdık ). Yana aaliki argüman gerektirir ve bu kez sadece bir (vardır 8değişkenler değişmedi), bu hataları ve yaprakları.

    Benzer şekilde, spkarşılaştığında, 8yazdırmanın yanlış tür olduğunu fark eder ve değişkenleri olduğu gibi bırakır.

  • Satır 8-13

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

    Hala bu blok yorumda sıkışmış ...

  • Satır 14

          /"]]8AaLsP[[///
    

    Sonunda, aynı ilk 8-karakter dizisini bir kez daha çağırmaya çalışırız ve bir kez daha başarısız olur ve iki hata daha verir. ( 8Değişkenlerin şimdi olduğu 8 8, şu an için doğru sayıda değişken olduğu aal, ancak yine de doğru tiplerin olmadığı anlamına gelir .)


1: hem de SnowmanExceptionSTDERR'ye dört çalışma zamanı hatası , ancak önemli olmayan meta başına göre .


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)Ama neler olup bittiğini kavramak biraz zorlaştırıyor ...
curiousdannii 18:15

14

> <> , genişlik = 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 

2D dilleri bu zorlukla oldukça iyi vakit geçiriyor.

Yukarı ok

     /


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

Program akışı soldan başlayarak sağa doğru hareket eder. /Yukarı yansıtır ve beri> <> isimli toroidal alttan tekrar görünür. Sonra bir başkasına /çarptık ve tekrar yansıtıyoruz ve karakterleri klawstaCteker teker dizge ""modunda yığına itiyoruz . Son olarak, yukarı doğru yansıtır ve bir >l?!;odöngüyü vururuz; bu, tüm yığını> <> ile yazdırmanın aptalca yolu.

Bu yazdırır Catswalk.

Aşağı ok

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

Temelde aynı şey, karakterleri baştan sona iterek ve program akışını yönlendirmek için aynaları ve okları kullanmak. Bu yazdırır Birthday.

kombine

     /

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

İlgili kısımlar yukarıda (Ortada birçok çizgiyi kestim). /Yukarı okunu kullanarak yukarı doğru yansıtır ve etrafa sarılırız, ancak şimdi aşağı doğru oka sahip olduğumuzdan, kodun bir kısmı yerine uygulanır. Daha sonra ilgili karakterleri yığına itiyoruz ve çıkış döngüsünü aşağı oktan tekrar kullanıyoruz.

Bu yazdırır Hey Jude.


5

Python 2, boyut 21

Konsolu temizlemek VE imleci sol üste taşımak için kullandığımdan, bu program ANSI uyumlu bir terminal (DOS ANSI.SYS'ye özgü) gerektiriyor \x1b[2J. Bunu diğer ANSI terminalleriyle uyumlu hale getirmek için, yazdırın \x1b[1J\x1b[H(bu hala 21 altıgen boyutunda olabilir). Bu bölümü test edemedim, çünkü ANSI çıkış kodlarını basan bir uçbirim yok.

Bence program oldukça havalı görünüyor, radyoaktif sembole benziyor (ASCII gölgelendirmesi renklerin geriye doğru olduğunu ima ediyor) ya da Metroid Prime: Hunters'ın keskin nişancı silahının simgesi.

Bu yaptığımız büyüklüğü 17 formlarını, ama ben unutmuştum id=0yukarı ok içinde. Bunu küçültebileceğimi sanmıyorum, çünkü hepsi bir satırda olmalı ...

Ayrıca, kredi fikir kullanmak için Sp3000 için de geçerli 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"##

Yukarı ok:

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

Aşağı ok:

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

"Hey Jude" en sevdiğim Beatles şarkılarından biri ama gerçekten pek fazla bir şey bilmiyorum. Kullandığım diğer iki şarkıyı hiç duymadım. Sık sık dinlediğim bir tarz değil.


1
1. sadece ANSI.SYS ile \x1b[2Jçalışır ; diğer terminallerde hiçbir şey yapmamalı. Ayrıca, noktalı virgülden sonra bir tam sayı bekliyor. Hem satır hem de sütunu 1 olarak varsayılan yapmak için, kullanın . 2. ve tüm ANSI terminallerinde çalışmalıdır. 3. Linux terminallerinde, terminali sıfırlamak için kullanabilirsiniz . 4. puanınızı artırmaya yardımcı olması durumunda, bir hazır bilgi ESC bayt ile değiştirilebilir. \x1b[;H\x1b[H\x1b[1J\x1b[H\x1b[H\x1b[J\x1bc\x1b
Dennis

@Dennis Bunu temizlediğiniz için teşekkür ederiz. Skorumu daha fazla geliştiremem çünkü yukarı-ok kodunu birden fazla satıra bölmenin bir yolunu bulamıyorum.
mbomb007 19:15

2

C (gcc) , taban genişliği = 17

Sayfanın Üstü, "Hey Jude"

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

Çevrimiçi deneyin!

Altta, "Kibrit Kutusu"

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

Çevrimiçi deneyin!

Altıgen, "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");}///////////;

Çevrimiçi deneyin!


1

gawk, taban uzunluğu 15

Sadece mawk ile çalışmadığını öğrendim : /

Çok zor değil, ama 70'lerde yetişen Beatles hala havada omnipresent, buna cevap vermek zorunda kaldım. İlk önce awk'nin uygun olmadığını düşündüm, ama sonra bana geldi.

Bu komut dosyalarında BEGIN ve / veya END blokları bulunduğundan, END bloğunu yürütecek girdi bulunmayacağı söylenmelidir. Bu, ya başlattıktan sonra Ctrl-D'ye basarak ya da şöyle başlatarak sağlanabilir:

awk -f script.awk </dev/null

bence daha uygun. echo | awk -f script.awkaynı zamanda çalışacak, ancak girdi olarak boş bir satır kullanmış olsaydım, bunu tamamen farklı yapardım.

Yukarı dönük, Hiç Kimseye Yazdırılmaz (Youtube bağlantısı)

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

Yorumsuz temel kod budur. Yana nkendisi tarafından arasa, "Hayır One İçin" yazdırır tanımlı değil.

    BEGIN {
   print n?

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

Aşağı dönük , Blackbird yazdırır

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

Temel kod budur. Daha nönce tanımlanmışsa hiçbir şey yazdırmaz. Her parçanın adından sonra yeni bir satırla güzel bir çıktı aldım, çünkü bunu yapacak yerim vardı ve konsolda daha güzel görünüyordu. nsüreçte tanımlanır; Altıgen için bu gerekli.

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

Altıgen, çok yorgun olduğumu yazdırır

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

Temel kod. Şimdi nihayet bu gizemli nkullanılır. Çünkü nilk satır ile tanımlanmıştır, yukarı bakan üçgen alternatif çıktıyı baskı ve üçgen baskı işaret aşağı doğru boşluk yaratmaktadır.

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