Cesaret Atlama Krikoları


28

Bu benim ilk görevim, bu yüzden oldukça basit tutuyorum.

telnet towel.blinkenlights.nlKomut satırınızı yazdıysanız ve enter tuşuna basarsanız, sevinç sevincini yaşayacaksınız. Asciim, oldukça basit, ascii sanatıyla bir animasyon yapmaktır. Bugün biz atlama krikoları yapan bir kişinin çok temel bir asimetri yapıyor olacağız.

Tek bir topluluğa koyacağımız iki ascii resim olacak. 1 numara:

_o_
 0
/ \

2 numara:

\o/
_0_
<blank line>

İkincinin sonunda boş bir çizgi olduğunu unutmayın.

Bu nedenle programınız şu adımları izlemelidir:

  1. Konsol ekranını temizleyin.
  2. Doğru ascii sanat görüntüsünü yazdırın.
  3. Bir dahaki sefere diğer görüntüyü yapmak için bir bayrak veya başka bir şey belirleyin.
  4. Bir dakika bekleyin (yaklaşık bir saniye).
  5. 1 ile devam edin.

kurallar

  • Programınız (teorik olarak) sonsuz bir döngü olmalıdır.
  • Kullandığınız programlama dili, bu meydan okuma yayınlanmadan önce oluşturulmuş olmalıdır.
  • Bu , bayt cinsinden en kısa kod kazanır.
  • Standart boşluklar uygulanır.

Keyfini çıkarın!


<Boş satır> üzerinde biraz boşluk olabilir mi?
Jakube

1
Platformdan bağımsız olması gerekiyor mu, çünkü Linux clear komutu ( clear) Windows'dan farklıdır ( cls)
Beta Decay

1
Boş satır sadece konumlandırmayı açıklamak için mi? Ekranın üst kısmından yazdırıyorsanız, böylece boş satır görünür bir fark yaratmaz, ihmal edilebilir mi?
trichoplax

@Jakube evet boşluk olabilir.
bitsnbites

1
@trichoplax evet. Boş satır, yalnızca kafanın aynı konumda kalması gerektiğine işaret etmektir.
bitsnbites

Yanıtlar:


29

CJam, 51 45 42 38 36 bayt

"c\o/
_0_""^[c_o_
 0
/ \^["{_o\6e4m!}g

Yukarıdakiler, şapka notasyonu kullanır; dizi ^[aslında kod noktası 27 olan ASCII karakteridir.

Kaçış dizisini ( ^[c) @DomHastings'in cevabından ( izniyle ) 4 bayt kurtarmak için ödünç aldım .

Doğrulama

Dosyayı şu şekilde yeniden oluşturabilirsiniz:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Kodu çalıştırmak için, CJam yorumlayıcısını indirin ve şunu yürütün:

java -jar cjam-0.6.5.jar jj.cjam

Bu, konsol_ kodlarını veya uygun bir altkümeyi destekleyen herhangi bir terminalde çalışacaktır . 1

Nasıl çalışır

e# Push both jumping jacks on the stack.

"c\o/
_0_"

"^[c_o_
 0
/ \^["

e# When chained together, they contain two occurrences of the string "\ec",
e# which resets the terminal. Encoding the ESC byte in the second string
e# eliminates the need two escape a backslash before the string terminator.

{         e# Do:
  _o      e#   Copy the jumping jack on top of the stack and print the copy.
  \       e#   Swap the order of the jumping jacks.
  6e4m!   e#   Calculate the factorial of 60,000 and discard the result.
          e#   This takes "about a second".
}g        e# Since the discarded factorial was non-zero, repeat the loop.

1 Programı çalıştırmadan önce terminalin imlecini gizlerseniz, atlama jakları daha iyi görünecektir. Örneğin, Konsole'de imlecin rengini arka plan rengiyle eşleşecek şekilde ayarlayabilirsiniz. Terminali ^[csıfırladığından, terminal ayarlarıyla yapılmalıdır .


36
Sadece +1 Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHproductions

Belki de "bir truthy değeri döndüren ve hesaplanması yaklaşık bir saniye süren anlamsız işlem" için bir 2Fm*bayt kısa alternatif 6e4m!.
Lynn

@ Mauris ile benzer bir şey denedim e!, ama onlar not almak gibi görünüyor. İlk yinelemeden sonra, zavallı Jack kalp krizi geçirir ...
Dennis,

10

Pyth - 41 40 39 bayt

.VZ"\x1b[H\x1b[J"@c"_o_
 0
/ \\\o/
_0_"Tb .p9

( \x1bSO özel karakterleri yok ettiğinden beri bir bayt olarak sayıyorum ).

Açıkça çevrimiçi çalışmaz çünkü a) sonsuz bir döngü ve b) terminal çıkış kodları kullanır.

#                Infinite loop
 "..."           Print escape sequences to clear screen
 @               Modular indexing
  c     T        Chop at index ten into the constituent frames
   "..."         Frames 1 & 2 concatenated (Pyth allows literal newlines in strings)
  ~              Post assign. This is an assign that returns the old value.
   h             Increment function. Putting it after an assign makes it augmented assign.
   Z             Variable auto-initialized to zero.
 .p9             Permutations(range(9), 9). Takes about a second on my machine.

Arttırılmış atamanın post-ata ile çalıştığını öğrendiğimde şaşırdım. Pyth harikadır.


.V0sonsuz döngü olarak kullanın
Jakube

OP'nin boş satırın açıkça yazdırılması gerekmediğini doğruladığı için bir bayt kaydedebilirsiniz
trichoplax

@Jakube hiçbir şey kaydetmiyor gibi görünüyor.
Maltysen

Siz açıklamanız kodunuza uymuyor: P
Beta Decay

9

QBasic, 58 bayt

QB64'te test edilmiştir .

CLS
?"_o_"
?0
?"/ \"
SLEEP 1
CLS
?"\o/"
?"_0_"
SLEEP 1
RUN

Sorun için doğru dil, genellikle ayrıntılı olsa bile şaşırtıcı bir şekilde rekabetçi olabilir. ?Kısayol PRINTelbette çok yardımcı olur. CLSolan cl kulak s creen; RUNbağımsız değişkenler olmadan, programı sonsuz bir döngü elde etmenin en kısa yolu yeniden başlatır.

Buradaki diğer numara 0, ilk resmin midsection için baskı . QBasic, yazdırırken negatif olmayan sayısal değerlerin önüne (ve sonrasında) bir boşluk koyar ve sonuç olarak ortaya çıkar 0 . 3 karakter bitti " 0".

Ayrıca, bu koddaki gecikmenin kelimenin tam anlamıyla bir saniye olduğunu ve makineye bağlı olmadığını da söyleyebilirim . ; ^ P


2
BASIC'in çeşitli sürümlerinde sayıları yazdırırken etrafındaki boşluklardan rahatsız olduğumu hatırlıyorum.
Bunun

7

Perl (* nix) , 54 bayt

sleep print"\x1bc",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

( \x1b1 bayt olarak sayılır ancak daha kolay test için kaçar.) Yukarıdaki Bash ile test edildi ve @Dennis sayesinde başka bir bayt tarafından kısaltıldı !

Perl (Windows) , 56 bayt

sleep print"\x1b[2J",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

Test ve önerileri için @ Jarmex'e teşekkürler !


2
Windows'ta işe yaramadığından korkan, ancak: 1 print"@[2J"tırnak içindeki @ işaretini ASCII 27 ile değiştirmek (yalnızca test amacıyla print"\033[2J"daha kolay olabilir):
Jarmex

\eBir hazır bilgi ESC baytı ile değiştirebilirsiniz . - Cevabımdaki \ecnumarayı kullanırsam sorun olur mu?
Dennis,

Elbette @Dennis, çünkü "\e"zaten bunun için sadece bir kısayol. Lütfen devam et!
Dom Hastings

6

Javascript (ES6), 109 93 79 70 bayt + HTML, 12 10 bayt = 120 106 91 80 bayt

Yeterince açıksözlü. Görüntüleri saklamak için şablon dizeleri kullanır ve hangisinin kullanılacağını belirlemek için bir boolean değeri değiştirir.

NOT: Bu çözüm, aslında bir konsol kullanmadığından geçerli olmayabilir. Ancak, JS kullanarak bir tarayıcı konsolunu temizlemenin mümkün olduğunu sanmıyorum, en azından Firefox kullanırken.

a=!1,setInterval(_=>O.innerHTML=(a=!a)?`_o_ 
 0
/ \\`:`\\o/ 
_0_`,1e3)
<pre id=O>


1
@ orlp Code, animasyonlu adamı yaratır. (Chrome @ Windows). Bununla birlikte, konsol tabanlı değil GUI tabanlı. Bu şekilde geçerli sayılmaz.
Justin,

3
1. Bilgisayarımda bu, Firefox'ta iyi çalışıyor ancak Chrome'da çalışmıyor, bu yüzden karışıklığı önlemek için ECMAScript 6 olarak etiketlemeniz gerektiğini düşünüyorum. 2. <pre id="a"/>HTML bölümüne girerseniz <pre>, koddaki etiketlere ihtiyacınız yoktur .
Dennis,

1
Veya daha iyisi, HTML kurtulmak ve değiştirme document.getElementById`a` ile document.body.
NinjaBearMonkey 6:15

1
Ben HTML yaparak 87 bayt var <pre>ve yapıyor document.all[4]. Bu, sarmalayıcı dizgiden kurtulmanızı ve sadece onu yapmanızı sağlar innerHTML=a?`...`:`...`}.
NinjaBearMonkey 6:15

1
Bu benim için Chrome'da çalışmayı durdurdu
Beta Decay

5

Bash, 86 84 bayt

while sleep 1;do printf "\e[2J_o_\n 0\n/ \\";sleep 1;printf "\r\e[2J\o/\n_0_\n";done

3

Python 2,99 bayt

Windows üzerinde çalışır

import os,time
g=0
while 1:os.system("cls");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

UNIX makineleri için iki bayt ekleyin:

import os,time
g=0
while 1:os.system("clear");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

3

awk - 95 92 86 84 83

END{
    for(;++j;)
        system("clear;printf '"(j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")"';sleep 1")
}

Güzel antrenman: D Sadece bunun mümkün olup olmadığını merak ettim. Ancak kazanacak fiyat yok ...;)

Birisi bunu test etmek istiyorsa: Programı çalıştırdıktan sonra, gerçekten END bloğunu başlatmak için Ctrl + D tuşlarına basmanız gerekir. Sonlandırmak için Ctrl + Z kullanmam gerekiyor.

Ayrıca, sadece 74 baytlık bir sayıya sahibim, fakat sanırım istenen davranış olmayan bir saniyenin duraklatılmasıyla başlıyor.

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}

1
Uyku üç saniyelik aralıklarla ölçüm yapar mı?
trichoplax

Aman Tanrım. ipucu için teşekkürler :) Veya bir ipucu değilse: Hayır, bu sadece 0.33 saniye uyudu.
Cabbie407

Awk bilmiyorum ama saniyeler içinde ölçecek gibi görünüyordu. :)
trichoplax

1
Daha hızlı hareket ediyor eğer sadece orada golf hakkında unuttuğunu, bu nedenle daha fazla komik görünüyor; D
Cabbie407

Uyku komutu btw, awk 's bash değil
Cabbie407

2

Toplu iş - 82 bayt

Düzenleme: Zaman aşımı komutunu susturup fazladan yeni satırı kaldırır

cls&echo _o_&echo  0&echo / \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

2 benzer toplu cevap daha gördüm, bu yüzden bunu göndermek istemedim, ama bu benim ilk golf.


1
Fakat çıplak timeout 1bir şekilde konsola çok fazla istenmeyen sonuç çıkacak
edc65

Doğru, fazladan çıkışım vardı. Düzenlenen.
Peter Lenkefi

1
belki >mulbu tür bir hatadır, ya da ne nulolduğunu bilmiyor olabilirsin . en.wikipedia.org/wiki/Null_device
edc65

@ edc65 Kopyala yapıştır işleminin geri çekilmesi ve test edilmemesi. Teşekkür ederim!
Peter Lenkefi

2

BBC BASIC, 75 bayt

Tokenleştirme işleminin onu 75 bayta çektiğini unutmayın. Boşluk IDE tarafından eklenir.

      g=0
   10 IFg=0THENPRINT"\o/":PRINT"_0_"ELSEPRINT"_o_":PRINT" 0 ":PRINT"/ \"
      g=1-g:WAIT 100CLS:GOTO10

Program boyutunu gösteren özellikler


2

JavaScript ES6, 100 95 bayt

(f=_=>{console.log(_?`_o_
 0
/ \\`:`\\o/
_0_`)
(b=setTimeout)(q=>(clear(),b(b=>f(!_))),1e3)})()

Konsola giriş yapar. Safari Gecesi'nde test edildi


2

Toplu, 151 130 118 bayt

cls
@echo _o_
@echo  0
@echo / \
@PING -n 2 127.0.0.1>NUL
cls
@echo \o/
@echo _0_
@PING -n 2 127.0.0.1>NUL
%0

OP'nin boş satırın açıkça yazdırılması gerekmediğini doğrulaması nedeniyle birkaç bayt tasarruf edebilirsiniz
trichoplax

Bunun @PING 127.0.0.1 -n 2>NULyerine 12 karakter kullanabilmelisiniz . Ping, varsayılanlar denemeler arasında bir saniye beklemeye devam eder, bu yüzden bu doğru olmak için birkaç milisaniye içinde, bu zorluk için yeterince yakın. Referans
AdmBorkBork

12 kapalı golfed TimmyD sayesinde bayt
Max

2

CBM 64 TEMEL V2, 121 119 112 117 bayt

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN

?CHR$(147)Ekranı temizliyor mu ? Öyleyse, OP'nin boş satırın açıkça yazdırılması gerekmediğini onaylamasından sonra 2 bayt kaydedebilirsiniz
trichoplax 6:05

Bu, ilk animasyon karesini üretmez (yani, kolların düz olduğu yerlerde).
Psychonaut

haklısın ... düzelteceğim!
Maksimum

1

Julia, 70 bayt

( Windows'ta undergroundmonorail clearile değiştirilerek cls)

n(i=1)=(sleep(1);run(`cls`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Linux'ta 72 bayt

n(i=1)=(sleep(1);run(`clear`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Bu, \nbir bayt kaydetmek yerine gerçek yeni satırları kullanır ; Aksi takdirde, i"bayrak" olarak 1 veya -1 olur ve sonsuz döngüyü elde etmek için özyineleme kullanır. Ya öyle ya n(1)da sadece n().

Ayrıca run(`clear`)/ run(`cls`), pencereyi temizlemek için bir kabuk komutu kullanır, çünkü Julia'nın yerleşik bir pencere temizleme komutu yoktur.


Eğer pencerelerde bu çalıştırırsanız değiştirerek iki bayt kaydetmek cleariçin cls(Ben Julia hakkında hiçbir şey bilmiyorum, tahmin ediyorum).
undergroundmonorail

@undergroundmonorail - Teşekkürler, ama Ubuntu kullanıyorum, cls çalışmıyor. Umarım Julia gerçek bir terminal temizleme işlevi uygulamaya karar verir.
Glen O

@GlenO Windows'ta clsçalışıyor (cevabımı gör)
Beta Decay

1

Windows Toplu İş, 83 89

Edit OP ile açıklamadan sonra boş satır kaldırıldı

@cls&echo _o_&echo  0&echo./ \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Zıplayan adamdaki boş çizgiden kurtulursanız (bu şekilde görülemez), puan 83'tür.

Not: timeoutWindows XP'de mevcut değildir. Vista veya daha yeni sürümlerde çalışır. Üstelik timeoutikincisi için kesin değildir, bu yüzden 4. adımı uygulamak için mükemmel bir seçimdir (Bir saniye bekleyin ( yaklaşık bir saniye ))


1

Javascript (ES6), 82 bayt

Konsolu kullanan önceki cevabımın değiştirilmesi . Kısmen Firefox'ta çalışıyor, ancak yalnızca konsolu Chrome AFAIK'te temizliyor.

a=!0,c=console,setInterval(_=>c.log(c.clear(a=!a)|a?`_o_
 0
/ \\`:`\\o/
_0_`),1e3)

Her zaman olduğu gibi, öneriler hoş geldiniz!


Sevdim! Bu sayede Chrome'un şimdi de benim için ES6'yı çalıştırdığını fark ettim!
Dom Hastings

@DomHastings Daha önce Chrome'da hiç geliştirmedim, ancak varsayılan olarak ES6'yı desteklemediğini duydum, bu yüzden senin kadar şaşırdım! :)
ETHproductions

1

JavaScript, 92 91 89 bayt

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • ES6 özelliği yok (ancak onlarla çok daha kısa olacaktır)
  • Linux'ta Node.js ile çalışır (diğer ortamlar hakkında bilmiyorum)
  • Kısmen Chrome konsolunda çalışır (konsolu ctemizlemek yerine çıktıyı göstermek yerine gösterilir)

Çıkarma "\033c"+Yukarıdaki koddan aşağıdaki tarayıcıda çalışır, ancak konsolu temizlemez.

x=0;setInterval(function(){console.log(["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)


Etkileyici iş! ES6 özelliklerini kullanarak, 77 elde ediyorum: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Bazı nedenlerden dolayı JS console.log, işlev olarak ASCII erkeğini fazladan bir param olarak geçirmeme izin vermiyor .
ETHProductions

@ETHproductions Teşekkürler! ES6'da yapmayı düşündüm, ancak hiç kullanmadım ve io.js yüklenmemişken kullanmamaya karar verdim. Kadarıyla geçmek mümkün değil varlık olarak console.logkarşı setInterval, sebebi işlevi geçirerek, ama demeyeceğiz olmasıdır. Daha önce değerlendirilecektir setIntervaldenilen ve o zamandan beri console.logdönmez, aslında geçen olacağını undefinedetmek setInterval. Mantıklı olmak? Ve kısalttığınız için teşekkürler!
Nateowami

Ne dediğini anlıyorum, ama bu sayfaya göre , bu kod çalışmalı: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <satır sonu> 0 <satır sonu> / \ `, \\o/<line break>_0_] [x ^ = 1]) console.logile değiştirirseniz bir hata alert.
ETHProductions

Ah, söylediklerini anlıyorum. Bence asıl sorun, her seferinde farklı bir şeyler kaydetmemiz gerektiği, ancak "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]çağrılmadan önce değerlendirilmemiz setInterval.
Nateowami

0

Ruby, 79 bayt

k=!0;loop{puts((k)?"\e[H\e[2J_o_\n 0\n/ \\":"\e[H\e[2J\\o/\n_0_");k=!k;sleep 1}

Kaçış kodları gerektirir.


0

İleri, 86 bayt

Çıkış karakterleri için GNU Forth gerektirir. , Forth olmayan bir GNU içinde sadece değişimi çalıştırmak için S\"için S", ve kaçan karakterler doğru baskı olmayacaktır.

: P PAGE TYPE CR 999 MS ;
: R BEGIN S\" \\o/\n_0_" P S\" _o_\n 0 \n/ \\" P 0 UNTIL ; R


0

CBM BASIC v2.0 (68 karakter)

0?"S_o_q||0q||N M":goS1:?"SMoN":?"_0_":goS1:gO
1wA161,255,pE(161):reT

Stack Exchange işaretlemesi PETSCII karakterlerini doğru şekilde göstermediğinden yukarıdakiler bazı açıklamalar gerektirir:

  • Program burada küçük harflerle kolaylık sağlamak için gösterilmiştir, ancak Commodore 64'te büyük harf modunda girilebilir ve çalıştırılmalıdır.
  • Birinci ve üçüncü "S" karakterleri aslında ters videodadır ve CLR( SHIFT+ HOME) tuşuna basılarak üretilir .
  • "Q" karakterleri aslında ters videodadır ve aşağı imlecine ( CRSR ⇓) basılarak üretilir .
  • "|" karakterler gerçekte ters videodadır ve sol imleci ( SHIFT+ CRSR ⇒) basarak üretilir .

0

balmumu ,119 113 bayt

ph0`J2[`}ghq'-<gh0N}`0`}gN`/o\`Ngh0`J`<
>g}`o`}N` `0>'d`0 `N`/ \`0hg>-'phg}`[2`b
dF1f+5~Zzf(.FP9f..F3_#     d   <

Programın önemli kısımlarının açıklaması:

left to right  right to left

3FBf   or       fBF3          27       ASCII code for (esc)
3             [x,x,3]•        set lstack 1st to 3
 F            [3,3,3]•        set lstack to 1st
  B           [3,3,27]•       1st=1st^2nd
   f                          push lstack 1st on gstack
——————
9PF.(f   or    f(.FP9         102400   counter to roughly match a wait time
                                       of 1 s on my i5 2410M Laptop
9             [x,x,9]•        set lstack 1st to 9
 P            [x,x,10]•       increment 1st
  F           [10,10,10]•     set lstack to 1st
   .          [10,10,100]•    1st=1st*2nd
    (         [10,10,102400]• 1st=1st<<2nd (100<<10=102400, arithmetic shift left)
     f                        push lstack 1st on gstack
——————
zZ~5+f   or    f+5~Zz         95       ASCII for '_'
z             [0,0,0]•        initialize lstack to zero
 Z            [0,0,90]•       get value from relative coordinate (0,0),
                              which is the location of `Z` itself, ASCII(Z)=90
  ~           [0,90,0]•       flip 1st and 2nd lstack values
   5          [0,90,5]•       set lstack 1st to 5 
    +         [0,90,95]•      1st = 1st+2nd
     f                        push lstack 1st on gstack

fVar daha sonra kullanmak için gstack (genel yığını) değerleri itin. Bu değerlere 0gh(veya yansıtılmış hg0) ve hg( gh) talimatlarıyla erişilir . hgstack'ı yukarı doğru döndürür, gstack'ın gen üst değerini okur ve onu arının lstack'ına (yerel yığın) (talimat işaretçisi) iter.

}`o`}N` 0 `N`/ \`                      sequence to print the standing man

N`\o/`Ng}`0`}N                         sequence to print the jumping man

}`[2J`                        equivalent to the ANSI escape sequence (esc)[2J
                              to clear the screen
>-'p  or >-'q  or >  p        loop for counting down (wait 1 s)
d  <      b  <    d'-<

Gerekirse derinlemesine açıklama daha sonra takip edilir. Belki animasyonla.


0

Deadfish , Rekabet Etmeyen (658 bytes)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

Bu, rakip olmayan bir çözümdür , çünkü zorluk gerekliliklerini tamamen karşılamamaktadır. Deadfish, sadece 4 komut ve bir akümülatör içeren, çok garip, yorumlu bir dildir. Akümülatör, 0'dan başlatılan tek bir bayt değişkenidir. 4 komutu şöyledir:

  • i = Akümülatörü artır a = a + 1
  • d = Akümülatörün azalması a = a - 1
  • s = Akümülatörü kare a = a * a
  • o = Akümülatör çıktısı print(a)

Dil tekrarlama, ekranı temizleme veya gecikme içermediğinden, gereksinimleri karşılamıyor. Beklenen çıktı:

_o_
 0 
/ \
(Blank line, not from the program)
\o/
_0_
(Blank line, not from the program)
(Blank line, not from the program)

Kod açıklaması:

_  iiisisdddddo
o  iiiiiiiiiiiiiiiio
_  ddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
   ddddsddddo
0  iiiiiiiiiiiiiiiio
   ddddddddddddddddo
\n ddddddddddddddddddddddo
/  dddsddo
   dddddddddddddddo
\  ddddddddddddddddddddddsddddddddo
\n ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o
\  sddddddddo
o  iiiiiiiiiiiiiiiiiiio
/  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddo
_  sdddddo
0  dddddddddddddddddddddddddddddddddddddddddddddddo
_  ddddddddddddddddddddddddddddddddddddddsdddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o

Python 3'teki ölü balık tercümanı:

c=input()
o=""
a=0
for p in range(0,len(c)):
    i=c[p]
    if i=="i":
        a += 1
    if i=="d":
        a+=-1
    if i=="s":
        a=a*a
    if i=="o":
        o+=chr(a)
print(o)

0

Noodel , rekabetçi olmayan 24 bayt

Rekabet etmedi çünkü Noodel , meydan okuma oluşturulduktan sonra doğdu :)

”ṛ|ọBCḊCBCḣ“\o/¶_0_ḷėçḍs

Dene:)

Nasıl çalışır

”ṛ|ọBCḊCBCḣ              # Creates a string that gets decompressed into "_o_¶¤0¤¶/¤\" and places it into the pipe.
           “\o/¶_0_      # Creates a string and places it into the pipe.
                   ḷ     # Unconditionally loop the code up to a new line or end of program.
                    ė    # Takes what is in the front of the pipe and puts it into the back.
                     ç   # Clears the screen and prints.
                      ḍs # Delays for one second.

Şu anda bu mücadelede kullanılan sözdizimini destekleyen bir Noodel sürümü bulunmamaktadır . İşte yapan bir sürüm:

24 bayt

\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs

<div id="noodel" code="\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs" input="" cols="5" rows="5"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

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.