En sevdiğiniz cümleyi programlayın


28

Tam olarak 5 kelime uzunluğunda bir alıntı veya cümle seçin Programming puzzles and code golf!.

Kendisine n kere eklendiğinde , cümlenizin ilk n + 1 kelimesini sırayla çıkaran bir program yazın .

Örneğin, program kodunuz MYPROGve deyiminiz Programming puzzles and code golf!çalışıyorsa ...

  • MYPROG çıkmalı Programming
  • MYPROGMYPROG çıkmalı Programming puzzles
  • MYPROGMYPROGMYPROG çıkmalı Programming puzzles and
  • MYPROGMYPROGMYPROGMYPROG çıkmalı Programming puzzles and code
  • MYPROGMYPROGMYPROGMYPROGMYPROG çıkmalı Programming puzzles and code golf!

4 defadan fazla eklemek tanımsızdır, programınız her şeyi yapabilir.

kurallar

  • İfadeniz gramer anlamında İngilizce olmalıdır. İdeal olarak, düzgün bir şekilde büyük harfle yazılmalı ve noktalamalı.
  • Sizin ifade olarak hesaplanmıştır herhangi bir uzunlukta ancak entropi olabilir http://www.shannonentropy.netmark.pl/ , 3.5 daha az olamaz .
    (Sizin ifade yapıştırın, isabet Hesapla ve en sona göz H (X) .)
  • Cümleniz yalnızca yazdırılabilir ASCII karakterleri içerebilir (hex 20 ila 7E). Kodunuz yalnızca yazdırılabilir ASCII ve sekmeler ve yeni satırlar içerebilir.
  • Cümleniz tam 5 benzersiz kelime ve 4 boşluk içermelidir . Bütün boşluklar kelimelerin bir parçası olarak sayılır. Boşluklar, kelime sınırlarıdır. Öncü veya iz bırakmıyor olabilirler; Son kelimeden başka bir şey olmalı.
  • Çıktı, kelimeler arasında da bir boşluk bırakmalıdır. Her bir ek adımdaki çıktı, sondaki boşlukları içerebilir, ancak baştaki boşlukları içermez.
  • Stdout'a çıktı. Giriş yok.

puanlama

Puanınız, eklenmemiş başlangıç ​​programınızın bayt cinsinden uzunluğudur. (örneğin, MYPROGpuan 6)

Bu kod golf olduğu için, en düşük puan kazanır.


21
aww, entropi ve özgünlük gereksinimleri bir giriş olarak "buffalo" fikrimi öldürür.
Sparr

4
Piet'de "Kodunuz yalnızca yazdırılabilir ASCII ve sekmeler ve yeni satırlar içerebilir" e kadar çok eğlenecektim. :(
Sp3000

3
@ Sp3000 Onursal bir cevap koymak için bekliyoruz. Piet çözümü görmeyi çok isterim :)
Calvin'in Hobileri

Haskell'in saflığının tamamen sorun olduğu tek durum budur ...
Rhymoid

Dilbilgisel anlamlı İngilizce Dilbilgisel ve anlamlı farklı yorumlamalar nedeniyle "dilbilgisel anlamlı İngilizce" nin ne olduğu çok açık değildir.
MilkyWay90

Yanıtlar:


6

CJam - 24

"TheguywasnotI"Lm3<]S*:L

Http://cjam.aditsu.net/ adresinde deneyin

Açıklama:

Lm"TheguywasnotI "dan L (başlangıçta")" harfleri de kaldırır
3<ilk 3 harf alır
], bir dizi yığının içeriğini toplayan
S*bir ayırıcı olarak kullanımı dizi birleşimler
:Latar L dizge (ayrıca yığın bırakarak )

Eski versiyon (28 bayt):

"He is but a dog."S/W):W=]S*

Açıklama:

S/boşluk ile böler
W):Wartışlarla (başlangıçta W = 1) B
=W'th kelime alır
], bir dizi yığının içeriğini toplayan
S*bir ayırıcı olarak kullanımı bir dizi katılır


Bu dil gerçekten ilginç. Dedikleri gibi, "Her gün yeni bir dil öğreniyorsun" ... ya da onun gibi bir şey. İyi iş!
Brobin

Bunu Dennis’in yerine kısa sürede cevap olarak kabul etmek .
Calvin'in Hobileri

28

Piet (fahri cevap)

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

Sağa doğru mavi renkte tekrar girip tekrar yeşile girerek, aşağı doğru yılanlaşır. Dışarı Baskılar "Meyve bir muz gibi uçar."

Bunu yapmak için PietCreator'ı kullandım , ancak burada deneyebilirsiniz . Piet programlarını yeniden yapmak bir acıdır, bu yüzden 35x35'te başladım ve bu şekilde devam ettim, yani ihtiyaç duyduğumdan çok daha fazla kodek kullandım.

Gerçek boyut versiyonları

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


11

> <> (42)

Balık gerçekten en büyük evcil hayvandır. Bazı insanlar anlaşılmaz mantık eksikliğinden dolayı böcekleri evcil hayvan olarak tutarlar. Bu program, bu tür insanlarla mantıklı olmak için elinden gelenin en iyisini yapar.

!v'?od gub yna nac tahW;'00p!
<<|ov!
voo <

Bu programda izleyen yeni bir satır olmadığını unutmayın. Çıktının tamamı ilk satırda tersine çevrilir; tam ifade "Herhangi bir hata ne yapabilir?" (entropi 3.58418).

Tam açıklama:

Bu, yazdığım en eğlenceli> <> programlardan biri, çünkü yansıma kullanan ilk program. İlk satır programın etinin nerede olduğu.

!vbir no-op, bir !sonraki komutun atlanmasına neden olduğu için.

'?od gub yna nac tahW;' tüm ifadeyi yığında saklar (her harf yığının üzerine yazıldığı sırada itildiği için geriye doğru yazılmıştır, bu nedenle güzel bir şekilde atılması için ters çevrilmesi gerekir).

00pGerçek sihir gerçekleşmeye başladığı yerdir. Sadece cümleyi kaydetmediğini, ayrıca a kaydettiğini unutmayın ;. 00pprograma yığının üzerine üst karakteri yerleştirir (0, 0), yani şimdi programın ilk karakteri a ;.

Biten !atlama o noktalı virgül ve hamle üzerine imleci vprogram akış aşağı doğru yönlendirir.

Bundan sonra, hepsi sadece baskı yordamları. İzleyen bir yeni satır olmadığından, programın art arda eklenmesi ilk iki satırın sağında voo <olacağından ve bu nedenle asla çalıştırılmayacağından , aslında son iki satırı ekler .

Sonunda, imleç programın sol alt kısmına yönlendirilir ve programı ;sonlandırarak programın sol üst kısmına geri sarılır .


Bir dakika önce bu teknik olarak geçersizdi ancak koddaki yeni satırlara (ve sekmelere) izin verilecek şekilde değiştirdim (aslında istediğim şey buydu).
Calvin'in Hobileri

Oh, benim kötü, sadece ifade değil, kaynağa uygulanan bu tamamen özledim. Niyeti olduğuna sevindim, programlar> oldukça yeni hatlara dayanıyor.
Mike Precup,

Bunu biraz düşürmek istiyorsanız, 11 harfli bir cümle kullanabilirsiniz ve "It is by a rope."cümleniz karakterleri tekrarlar gibi tekrarlanan karakterler kullanmazsınız, böylece ondan daha düşük entropi vardır.
isaacg

Sorun, her çıktının temelde güzel bir şekilde yazdırmak için aynı uzunlukta olması gerektiğidir, çünkü> <> boşlukları kolayca algılayamaz. Daha kısa bir tane bulamadım.
Mike Precup

2
@isaacg Şahsen Mike'ın cümlesini tercih ederim;)
Calvin'in Hobileri

10

Python 66

i='i'in dir()and i+1;print("Tfpcfhaialetgny"[i::5],end=" ."[i>3]);

Entropi: 3.61635

Çıkışı:

The fat pig can fly.

Değişken algılama bölümünü kısaltmak için ipuçları için @JasonS ve @grc 'e teşekkür ederiz.

Güncelleme: JasonS'ın bunu 55 bayta iten kötü bir sarma topuyla verdiği cevabı görüyor musunuz ? :)


i=locals().get('i',-1)+1;-5 bayttır
Jason S

Beni yen! Kullanacaktım i='i'in dir()and i+1. Düzenleme: kurallar değişti.
grc

Peki, bu başka bir -4
Jason S

Python 2 ile 60 bayt:i='i'in dir()and i+1;print"Tfpcfhaialetgny"[i::5]+" ."[i>3],
nyuszika7h

9

Python 3, 55 (bonus 67)

# 55 bytes, H(X)=3.72, Based on bitpwner's 66. "Mix dog and cat fur."
i=0;print("Mdacfionauxgdtr"[i::5],end=" ."[i>3]);i+=1;i

# 67 bytes, H(X)=4.28. "Thanks for supporting Python development."
q=b"qx!%%0077C";a,b,*q=q;print((str(credits)*2)[49:][a:b],end='');q

# 60 bytes, H(X) = 3.51. "Fix the bed old pal"
s="Fixthebedoldpal";a,b,c,*s=s;print(a+b+c,end='. '[s>[]]);s

Dolduğunu mu demek istiyorsun?

Tamam, # 2 ile ilgili bazı açıklamalar (spoiler)

  • creditskullanmak istiyorum metin içeren bir python yerleşiktir. Sadece reprinteraktif yorumlayıcıya yazabilmeniz ve güzel çıktılar görebilmeniz için biçimlendirilmiş özel bir türe sahiptir , bu yüzden buna mecburum str(). Bunun için yerleşiklere bakmak için biraz zaman harcadım ve “Python gelişimini desteklediğiniz için teşekkürler” ifadesi geçmek için çok iyiydi.

  • Çok fazla metin olduğundan ve sadece 5 kelimemi istediğim için, her alt dizinin başlangıç ​​ve bitiş konumlarını saklamak istiyorum. Bu başlangıçtaki baytlarda. bytespython3'teki nesneler, üzerlerinde dizi işlemleri kullandığınızda tam sayı dizileri gibi davranır.

  • Ancak kod yalnızca yazdırılabilir karakterler içerebilir, bu yüzden tüm konum değerlerimı karakter olarak yazdırılabilir yapan bir ofset (49) bulmak zorunda kaldım.

  • "Teşekkürler", dize başlangıcına yakınken, diğer bir deyişle sona yaklaşıyor, bu da konum değerlerimin yazdırılabilir aralıktaki herkes için çok uzak olduğu anlamına geliyor. İpin 2'ye bölünmesi, diğer kelimelere daha yakın olan "Teşekkürler" in başka bir kopyasını çıkarır.

  • [49:]Dize diliminin alınması hem a hem de b'ye 49 eklemekten daha az kaynak baytıdır.

  • Her üç cevapta da kullanılan yapı x=<value>;dostuff and increment;x. İz x, hiçbir şey yapmaz, ancak kodun bir sonraki kopyasıyla birleştirildiğinde xx=<value>, xsayacın üzerine yazılmasını engelleyen bir hale gelir.

  • a,b,*q=q tamamen normal bir Python 3 dizisi açma işlemidir.


+1. Kötü numara. :) Cevabımı güncelleyebilir miyim?
Vectorized

Ben senin ortasını kullandım
Jason S

Şu anda 2. cevabınıza hayret ediyorum. İçinde bir sürü numara var.
Vectörize

2
Bana ikinci cevabın nasıl çalıştığını söyler misin?
sajas,

8

Piton 2 (37)

Sarah, yerel Mensa bölümünün başkanı olduktan sonra, akıllı bir ortak arayan erkeklerden romantik ilginin odağı oldu. Her tarihte, Sarah kişisel bir bağlantı kurmaya çalışacaktı, ancak erkekler onu felsefi sorular konusunda sorgulayabilecekti. Kimsenin duygusal yönünü umursamadığı için sinirlendi, diye bağırdı.

i=4;print"mniIMeosQy!t"[i::5],;i-=1;i

Çıktı:

My
My IQ
My IQ is
My IQ is not
My IQ is not me!

Entropi H(x)=3.5tam olarak öyle.

Cevabını temel olarak toptan kullandığım Jason S.'e . iiSarma hüner harika.


Güzel! Doğru entropi ile daha kısa bir cümle bulmak için aksesuarlar. Pes ettim. Ayrıca, py2'nin printonları eklemek yerine boşluk hazırladığını da unuttum
Jason S 21

Bu bir Python cevabı için inanılmaz derecede kısa! Aferin.
isaacg

36 karaktere düşmek için programınızın ortasında bulunan virgülleri kaldırabilirsiniz.
xleviator

8

C - 65

Yorum kötüye kullanımı :)

char*z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//

Bu nedenle, yeni satırlar önemlidir ve kod aşağıdaki gibi eklenmelidir:

char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//char *z="Ah, \0the \0good \0ol' \0times!";
for(printf(z);*z++;);//...

Bu güzel bir çözüm!
MilkyWay90 23

4

CJam, 24 bayt

"LwOtmiaKoezs"W):W>5%]S*

Beş kez koşarsan, Liz'in benim için uygun olduğunu söyler . Noktalama işaretleri dahil değildir, üzgünüm.

Nasıl çalışır

"LwOtmiaKoezs"  " Push that string. ";
W):W            " Push W (initially -1), increment and save the result in W. ";
>               " Shift that many characters from the string. ";
5%              " Select every fifth character, starting with the first. ";
]S*             " Wrap the stack in an array and join its strings using spaces. ";

Harika bir fikir, cümle biraz zayıf olmasına rağmen: p
aditsu

Bunu itiraf ediyorum, ama tekrarlanan harfler olmadan xxx xxx xx xx xx olmalıydı . Bu sadece ben en azından biraz anlamda yaptığı ile gelebilir cümle var ...
Dennis

Peki ya "Güneş benim için iyiydi"? "Güneş" i başka bir kelime veya adla da değiştirebilirsiniz.
aditsu

Bu daha iyi, teşekkürler.
Dennis,

3

Pyth , 32

p?kqZ4d@P"It is by a rope."dZ~Z1

İfade: "Bir ip tarafından."

Entropi: 3.5

Nasıl çalışır:

p belirtilen ayırıcı ile yazdırma anlamına gelir.

İlk argüman, ?kqZ4dayırıcıyı verir. ?kqZ4danlamına gelir k if Z==4 else d. kolduğu '', süre dise ' '.

Basılacak değer olan ikinci argüman, Pspace ( d) üzerine ( ) ve ( @) içindeki listeye dizine eklenerek oluşturulur Z.

Son olarak, Zotomatik olarak 0'a başlatılan, 1 ( ~Z1) ile artırılır .


2
Bu evrenin doğal olarak ^^ 'de uygun olacağı bir bağlam düşünemedim
saat

1
@flawr "Topu nerede yaşadım?" "Bir ip tarafından."
isaacg

3

Golf Betiği, 53

Bu eğlenceliydi.

{'1'-print}:puts;.'You; are; not; a; duck.'';'/\,=\1+

İfade: "Sen ördek değilsin." (bu tamamen doğrudur; entropi 3.5110854081804286)

Açıklama:

Yığın ''ilk "çalıştırmada" (STDIN bulunmadığından) olduğu gibi başlayacaktır . '1'kodun kaç kere yapıştırıldığını belirtmek için buna eklenir.

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: '' ''
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (0)
                              # Stack: '' [words] 0
=                             # Stack: '' 'You'
\1+                           # Stack: 'You' '1'

Şimdi ikinci koşuda ne olacak:

{'1'-print}:puts;             # Hacky stuff (see below)
.                             # Stack: 'You' '1' '1'
'You; are; not; a; duck.'';'/ # Initialize the array of words
\,                            # Get the length of the string of '1's (1)
                              # Stack: 'You' '1' [words] 1
=                             # Stack: 'You' '1' ' are'
\1+                           # Stack: 'You' ' are' '11'

Ve bunun gibi.

“Ama,“ düşünüyorsun ”, 1'lerin çıkmamasını nasıl sağlıyorsunuz?” Ah, bu eğlenceli hack kısmı. Golfscript puts(program sona erdiğinde çağrılır) şöyle uygular :

{print n print}:puts;

Ben sadece değiştirdim

{'1'-print}:puts;

Böylece 1son çıktıdan s baskılanır.


3

J - 42 karakter

Daha kısa bir cümle için gidebilirim, ama neden? Benim favorim olmazdı.

(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '

Bu, J'nin monad / dyad ikiliği nedeniyle işe yarıyor: her fiil bir monad olarak - sağında bir argümanla - veya bir dyad olarak - solda ve sağda bir argümanla çağrılabilir.

J REPL ile aşağıdaki oturumu göz önünde bulundurun:

   'You multiplied 6 by 9. '
You multiplied 6 by 9.
   'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
You multiplied 6 by 9. You multiplied 6 by 9.
   ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '   NB. break into words
+---+----------+-+--+--+---+----------+-+--+--+
|You|multiplied|6|by|9.|You|multiplied|6|by|9.|
+---+----------+-+--+--+---+----------+-+--+--+
   (#\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '             NB. count off
1 2 3 4 5 6 7 8 9 10
   (6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '         NB. mod 6
1 2 3 4 5 0 1 2 3 4
   (1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '
1 0 0 0 0 0 1 0 0 0
   (#~ 1 = 6 | #\) ;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. '  NB. select
+---+----------+
|You|multiplied|
+---+----------+
   (#~ 1 = 6 | #\)&.;: 'You multiplied 6 by 9. ' , 'You multiplied 6 by 9. ' NB. undo ;:
You multiplied

Orada, ,bir dyad olarak kabul edilir, çünkü iki argüman arasındadır ve (#~1=6|#\)&.;:bir monad olduğu için sol argümanı yoktur. Bu yüzden, ,ne zaman didik ve (#~1=6|#\)&.;:ne zaman monadik olunca hareket edebilecek bir fiilimiz olsaydı, biz kurulurduk.

Daha önce tahmin ettiğiniz gibi, böyle bir birleşme var ve benziyor :. Monadic f :geşdeğerdir fve gdiyadik zamana eşdeğerdir . Bu problemi çözer.

Tryj.tk adresinde kendiniz deneyebileceğiniz örnekler :

   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by
   (#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '(#~1=6|#\)&.;: :,'You multiplied 6 by 9. '
You multiplied 6 by 9.

Ve evet, tersinin niteliği ;:onu takip eden boşluklar olmayacak şekilde yapar.

Kullanılması It is by a rope.ifade olarak 35 kömürü verir: (#~1=6|#\)&.;: :,'It is by a rope.'. Cümlemem için, gizemli ;:sebeplerden ötürü , bizim gibi takip eden alana ihtiyacımız yok .


3

BBC Basic, 40

Bir yeni hat içerir. Anahtar kelimeler ASCII yerine belirtilmiş olarak değerlendirilebilirse 30 olacaktır.

Kız arkadaşımı sütçü ile uyurken yakaladım, o yüzden onu terk ettim ve kız kardeşi intikamsız olarak uyuyorum. As my ex do I!(beş karakterli "benzersiz karakterli" kelime ") yeterli entropi değildi, bu yüzden sonunda entropi'yi tam 3.5 yapmak için dil dışına gülen suratı ekledim. Sonuçta, gerçekte oldukça garip bir hayatım var, garip bir sabun operası değil.

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Programı 5 kez tekrarlıyoruz

  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P
  READa$:PRINTa$;" ";
  DATAAs,my,ex,do,I:-P

Yalnızca 5 READifade yürütülür ve ilk 5 veri maddesi ilk DATAifadeden okunur . verilerin geri kalanı gereksizdir. Çıktı:

  (once)
  As 
  (5 times)
  As my ex do I:-P 

2

Ruby, 50

puts'The fat pig can fly.'[0..File.size($0)/12-1]#

Bu, kelimelerin kaç tanesinin basılacağını belirlemek için kendi uzunluğunu kullanır. Aksi halde, yorum karakteri bittiğinde tekrarları göz ardı edilir #. Bitpwner'dan ödünç alınan ifade: her kelimede aynı sayıda harften oluşan kısa bir cümle kurmak çok kullanışlıdır.

Biten her sözcük + 4 karakter olduğu için, formül 56-uzunluk programı için örneğin olacaktır: (File.size($0)/56)*4 - 1ama, vaktinden bölebilirsiniz 56/4 = 14, böylece File.size($0)/14 - 1, birkaç karakter tasarrufu. 50bir katı değil 4, ancak 12gerekli aralık için yeterince yakın.


2

Çip , 165 + 3 = 168 bayt

Bayrak için +3 -w

| ,z `Z`Z  `Z
| |ZZZ>Z>ZZZ>ZZZZ
>((((((((((((((((
|)-)))-)-)))-))))g
|)d)xx-x-)xx-))x)e
||b+))-x-x))-x)xc
|`v))xa(-x(x-((^d
|*`.))d| b | b
|Z~<b( |~Zf|
>~T| | |   |

“Kırmızı takım elbisesi kazandım” (3.5) (Aslında böyle bir şey kazanmadım) (... henüz)

Sondaki yeni satırı not alın, böylece birleştirilmiş kopya mevcut kodun altında belirir.

Çevrimiçi deneyin! (orijinal)
Çevrimiçi deneyin! (orijinal, artı dört kopya)

Bu biraz karışık bir karmaşa. En zor bitin sonlandırma koşulu olduğu ortaya çıktı. (İlk yinelemem kelimeyi bastı, ardından bitmeyen bir boş bayt akışı ...).

Nasıl çalışır

İlk önce ifade:
12 benzersiz karakter + 4 boşluk = tam olarak 3.5 entropi.

Ve kod:
Her kopya ilk sözcüğü yazdırır, ardından sonraki kopyayı yazdırmak için aşağıdaki kopyayı söyler. Yalnızca bir örnek varsa, ikinci bir kopya yoktur, bu nedenle ilk sözcük dışında hiçbir şey yazdırılmaz.

İki kopya varsa, her ikisi de ilk kelimeyi aynı anda basacaktır (baytlar birlikte OR'dur bu yüzden iyidir), o zaman sadece ikinci kopya ikinci kelimeyi basacaktır.

Beş kopya da mevcutsa, tümü ilk sözcüğü, vb. Vb. Yazacaktır ve beşinci kopya son sözcüğü tek başına yazacaktır.

Sonlandırma devresi, tüm kopyalar aktif olarak yazdırılmaz yazdırılmaz programı sonlandırır.


1

Ruby, 63

+1;puts"See Dick and Jane run!"[/(.*?( |!)){#$.}/]if($.+=1)==$.

1

Perl, 37

print qw(My IQ is not me!)[$i++].' ';

Comperendinous'un sahip olduğu gibi, fakat birkaç karakter daha kazanmak için perl'nin qw değerinden yararlanın.


1

Rebmu mesaj uzunluğu + 27

"IQ'm ben değilim!" İle mi gidecektik? 43 olabilir. Ama bu mesajı destekliyorum:

uV?'s[S[{The}{rebellion}{against}{software}{complexity.}]]proTKsPROsp

Eşdeğer Rebol / Kırmızı:

unless value? 's [
    s: [{The}{rebellion}{against}{software}{complexity.}]
]

print/only take s
print/only space

Rebol'un 3 temel koşulu vardır: IF, EITHER ve UNLESS. UNLESS, IF NOT'a eşdeğerdir ancak daha açık olabilir: "Her zaman aşağıdaki UNLESS'i yapın, bu durum doğru olur."

Bu durumda şart, test ettiğimize, S sembolüne geçerli bağlamda bir değer verilip verilmediğini görmek. Bunun üzerine bir alıntı kullanmak zorundayız, çünkü koşullu bir ifadede alıntılanmamış bir S kullanmaya çalışmak bunu değerlendirir ve muhtemelen bir hataya yol açar. ( value?parametresini varsayılan olarak belirtmez, çünkü kontrol ettiğiniz sembolün bir değişkende olmasını isteyebilirsiniz, örneğin sym: 'so if value? sym [...]zaman S'nin SYM değil, tanımlanmış olup olmadığını kontrol eder)

Sadece programın ilk pastası dizileri S dizisine atayacaktır. Ardışık pastalar dizinin başından bir dizge alır ve PRINT / ONLY'a iletir, bu da argümanı bir satır beslemesi eklemeden basar.

(Not: YAZDIR / YALNIZCA Rebol 3 ve Kırmızı olarak kabul edilen PRIN'i söylemenin önerilen bir yerine getirme yöntemi; bir baskı değiştirme işlemi şimdi Rebmu'da test ediliyor.)


1

AHK , 44 bayt

i++
Send % SubStr("He is an OK ex",i*3-2,3)

Sonunda yeni satırı not alın. Buradaki tek akıllıca şey, dizgenin 3 harfli kelimeler olduğu ve bu yüzden hiçbir şeyi bölmemize gerek olmadığıdır. Bunun yerine, sadece temel alan bir alt dizgiyi çekiyoruz i. Çıktı, klavyede yazılmış gibi aktif ekrandır.


0

Javascript (53)

Metin ile aditsu'dan metin aldım, çünkü metinle süslü bir şey yapmıyorum, böylece seçilen kelimeler çözüm için bir anlam ifade etmiyor (bayt sayısı hariç).

var i=i|0;alert("He 0is 0but 0a 0dog".split(0)[i++]);

alertBu durumda sayılır mı ? Düzenleme: Kuralları okumak, muhtemelen dizeleri boşluklarla birleştirmem gibi değil. Adil hale getirmek için boşluk ekleyeceğim.

Ayrıca var, bu durumda pahalı olanın gerçekten ilgili olduğunu unutmayın .


Neden var i|=0;burada işe yaramadığını kimse açıklayabilir mi ???
kusur

@flawr Yapamazsınız |=ya da benzer var. Olmadan var, bir olsun ReferenceError: i is not defined. var i=i|0için genişler var i=undefined|0ve undefined|0görünüşte öyle 0.
nyuszika7h

Bu, kaldırma nedeniyle çalışır. var i=i|0eşittir var i;i=i|0. Bu yüzden referans hatasını anlamıyorsunuz. İlk defa 0 olarak ayarlanmasının sebebi @ nyuszika7h 'nin söylediği şey.
Ingo Bürk

1
Ancak bu kelimeleri ayrı ayrı uyaracaktır.
Gurur haskeller

0

Perl, 43 56

print substr'Mine was not Red 5!',4*$i++,4;

Bunu kazanamayacağımı kabul ediyorum. Orijinal girişimim nedenini açıklıyor:

@a=('This',' code',' is',' too',' long.');print$a[$i++];

0

Lua, 77

Oldukça basit bir çözüm:

i=(i or 0)+1;io.write((i==1 and""or" ")..("Thebigfoxwasup."):sub(3*i-2,3*i))

(H (x) = 4.23)


0

Javascript, 138

g=this;clearTimeout(g.t);g.i|=0;i++;g.t=setTimeout(
    function(){console.log(["I'll","sleep","when","I'm","dead."].slice(0,i).join(' '))},0);

(ek yeni satır sadece okunabilirlik için eklenmiştir)

Yazdırır I'll sleep when I'm dead. Çıktının yalnızca bir kez yazdırılmasını sağlamak için bir zamanlayıcı kullanır


0

Saf Bash, 51 bayt

a=(All you need is Love!)
printf "${i:+ }${a[i++]}"

H (X) = 3,59447

Bu, kısa cümleciklerden birini gizleyerek biraz daha golf oynayabilir, ancak Descartes Lennon'un en ünlü alıntılarından birine sadık kaldığım için mutluyum . (Üzgünüz @Descartes, ancak tüm kelimelerin benzersiz olması gerekir).

Çıktı:

$ ./phrase.sh 
All$ cat phrase.sh phrase.sh phrase.sh > phrase3.sh
$ chmod +x phrase3.sh 
$ ./phrase3.sh 
All you need$ 
$ cat phrase.sh phrase.sh phrase.sh phrase.sh phrase.sh > phrase.sh
$ chmod +x phrase5.sh 
$ ./phrase5.sh 
All you need is Love!$ 

Kelimeler arasına boşluk koymaya özen gösterir, ancak satır başında veya sonunda boşluk olmaz.

Basta tanımsız değişkenlerin, dizge olarak genişletildiğinde "" değerine sahip olduğuna, ancak genişletildiğinde aritmetik olarak 0 değerine sahip olduğuna güvenir.


5 kelime benzersiz olması gerekiyor ...
trichoplax

Kodunuz, herhangi bir 5 kelimeli cümle ile baş edebilecek kadar çok yönlü göründüğünden, 3.5 değerinde gerekli entropiye sahip bir tane olduğunu düşünebilirsiniz (bunda çok fazla çift harf ...).
trichoplax

@githubphagocyte Bana yuvarlamanın yararını vereceğini umuyordum ;-) Tamam, !şimdi fazladan bir şeyle düzelttim - hile yapıyor gibi görünüyor.
Dijital Travma,

0

PHP 89 78 karakter

Biraz ayrıntılı ve kesinlikle kazanmayacak, ama yine de eğlenceliydi. İşte ne buldum

İfade:

code golf is pretty fun

Entropi = 3.82791

Kod:

<?
$i=(isset($i)?$i+1:0);
$w=["code","golf","is","really","fun"];
echo $w[$i].";

golfed:

<?$i=(isset($i)?$i+1:0);$w=["code","golf","is","really","fun"];echo $w[$i].

0

Python3 - 122 bayt

Pod bölmesinin kapılarını açın [HAL]

Sanırım bununla bir miktar inek kazanacağım. Keşke soru bir kelimeye izin verirse ...

Programımın yaptığı dosya adını alıyor (p.py tabandır) ve taban adının kaç kez yinelendiğini kontrol eder. Daha sonra dize nzamanlarından dilimler alır . dosya adındaki s nsayısı p.

import sys,re
for i in range(len(re.findall(re.compile('p'),sys.argv[0]))):print('Otpbdphoaoeedyon   r    s'[i::5],end='')

~ $ python p.py
Open

~ $ python pp.py
Open the

~ $ python ppp.py
Open the pod

~ $ python pppp.py
Open the pod bay

~ $ python ppppp.py
Open the pod bay doors

Regex'in faydası, programın istediğiniz şekilde çağrılabildiği ve yine de çalışabileceği (koddaki temel adını değiştirmenizi sağlayan) olmasıdır: orijinal programım golfed.py olarak adlandırıldı.


0

05AB1E , 21 bayt (Rekabet etmeyen )

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?

Çevrimiçi deneyin!

Kullanım Alanları:

This works for literally anything. 
H(x) = 4.02086

açıklama

“€Œ‰‹€‡Øš‹É.“ª#¾è¼?ð?
“€Œ‰‹€‡Øš‹É.“ª        # Pushes "This works for literally anything."
              #       # Split on spaces
               ¾è     # get element at index of counter_variable (default 0)
                 ¼    # Increment the counter_variable
                  ?   # Print the selected element
                   ð? # Prints a space

Bunu görmedim, “€í€Ü€…‚¿‹·“hehe ile aynı yakın yayınlanan
Magic Octopus Urn


0

SmileBASIC, 54 bayt

DATA"Does"," anybody"," have"," a"," key?
READ W$?W$;

"Kum yenebilir" i tercih ederdim. ancak bu bir şekilde entropi testini geçememektedir. Elbette daha kısa bir cümle seçebilirdim ama bu çok sıkıcı.

READAnahtar kelime bir değeri okur DATAbir değişkende saklar bunu. READTekrar kullanmak bir sonraki maddeye geçecektir.


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.