Beş basit program arasında harfleri tekrarlamaktan kaçının


12

Sorun, aşağıdaki 5 görev için 5 farklı tam program yazmaktır:

  1. Yazdır Hello, World!

  2. STDIN ile bir girdi verildiğinde, faktöriyeli çıktılayın, girdinin> = 0 bir tamsayı olduğunu varsayabilirsiniz.

  3. N tamsayısı verildiğinde, <= N primerlerinin toplamını hesaplayın

  4. STDIN ile bir giriş verildiğinde, girişte kullanılan harflerin çıktısını alın. Örneğin: giriş, Hello worldçıkış yapmanız gerekir helowrd. Çıktının küçük harf olduğunu unutmayın. Girdinin beyaz boşluklarla her zaman alfabetik olduğunu, beyaz boşlukların yok sayıldığını varsayabilirsiniz.

  5. Aşağıdaki pırlanta aynen bu şekilde çıktı alın:

       *
      ***
     *****
    *******
     *****
      ***
       *
    

Tüm bu zorluklar muhtemelen çok kolay, ancak bir sorun var. Kullandığınız her harf diğer programlarda tekrar kullanılamaz . Bu yasak değildir, ancak size +8 baytlık bir ceza verecektir . Örneğin, bu ilk görev için programınızsa:

print("Hello, World!");

Sonra (büyük harf veya küçük formda) Aşağıdaki harf kullanamazsınız: p, r, i, n, t, h, e, l, o, w, ddiğer programlarda. Bunları kullanmanız gerekiyorsa, her harfi 8 bayt için 'satın alabilirsiniz'. Yani mektubu lbaşka bir programda tekrar kullanmak isterseniz , 8 bayt ceza alırsınız. Cezayı ödedikten sonra, her mektubu bu programda istediğiniz kadar kullanabilirsiniz. Diğer karakterler önemli değil. Ayrıca, 5 programın tümü aynı dilde olmalıdır.

Bu , yani en az bayt miktarı kazanır!


3
Bu, halihazırda yaşadığımız zorluklara biraz farklı bir dönüş, ancak gözlerimde çoklu dupe olmaması için yeterince farklı değil.
Mego

3
@Mego Kısıtlama olmaksızın bunu çoklu kopya olarak kapatmak için oy verirdim, ancak kısıtlama onu tamamen yeni bir oyun haline getiriyor.
trichoplax

1
3 programda belirli bir mektup kullanırsanız, 8 baytlık cezayı iki kez (16 bayt) ödüyor musunuz?
trichoplax

1
@trichoplax, evet 16 bayt ödüyorsunuz
Adnan

1
@trichoplax Çok zor. Çoğaltılan sorunlara yönelik mevcut çözümler hala rekabetçi olacaktır. Buradaki en iyi çözümler, cezadan daha yüksek bir puanla, tekrarlanan soruların çözümlerinin birleştirilmesi olacaktır.
Mego

Yanıtlar:


10

CJam, 73 bayt

"Obkkh+'Phukc&"7f^
q~m!
ri){'j3+_3++~},:+
lS-el_&
4{_' *4@-Y*('**+}%_1>W%\+N*

Her satır tam bir programdır. Onları çevrimiçi deneyin: 1 | 2 | 3 | 4 | 5

Mektup haritası

 bc  f h  k   op    u       18
            m   q            4
        ij       r          17
    e      l      s          7
             n        w y   27

İsterseniz (ve programlarınızın her biri bir satıra sığarsa ), kendi sunumunuz için bir mektup haritası oluşturmak için bu CJam programını kullanabilirsiniz .


Oskript'in bunun için oluşturulmadığının kanıtı: Tüm gönderiminiz 2 programımdan az. XD +1, iyi iş çıkardın.
Addison Crump

4

Pyth, 90 bayt

İlk girişim...

Görev 1: 20 bayt

+"Hello, "+C87"orld!

Görev 2, 3 bayt

.!Q

Görev 3, 9 bayt

sf}TPTSvz

Görev 4, 6 + 8 = 14 bayt

@G{rw0

Görev 5, 44 bayt

"   *
  ***
 *****
*******
 *****
  ***
   *

3

osascript, 759 Bayt

Başladığımda bunun çok olacağını biliyordum. oo

Görev 1: 15 Bayt

"Selam Dünya!"

Bu noktadan itibaren kötü olacağını biliyordum.

Görev 2: 64 + 8 * 4 = 96 Bayt

koşarken bir
o değerini 1 olarak ayarla
tekrarla
o değerini * o olarak ayarla
a'yı a-1 olarak ayarla
son
Ö
son

Oh gawd.

Görev 3: 170 + 8 * 13 = 274 Bayt

koşarken bir
o değerini 0 olarak ayarla
t değerini false olarak ayarla
i ile 2'den a'ya kadar tekrarlayın
t yi doğru yap
2'den i-1'e c ile tekrarlayın
i mod c = 0 ise t'yi false olarak ayarlayın
son
t sonra o değerini o + i olarak ayarlar
son
son

Dennis g'den daha iyi.

Görev 4: 225 + 8 * 13 = 329

koşarken bir
o değerini "" olarak ayarla
a öğelerinde i ile tekrarla
i karakterlerinde c ile tekrarlayın
c o değilse
ASCII sayısı c <91 ise
o değerini o & olarak ayarla (ASCII karakteri (c + 32'nin ASCII sayısı))
Başka
o değerini o & c olarak ayarla
son
son
son
son
Ö
son

...

Görev 5: 45 Bayt

"*
  ***
 *****
*******
 *****
  ***
   *"

Yani evet. En baştan kaybedeceğimi biliyordum. Ama ilginçti, bunu daha az karakterle yapmanın bir yolu olup olmadığını bilmek isterdim. Karakter haritası (Dennis tarafından sağlanan şekilde):

   yazarı: hlorw 15
bir cdef merhaba lmnop rstu w 160
a de nop rstu 57
abcdef merhaba lmnop rstu w 214
                            39
                             0

Yukarıdaki karakter sayısı biraz kapalı - yeni satırlar, yeni satırlar sayılmadıkça sorunlara neden oldu.

NOT: böyle şeyler kullanmıyor nedeni a's charactersveya benzeri olmasıdır 'karakter osascript komut satırından çalıştırırken kullanılan gerekir. Eğer 'kullansaydım, \'ya da benzeri bir şey kullanmam gerekirdi ki bu bana hiç yardımcı olmazdı. Ayrıca, sadece "string yakalayıcı olarak tanır , bu yüzden orada da vidalandım. Ama eğlenceliydi.


1

NARS2000 APL, 144 bayt (85 karakter)

Görev 1, 21 bayt (17 karakter)

⎕←"Hello, World!"

Görev 2, 10 bayt (4 karakter)

⎕←!⎕

Görev 3, 22 bayt (11 karakter)

⎕←+/¯2π⍳2π⎕

Görev 4, 53 bayt (29 karakter)

⎕←∪Q[26∣Q⍸⍞∩Q←⎕AV[97+⍳26]∪⎕A]

Görev 5, 38 bayt (24 karakter)

⎕←" *"[1+4<∘.+⍨(⍳3),⊖⍳4]

1
Bunlar gerçekten dolu programlar mı? NARS2000'i bilmiyorum (ve platformumda mevcut değil), ancak bildiğim tüm lehçelerin bir REPL dışında yazdırmak için atanması gerekiyor .
Dennis

@Dennis Maalesef, REPL'in içinde oynadığımı unuttum.
Oberon

Elmas için sondaki boşlukların çıkışına izin verilmiyor.
lirtosiast

1

Jöle , 46 bayt (rakip olmayan)

“3ḅaė;œ»
Ɠ!
ÆRS
ɠQḲŒl
4Ḷ¤‘+¤ṖṚṭ×”*Fµ4Ḷṭ4ḶṚṖ¤F×⁶+⁸Y

Çevrimiçi deneyin! (Her snippet'i kopyala / yapıştır)

Görünüşe göre, kısıtlama golf kısıtlamadı :) Sonuncusu için sadece öneriler, tabii ki, lütfen.

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.