İkilemlerin Programlanması (Kelimenin tam anlamıyla)


33

Cevabı 've' kelimesiyle ayrılabilen iki makul derecede doğru (ancak potansiyel olarak zekice) kelime veya kelime öbeği içeren düz İngilizce dilinde yazılmış bir soru düşünün:

S: Bir madalyonun iki yüzü nedir? A: kafalar ve kuyruklar

S: Seyahat etmenin en iyi yolları nelerdir? A: uçak ve jetpack

S: Neden kuzgunlar yazı masası gibi? C: Çünkü her ikisinde de 'b' var, ikisinde de 'n' yok

Hedef

Normal çalıştırıldığında böyle bir soru çıktısı veren bir program yazın.

Diğer her karakter ikinci programdan başlayarak programdan çıkarıldığında ve sonuç yeniden çalıştırıldığında, çıktı cevapta "ve" nin solunda ne olursa olsun olmalıdır .

Diğer her karakter ilk programdan başlayarak programdan çıkarıldığında ve sonuç yeniden çalıştırıldığında, çıktı cevapta 've' nin sağında ne olursa olsun olmalıdır .

('Ve' kendisi çıktı değildir.)

Örnek

Program ise

A1B2C3D4E5F6G7H8I9

ve çıktı

What are the two sides of a coin?

Sonra çıktısı ABCDEFGHIolmalı headsve çıktısı 123456789olmalı tails.

Soru ve cevaplarla ilgili kurallar

  • Örnek sorularımı kullanabilirsin ama kendi kararını vermeni tavsiye ediyorum.
  • Soru ve iki cevap bölümü:
    • hepsi farklı olmalı
    • Dilbilgisi açısından anlamlı İngilizce olmalı
    • yalnızca yazdırılabilir ASCII içerebilir (hex 20 ila 7E)
  • İdeal olarak, soru büyük harfle yazılacak ve noktalanacaktır (ancak cevapların olması gerekmez).
  • Soru en az 30 karakter uzunluğunda olmalı ve entropi 3.5 veya üzerinde olmalıdır. (Dize yazın, hesapla tuşuna basın , son H (X) 'i arayın .)
  • İki cevap bölümünün (aralarındakileri içermeyen [space]and[space]), her birinin üzerinde entropi veya 2'ye eşit en az 5 karakter olmalıdır.
  • 'Ve' kelimesi her iki cevap kısmında da görünebilir.

Kod ile ilgili kurallar

  • 3 kod snippet'inden hiçbiri şunları yapamaz:
    • derleyici / tercüman tarafından geleneksel olarak göz ardı edilen yorumlar veya başka herhangi bir şey içermelidir (fazladan bir noktalı virgül ya da ikisini koymak konusunda endişelenmeyin, ancak bunun bir yorum olduğunu düşünüyorsanız)
    • yürütmenin ortasında programdan çık
  • Kod, Unicode ve yazdırılamayan ASCII dahil olmak üzere herhangi bir karakter içerebilir.
  • Tek veya çift sayıda karakter içerebilir.
  • Çıktı stdout'a ya da bir dosyaya ya da makul görünen her şeye gider. Giriş yok.

puanlama

Golf cevaplarını teşvik etmek istemediğimden ama daha akıllıca cevapları daha fazla teşvik etmek istediğim için puanlama, kod golf ile popülerlik yarışması arasında bir şey olacak:

Puan = (upvotes - downvotes) - floor((bytes in code that outputs question) / 3)

En yüksek puan kazanır.

( Bir bayt sayacı olarak http://mothereff.in/byte-counter kullanın .)


6
Gah, bu JavaScript gibi "normal" bir dilde yapmak çok zor. Alabileceğim en uzak şey gibi bir şey x0=00;;. Büyük zorluk!
Doorknob

@Doorknob teknenizi söndürdüğüm için üzgünüm, ancak 00;derleyici tarafından geleneksel olarak yok sayılıyor ...
John Dvorak

2
Cidden ... "elma", 1.92 Shannon entropisine sahiptir ???
John Dvorak

4
It may have an odd or even number of charactersTek ya da çift olmayan bir dizi karakter var mı?
Snack

1
@Snack Bu, insanların iki cevap kodu bölümünün aynı uzunlukta olması gerekmediğini bilmesini sağlar.
Calvin'in Hobileri

Yanıtlar:


55

Javascript (148 bayt)

Soru için bir uyarı * yaratmanın yan etkisi ile bazı saçma değişmezler oluşturur. (bölmeler benzer şekilde çalışır, ancak cevapların her biri için uyarılar * oluşturur).

"';"+alert( 'What is the ideal breakfast???')+/ " ;apl=e"rbta(k"esnc"r.armebplleadc ee g g s(" ) + " \/)k;e"/+ ",t'hceo 'c)a;kye= ailse rat (lpi)e "

Splits:

";+lr('hti h da rafs??)/";p="baken".replace   (    /ke/ ,'co');y=alert(p) 

ve

'"aet Wa steielbekat?'+  alert("scrambled eggs")+"\);"+"the cake is a lie"

 

Soru: What is the ideal breakfast???

Cevaplar: baconvescrambled eggs


4
Bu, bu site hakkında sevdiğim kalite türü! Bunu yapan insanları başka nerede bulabilirsin?
Cruncher

1
İyileştirme dersleri aldım (belki de açıkça) ve burada mizah değeri için size +1 vereceğim. Fakat tüm diyafram bilim mühendislerinin bildiği gibi, biz bilim pratisyeniyiz ... yani gerçekten, en komik kısmı temiz bir silah yapmaktır . :-)
Dr. Rebmu

29

Brainfuck (437 karakter)

Bunun gerçekten anlamlı bir şey yapan ilk beyin fırtınası programım olduğunu itiraf etmeliyim. Program, yalnızca 4 bellek konumu kullandığından, düşük bellek sistemleri için oldukça optimize edilmiştir.

Soru: What are the two main groups of trees?

Cevaplar: conifersvebroadleafs

-+[[++++++++++++++++++++++[+>++++++[+>++++++++++++<>-+]+>+-+.++++++<+<+-+]+>+++++.+>++.+-..------.-<--..-+-+-+..->.-+-+-+.+<+++.+-+-+-+-+.++++.+++.+<.+>-+++-+++-+++-++.->]]++-+[[+-+-[[+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++.+++++++++++++++++.-------.>.<<.>.>--.<++++.<.>>++.<+++.---.<.>>.+++.<++++++++++.<.>--.------------.++++++++.+++++.<.>-------.>-----.<++++++++.>+++.<+.>--.<<.>-.---------.<.>>+.--.<-..>+.<<[<++>-]<-.<]]]]

Ana döngü

Program, ana döngü (tüm [] -blocks yalnızca bir kez yürütüldüğü için gerçekten bir döngü değil) ve iki bölümden oluşur.

-+[[        // let answers enter
            * SNIP interleaved answer sections *
]]
++-+[[      // let odd answer and question enter
    +-+-[[  // let question enter
            * SNIP question section *
    ]]
]]

Bölümleri bağımsız olarak test etmek istiyorsanız, ana çevrimi hesaba katmanız gerekir. Konum 0, çift cevapta -1, tek cevapta 1 ve soru bölümünde 2 içerir.

Cevap bölümü

Hatta cevap (tuhaf talimatlar kaldırıldı):

// location 0 contains minus 1 from main
// set location 1 = 10 * 10 minus 1 = 99 (c)
+++++++++++[>++++++++++<-]>-. // c
++++++++++++.-.     // on
-----.---.          // if
-.+++++++++++++.+.  // ers
<                   // goto 0 (which contains 0)
+-+-+-+-+-          // padding to match length of odd answer

Tek cevap (talimatlar bile kaldırıldı):

// location 0 contains 1 from main
// set location 1 = 16 * 6 plus 2 = 98 (b)  location used for characters below 'l'
// set location 2 = 16 * 7 plus 2 = 114 (r) location used for 'l' and above
+++++++++++++++[>++++++>+++++++<<-]>++.>++. // br
---.<               // o
-.+++.              // ad
>---.<              // l
+.----.+++++.       // eaf
>+++++++.           // s
>                   // goto 3 (which contains 0)

Soru bölümü

Yeri ayrı tutmaya karar verdim çünkü değeri diğer karakterlerden büyük ölçüde farklı. Bu, alanın kolayca basılmasını sağlar <.>.

// location 0 contains 2 from main
// set location 1 = 17 * 2 minus 2 = 32 (space)
// set location 2 = 17 * 5 plus 2 = 87 (W)   location used for characters below 'r'
// set location 3 = 17 * 7 minus 3 = 116 (t) location used for 'r' and above
+++++++++++++++[>++>+++++>+++++++<<<-]>-->>---<++. // W
+++++++++++++++++.  // h
-------.>.<         // at
<.>                 // (space)
.>--.<++++.         // are
<.>                 // (space)
>++.<+++.---.       // the
<.>                 // (space)
>.+++.<++++++++++.  // two
<.>                 // (space)
--.------------.    // ma
++++++++.+++++.     // in
<.>                 // (space)
-------.>-----.     // gr
<++++++++.>+++.     // ou
<+.>--.<            // ps
<.>                 // (space)
-.---------.        // of
<.>                 // (space)
>+.--.<-..>+.       // trees
<<[<++>-]<-.<       // ? (value_of_space * 2 minus 1)

Son güncelleme

Son güncellememde, minimum talimatları kullanmak için çarpımları optimize ettim. Ayrıca 'l' den ikinci karakter grubuna garip cevap bölümünde büyük gelişme olduğu kanıtlandı. Tek cevapta tek karakter tasarrufları temel olarak tüm programdan iki karakter anlamına geliyordu, çünkü aynı zamanda çiftli cevaptan doldurmayı da azaltıyor. Ayrıca buradan ve oradan birkaç gereksiz talimatı çıkardım ve kodu daha da iyileştirebileceğimi sanmıyorum.


23

Toplu iş - 84

Bununla gurur duyuyorum

Tam program: Bir madalyonun iki yüzü nedir? (Konsol)

echo What are two sides of a coin?  2>>xx  2>>cc&&eecchhoo  hteaaidlss  2>>xx  2>>cc

Sadece Evens: heads ('c' dosyası)

eh htaetosdso  on 2>x >c&echo heads 2>x >c

Sadece bahis oranları: Tails ('x' dosyası)

coWa r w ie faci? >x 2>c&echo tails >x 2>c

Her iki durumda da hata çıktısını bir dosyaya yönlendirerek çalışır.


Zaten kısaltmak için bir yol düşündüm, ama bu yarına kadar beklemek zorunda kalacak.
Ağustos'ta

3
Bu şu ana kadarki en yüksek puana sahip: 12 - 28 = -16.
justhalf

20

Python - 104 96 (golf oynamış: 76)

Benim çözümüm oldukça basittir (ve bir şekilde okunabilir):

"";print 'What is the color of a zebra?' ;""
paraianat= "' b l a c k '"
aparaianat="'w h i t e'"

Çıktı:

What is the color of a zebra?
black
white

Açıkçası, ilk satırın fikrini bitpwner'ın cevabında buldum.


Daha da okunabilir bir alternatif: - 113 105 97

"";print 'What is the color of a zebra?' ;""
"p r i n t ' b l a c k '" ;"p r i n t ' w h i t e '"

Daha kısa alternatif: - 86 76

"";print'What is the color of a zebra?';""
"""";;pprriinntt''bwlhaictke''"""

"satranç tahtası" da gereksinimleri yerine getiriyor.
Martin Ender

3
@ MartinBüttner Zebra. :-P
David Richerby

Oh, hoşuma gitti zebra. Ve tam olarak 30 karakterden oluşan bir soru ile "golf" versiyonuna da uyuyor. Böylece çözümümü biraz değiştirdim. :)
Falko

1
Üçlü alıntı dizeler yorum değildir, ancak çok satırlı dizelerdir. Ayrıca doktor dizeleri olarak kullanıldığından yorumlarla karıştırılabilirler.
Falko

1
Güncellenen soru sadece 29 karakter uzunluğunda.
Dennis

15

Rebmu : 79 karakter OR (37 + uzunluk (p1) + 2 * maks (uzunluk (p2), uzunluk (p3)))

İlk önce, hangi dilleri öğrenmelisin diye soran 79 karakterli bir çözüm vereceğim. (entropi 4.0, 30 harf dahil değil ?) ve Rebol ve [Red] ' in önerilerini sunar :

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} pp{{[RReebdo]l}}

Burada başka dillerde bulunmayan eşsiz bir taktik, kaşlı ayraçların yasal olarak yuvalanabilen asimetrik bir tel sınırlayıcı olması gerçeğinden yararlanmaktan geliyor:

my-string: {"It's cool," said {Dr. Rebmu}, "for MANY reasons--like less escaping."}

Bu, kaçış dizileri kullanmayan herhangi bir program üzerinde zahmetsizce çalışabilen genel bir çözüm üretmeme izin verdi. 79 karakter sürümü kısayol için yeterince basitti, ancak p2 ve p3 programları için rasgele bir program kaynağı içermek için tam şablona ihtiyacınız olacaktı. Bunu kullanmış olsaydık, 87 karakter olurdu:

DD  11  DD :do dd {dd  {p{Which languages must you learn?}qt}} ddoo{{pp{{[RReebdo]l}}}}

Bu genel formu kullanarak için desen değişken uzunluktaki ardışık karakterlerin üç kaynak metinleri varsa (en gibi bir örnek kullanmasına izin olmasıdır AAA, BBBBB, CCCCCCCsen çizgisinde bir şey olarak onları kodlamak):

DD  11  DD :do dd {dd  {AAAqt}} ddoo{{BCBCBCBCBC C C}}

(Not:. Bu model kullanımı kaçış karakterleri, bu ölümcül kusur programlarına ince ayarlar olmadan değil işin değil ki olsa parantez ile sınırlanmış bir dizede eşsiz sol ayracı alma gibi bir şey gerektirir {Foo ^{ Bar}... ancak kolayca kullanarak bu yazabilirsiniz alternatif dize notasyonu "Foo { Bar"ve birleşik durumlar, birlikte çıkmamış dizelerin bir karışımının yapıştırılmasıyla birlikte yönetilebilir.)

Peki ... peki ya bir örnek? Genel form kullanıma sunulduktan sonra, bu 573 karakter programı, önceki 3 kod golf çözümünden sadece birkaç dakika içinde toplandı:

DD 11 DD: dd {dd {rJN% 0 rN Wa1m2jS {{x /} D00 Hc & [u [Ze? Wa Qs ~ rpKw [isEL00c [skQd2k] [eEV? KQ [tlQ]] pcSeg - b00 [ eZ 1 5] 3] prRJ [siSdscSqFHs] eZ 1 [s + dCa + wM2cNO]]] Va | [mpAp2j] prSI ~ w { } Ls2w Wl h01tiVsb01n-1 chRVs { } hLceVn01qtdb {dd . {K, j} b P {. } lf EZ - - n [N m {G otothestoreandbuysome daha fazla}] {T akeonedownandpassitar ound} c B w P lf]]}}

Herhangi biri bu programı tercih ettiği dilde yazmayı denemek istiyorsa ve 573'ü geçebileceğini düşünüyorsa, bana bildirin. Seçim dilinizin Rebmu olmadığını varsayarsanız, bu programların asgari düzeyde olmadığını biliyorum çünkü, size ağır bir üne sahip olacağım. :-)

Sonunda elde ettiğiniz "boşa harcanan" boşluk, p2 ve p3 dengesiz uzunluklarda olduğunda gerçekleşen şeydir. Ancak bu 3 program da farklı boyutlardadır, bu nedenle p2 / p3 için seçilecek belirli bir eşleşme yoktur. (Bunları seçtim çünkü labirent veya başka herhangi bir girdi gibi harici veri yoktu, benzer uzunluklarda olmadılar. Daha uygun yeni programlar yazabildiğim halde, yeterince zaman harcadım ve asıl konu şuydu: Eğer yok yeni programlar yazmak zorunda ...)

Nasıl çalışır

(Not: Daha akıcı olmayan ama daha ilginç görünen, daha "yaratıcı" bir yaklaşımla başladım. Bu yaklaşımı açıklayan uzun sürdüğü için blogumdaki bir girişe taşıdım .)

Buradaki anahtar diğer bazı girişler gibi "hileli değerlendirme kodu" gibi bir hiledir, sadece asimetrik string sınırlayıcının koz kartına sahiptir. 80 karakterlik vakanın çalışmalarını açıklayarak başlayacağım.

İşte bu "bütün" program, bu davanın okunabilirliği için boşlukları ayarlıyor:

DD 11                    ; assign 11 to dd (about to overwrite again)
DD :do                   ; make dd a synonym for DO (a.k.a. "eval")

; eval a string as source code that ends with QUIT (QT)
dd {dd  {p{Which languages must you learn?}qt}}

; we'll never get here, but whatever's here must be legally parseable
pp{{[RReebdo]l}}

Burada DD'yi DO (aka "eval") ile eşanlamlı olarak ayarlıyoruz. Ancak işin püf noktası, yarı yarıya programlar çalıştığında, tek etkisi D'yi zararsız değişmez 1 olarak tanımlamak için çalışan kodları kurmalarıdır.

İşte garip karakter kodunun yaptığı şey: boşluklar yeniden ayarlandı:

D 1                      ; assign 1 to d
D d                      ; assign d to itself, so it's still 1
d                        ; evaluates to integer, no side effect
{d pWihlnugsms o er?q}   ; string literal, no side effect
p {Rebol}                ; print "Rebol"

Ve işte eşit karakter kodu:

D 1                      ; assign 1 to d
D:od                     ; URL-literal (foo:...), no side effect
d                        ; evaluates to integer, no side effect
{{hc agae utyulan}t}     ; string literal (well-formed!), no side effect
p {[Red]}                ; print "[Red]"

Aslına bakarsanız yarı yarıya olmayan program için, dd {dd {(arbitrary code)qt}}istediğiniz kodu çalıştıracaktır. Ancak, sadece bir tane yerine değerlendirilecek iki çağrı var. Bunun nedeni, iç içe geçmiş parantezlerin eklenmiş kodda çok iyi çalışmasına rağmen, DO'nun değerlendirme davranışını karıştırdıklarıdır. Çünkü:

do {{print "Hello"}}

Dizeyi bir program olarak yükleyecektir, ancak bu program yalnızca dize sabiti olarak görünmektedir {print "Hello"}. Bu yüzden burada kullandığım numara DD'imi almak (DO ile aynı fonksiyon değerini tutmak) ve iki kere çalıştırmak. Körükler ipin farklı kısımlarında çiğniyorlar ancak içerik için çift / tuhaflık doğru ise her ikisini de çiğniyorlar ve yarıya çıktıktan sonra ipin dışında kalanlar sadece integral sabiti dolduğu için zararsızlar.

Bu kalıpla, ikiye bölünmediğinde program davranışını yazma konusunda zorluk yoktur - kodun karakter uzunluğu eşit olduğu sürece herhangi bir şeyi koyabilirsiniz (QTIT olan QT'yi sayarsanız garip). Tek bir sayıdan çift sayı almanız gerekiyorsa, bir boşluk koyun (p1'deki tuhaf program uzunlukları için yukarıdaki formülümde aslında bir +1 var) . İşin hilesi eğer ayrıştırıcı geçmek zorunda olduğu, daha sonra o serpiştirilmiş kod yazmak gibi görünüyor değildir yarıya. (QT nedeniyle çalıştırılmayacak, ancak çalıştırılmadan önce YÜKLE olması gerekiyor.)

Bu dava önemsizdir; pptanımlanmamış olmasına rağmen bir simge olarak iyi yükler ve pher yarım programda yazdırmak için ayrılmıştır . Fakat yine de sadece bir string string kullanarak başka bir numara yapabiliriz. Yarıda bırakılmış programlar hala normal olarak DO tanımladı, bu yüzden de şunu söyleyebiliriz:

ddoo{{pp{{[RReebdo]l}}}}

Çözümleyici tarafından ele alınan tek kısmı tümüyle sembolik bir sözcük ddoove bir dize değişmezi haline getirerek, bu dize değişmezinde istediğimiz iki programı birleştirebilir ve çözümleyiciyi öfkelendirmeyebiliriz. Yarıya indirilmiş versiyonlar şöyle der:

do{p{Rebol}}

..ve...

do{p{[Red]}}

Dediğim gibi, bu bölüm programları dizeler olarak değerlendiren ve değerlendiren diğer çözümlere aşina görünüyor. Ancak, rekabet durumunda, paketlemekte olduğunuz programlar iç içe diziler içerdiğinde, bunlar için anahtarlar atarlar. Burada başınızı belaya sokacak olan tek şey, ^etrafta kolayca çalışılabilecek olan ( ) ( ).


(Küçük 'hile' notu: Bu soruna cevaben "ÇIKIŞ" için QT ekledim. Aslında, daha önce bırakma kısaltmasını bilerek kaldırmıştım ... çünkü bir şekilde bunun sadece konsol kullanımı için iyi olduğunu düşündüm. Eğer bir REPL'de olmasaydı iki harflik boşluk ekledim, ekliyorum çünkü yanıldım, özellikle bu dava için ekleyemedim, yine de, bu değişiklikten önce 2 karakter daha uzun olurdu. Çözümü ilk gönderdiğimde Rebmu'da olması gerekmesine rağmen çalışmasını engelleyen bir hata vardı ... şimdi çalışıyor.)


Aslında kendi programlama dilini mi yarattın?
sesler

2
@ tjt263 Mevcut dilin Rebol kodunu "kodlayan" kodun daha iyi olduğu düşünülüyor . İnsanlar Python'u kısaca kısaltan Pyth ile benzer şeyler yaptılar . Ancak Rebmu'nun Rebol ayrıştırıcısı tarafından yüklenebilir ve "uyumlu" olması bakımından oldukça ilginç bir farkı var. Bunun ortasındaki herhangi bir zamanda Rebol'a girebilirsiniz, örneğin kum saati . Bunu tartışmak için mutlu Rebol'un ve Kızıl sohbet isterseniz.
Dr. Rebmu

15

Perl 186 139 135

"";print'What are the best things in life?';""&&pprriinntt("'hceraurs ht hyeo ulra meennetmaiteiso'n s   o f   t h e i r   w o m e n ")

Hayattaki en iyi şeyler nelerdir?

"pitWa r h ettig nlf?;"&print('crush your enemies'                 )

düşmanlarını ezmek

";rn'htaetebs hnsi ie'"&print"hear the lamentations of their women"

kadınların saçlarını duymak

Daha az uzun cevaplar kullanmak:

Perl 79 72

"";print'What are my preferred weapons?';""&&pprriinntt("'smwaocredss'")

What are my preferred weapons?(30Byte, H (X) = 3.76) swords(H (X) = 2,25) ve maces(H (X) = 2,32)


9

Python - 139 103

"";print'What are the ingredients for success?';""; ";" ;id=='"RUaniincboorwnss'";;pprriinntt  id++"'"'

What are the ingredients for success?-> UnicornsveRainbows

Ölçek:

c="\"\";print\'What are the ingredients for success?\';\"\"; \";\" ;id==\'\"RUaniincboorwnss\'\";;pprriinntt  id++\"\'\"\'"
exec c        # What are the ingredients for success?
exec c[::2]   # Unicorns
exec c[1::2]  # Rainbows
print 
print c[::2]  # ";rn'htaeteigeinsfrsces'";"";d="Unicorns";print d+''
print c[1::2] # "pitWa r h nrdet o ucs?;" ; i='Rainbows';print i+""

Eski versiyon:

# What are the ingredients for success?
"";print(('What are the ingredients for success?'));""; ";" ;"pHrEiRnEt (C'OUMnEiSc oZrAnLsG'O)"; ";" ; "p,r iTnOtN(Y' RTaHiEn bPoOwNsY'.)"
# Unicorns
";rn('htaeteigeinsfrsces')";"";print('Unicorns');"";", TONY THE PONY."
# Rainbows
"pit(Wa r h nrdet o ucs?);" ; "HERE COMES ZALGO" ;  print('Rainbows')

6

Haskell, 117

Haskell'in işlevsel paradigması ile çalışmak zorunda olmak her şeyin bir değişkene atanması veya satır --veya blok {- -}yorumlarla yorumlanması gerektiği anlamına gelir ; saçma fonksiyonların atama olmadan çalışması. Bu yüzden kendimi aklı başında tutmak için, soruyu tuttum ve kuralları izin verdiği kadar kısa cevapladım.

Soru: Yeterince ne alamam?

main=putStrLn{---}"What can I not have enough of?"{- }
=u"Scrank=e"sS"h
omeasi"n
=mpauitnS=tpru taSntprt tmLi

-----}

"Ayakkabı" ve "kek":

mi=uSrn--"htcnInthv nuho?{ 
uSrn="Shoes"
main=putStr mi
--}
anpttL{-}Wa a  o aeeog f"-}="cakes"
main=putStr anpttL
---

NB crank"Neye sahip olamam?" Altından görünüm anlamlı olarak görülmemelidir.


1
Yorumlara izin verilmez
gururlu haskeller

Ve ikincisinin geçerli haskell sözdizimi nasıl?
Gurur haskeller 11:14

Orijinal kodun kapatılmamış bir yorum bloğu vardır, çünkü kapanış çifti bir satır yorumundadır. "Pasta" kodu bile kod gibi görünmüyor - anpttL bir işlev değil mi? = oturum açmanın tanımı nerede? aslında anpttLWa denmiyor mu?
Gurur haskeller 11:14

@proudhaskeller Yorumlar hakkında kuralı kaçırdım. Bunun için üzgünüm. İlk programda açıklanmamış bir yorum bloğu yoktur. Sadece iyi ayrıştırır. Satır yorumları, blok yorumlarında anlamsızdır. İkincisi geçerlidir, çünkü satır yorumları geçerlidir. anpttL bir dizedir. Blok yorumunu çıkarın ve "kek" e eşit olduğunu göreceksiniz. Wa olduğunu bu yüzden, hayır, anpttLWa aslında değil, blok yorumunda.
comperendinous

2
@ proudhaskeller Kafam GHCi'nin işi kendi adına yapmasına izin veriyor.
comperendinous

4

Lisp (76 karakter)

31 karakterlik soru, her cevapta 6 karakter ⟹ uzunluk - yük kapasitesi = 33

'(: (pprriinncc''fmuacghesnitaa))':(princ "What is your favorite pink hue?")

“En sevdiğin renk nedir?” Kullanmak istedim, ancak İngilizcenin hecelemesine bile geriledi, sadece soru uzunluğu için minimum 30 karaktere ulaştı ve çift tırnakları dengelemek için tuhaf bir soruya ihtiyacım vardı.

Common Lisp'in ayrıntılı olduğunu söylüyorlar, ancak bu tek astarın yanına gideceğini düşünmüyorsunuz. Çok karışık bile değil, neyin alıntılandığını ve neyin uygulandığını görmek için sadece biraz boşluk ekleyin.

Birçok Lisp uygulaması renkleri haykırır, çünkü semboller büyük harfe çarpar. Bu huzursuzluktur size, değişim olursa ''fmuacghesnitaaetmek ""fmuacghesnitaa"".


Bu sorunun oylama bileşeni olduğu için, daha fazla oy almaya çalışmak için dikkat çekmek üzere seçtim. Fakat ödül tükendi ve kendime puan veremem çünkü :-) onu Rebmu'nun atalarının diline dayalı olarak gireceğim ve daha önce yapmadıysanız kontrol etmenizi tavsiye ederim! codegolf.stackexchange.com/a/36114/57
Dr. Rebmu

3

STATA 295

Soru: Şu anda pişirilecek en iyi tatlılar hangileridir? Cevap: kek ve kurabiyeler.

Açıklama: STATA'daki komutlar yeni satırlarla sınırlandırılmıştır.
"//" STATA'daki bir yorum olsa da, "///" derleyiciye bir sonraki satıra devam etmesini ve içeriğini geçerli komutla eklemesini söyler.

STATA'daki komutlar genellikle farklılaşabilecek kadar benzersiz sayılırlar. Bu nedenle "üret" "g", "global" "gl" veya "glo", "yakalama", "kapak" olur. ekran "di" olur, vb.). Display komutu ekrana metni gösterir. Capture komutu tüm hataları (sözdizimi hataları dahil) alır, bu nedenle bu program düzgün şekilde derlenir.

Seçici olmak istersen, bir satırdaki ilk 3 ardışık olandan sonraki herhangi bir "/" derleyici tarafından göz ardı edilir. Ayrıca, "kek" programında, teknik olarak + "" bir yorumdur. Ama ben hala sayıldığını iddia ediyorum, çünkü eğer yakalama komutu bir yorum olmasa bile yine de onu alakasız hale getirecekti.

Gerçekten uzun açıklamamı okuduğunuz için teşekkürler. Şimdi kod için:

"Şu anda pişirilecek en iyi tatlılar hangileri?"

g   a = "g   q   /b/a/" 
g l= "b = ""b r o w n i e s "
g   c = "g   /b/a/" 
g lpo= "d = ""c o o k i e s "
g   e = "c a p  "  /////
 +  "d i ""$ b "
g   f = "c a p  "  /////
 +  "d i ""$ d "
g   g = "c a p  "  /////
 + "c a p   / / /  "+ "/ / /"
di "What are the best desserts to bake right now?"

"brownies"

g a="    ba"
gl b="brownies"
    g /// 
 p="  "       
g e="   " //
 di "$b"
    cap ///
+" "  
g g="   " //
  cap ///   +"  "
i"htaetebs esrst aergtnw"

"kurabiye"

    g q /// 
 ="  "        
g c="  ba"
glo d="cookies"
    cap ///
+" "  
g f="   " //
 di "$d"
    cap  ///
+ "       " ///
d Wa r h etdset obk ih o?

2

Ksh (82 karakter)

35 karakter soru, her cevapta 5 karakter ⟹ uzunluk - yük kapasitesi = 37

ec=\'o'(;)eehc(h)oe cChroi m$e1;; '\'
echo  What\'s the  country\'s worst problem?

POSIX dışındaki işlev tanımı sözdizimini kötüye kullanıyorum. Çizgi ve bash bunu kaldıramaz, ancak ksh (kamu malı veya ATT) alabilir.

Olağanüstü bir şey yok, sadece biraz yankı var. Atık değil, istemiyorum.


2

PowerShell 88

"" > $x;{What is my favorite equipment?};"" >> ${x}

${XsXwXoXrXdX};;;${XsXhXiXeXlXdX}

Favori ekipmanım nedir? (30 karakter, H (X) = 4.0314)

"  x{hti yfvrt qimn?;"> {}
{sword};$XXXXXXX

kılıç (5 karakter, H (X) = 2.32193)

">$;Wa sm aoieeupet}" >$x
$XXXXXX;;{shield}

kalkan (5 karakter, H (X) = 2,58496)

Tam programda, boş dizeleri varolmayan bir değişkene yönlendirir ${x}(bu boş dizeler için yapılan alıntılar, boş bir bloğa {}veya varolmayan değişkene $x, çift / tek versiyonlarda ya boş bir bloğa ya da varolmayan bir değişkene yönlendirilir ) kullanılır. 2 kullanılmamış değişken (başka bir kullanılmamış değişkenin yanına $XXXXXXveya $XXXXXXXfarklı durumlarda basılır ve yerleştirilir) bildirir .


1

GolfScript, 51 bayt

"Which are the sides of a coin? ".;""thaeialdss""

Çıktı

Which are the sides of a coin? 

Nasıl çalışır

.;dize çoğaltır ve kopyayı siler. ""boş bir dize iter. thaeialdsstanımsız, bu yüzden hiçbir şey yapmaz.

Tek karakter

"hc r h ie faci?";"heads"

Çıktı

heads

Nasıl çalışır

; İlk dizgiyi yığından siler.

Hatta karakter

Wihaetesdso  on ."tails"

Çıktı

tails

Nasıl çalışır

Wihaetesdsove onnoops. .Yığındaki boş dizeyi çoğaltır.

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.