Asciimation Jumping Jacks

28

Ini adalah tantangan pertama saya, jadi saya menjaganya agar tetap sederhana.

Jika Anda pernah mengetik telnet towel.blinkenlights.nlpada baris perintah dan menekan enter, Anda akan mengalami sukacita asciimation. Asciimation adalah, cukup sederhana, melakukan animasi dengan seni ascii. Hari ini kita akan melakukan asciimation yang sangat mendasar dari seseorang yang melakukan jumping jacks.

Akan ada dua gambar ascii yang akan kita satukan menjadi satu asciimation. Nomor 1:

_o_
 0
/ \

Nomor 2:

\o/
_0_
<blank line>

Perhatikan bahwa yang kedua memiliki garis kosong di bagian akhir.

Jadi program Anda harus melakukan langkah-langkah ini:

  1. Kosongkan layar konsol.
  2. Cetak gambar seni ascii yang benar.
  3. Tetapkan bendera atau sesuatu agar Anda tahu untuk melakukan gambar lainnya di lain waktu.
  4. Tunggu sebentar (sekitar satu detik).
  5. Lanjutkan pada 1.

Aturan

  • Program Anda harus berupa loop tak terbatas (secara teoritis).
  • Bahasa pemrograman yang Anda gunakan harus telah dibuat sebelum tantangan ini diposting.
  • Ini adalah , jadi kode terpendek dalam byte menang.
  • Celah standar berlaku.

Nikmati!

bitnbites
sumber
Mungkinkah ada spasi di <baris kosong>?
Jakube
1
Apakah ini harus platform independen karena perintah yang jelas Linux ( clear) berbeda dengan Windows satu ( cls)
Beta Decay
1
Apakah garis kosong hanya untuk menjelaskan penentuan posisi? Jika mencetak dari bagian atas layar sehingga garis kosong tidak membuat perbedaan yang terlihat, dapatkah itu dihilangkan?
trichoplax
@ Jakube ya mungkin ada spasi.
bitsnbites
1
@trichoplax ya. Baris kosong hanya untuk menunjukkan bahwa kepala harus tetap pada posisi yang sama.
bitsnbites

Jawaban:

29

CJam, 51 45 42 38 36 byte

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

Di atas menggunakan notasi caret; urutan ^[sebenarnya adalah karakter ASCII dengan titik kode 27.

Saya telah meminjam urutan pelarian ( ^[c) dari jawaban @HomHastings ( dengan izinnya ) untuk menghemat 4 byte.

Verifikasi

Anda dapat membuat ulang file seperti ini:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Untuk menjalankan kode, unduh juru bahasa CJam dan jalankan ini:

java -jar cjam-0.6.5.jar jj.cjam

Ini akan bekerja pada terminal apa pun yang mendukung console_codes atau subset yang sesuai. 1

Bagaimana itu bekerja

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 Jack melompat akan terlihat lebih baik jika Anda menyembunyikan kursor terminal sebelum menjalankan program. Dalam Konsole, misalnya, Anda dapat mengatur warna kursor agar sesuai dengan warna latar belakang. Ini harus dilakukan melalui pengaturan terminal Anda, karena ^[cme-reset terminal.

Dennis
sumber
36
+1 hanya untuk Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHproduk
Mungkin 2Fm*merupakan alternatif satu-byte-lebih baik 6e4m!untuk "operasi tidak masuk akal yang mengembalikan nilai kebenaran dan membutuhkan waktu satu detik untuk menghitung".
Lynn
@Mauris Saya sudah mencoba sesuatu yang mirip e!, tetapi mereka sepertinya mendapatkan memo. Setelah iterasi pertama, Jack yang malang mendapat serangan jantung ...
Dennis
10

Pyth - 41 40 39 byte

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

(Saya menghitung \x1b's sebagai satu byte sejak SO menghancurkan karakter khusus).

Jelas tidak bekerja secara online karena a) loop tak terbatas dan b) menggunakan kode pelarian terminal.

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

Saya terkejut mengetahui bahwa augmented-assign bekerja dengan post-assign. Pyth itu luar biasa.

Maltysen
sumber
use .V0as infinite loop
Jakube
Anda mungkin dapat menyimpan byte sekarang karena OP telah mengkonfirmasi bahwa baris kosong tidak perlu dicetak secara eksplisit
trichoplax
@ Jakube yang sepertinya tidak menyimpan apa pun.
Maltysen
Penjelasan Anda tidak sesuai dengan kode Anda: P
Beta Decay
9

QBasic, 58 byte

Diuji pada QB64 .

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

Bahasa yang tepat untuk masalah itu bisa sangat kompetitif, bahkan jika itu biasanya bertele-tele. Jalan ?pintas untuk PRINTmembantu juga, tentu saja. CLSadalah cl ear s creen; RUNtanpa argumen me-restart program, yang merupakan cara terpendek untuk mendapatkan loop tak terbatas.

Satu-satunya trik lain di sini adalah mencetak 0untuk bagian tengah gambar pertama. QBasic menempatkan spasi di depan (dan setelah) nilai numerik non-negatif ketika mencetaknya, menghasilkan 0 . Menyimpan 3 karakter " 0".

Saya juga dapat menunjukkan bahwa keterlambatan dalam kode ini secara harfiah adalah yang kedua , dan tidak bergantung pada mesin. ; ^ P

DLosc
sumber
2
Saya ingat terganggu oleh ruang sekitarnya ketika mencetak angka dalam berbagai versi BASIC. Senang melihat ada gunanya untuk itu ...
trichoplax
7

Perl (* nix) , 54 byte

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

( \x1bdihitung sebagai 1 byte tetapi lolos untuk pengujian lebih mudah.) Di atas telah diuji dengan Bash dan disingkat oleh byte lain berkat @Dennis !

Perl (Windows) , 56 byte

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

Terima kasih kepada @Jarmex atas pengujian dan sarannya!

Dom Hastings
sumber
2
Takut itu tidak bekerja pada Windows, tetapi Anda hanya bisa mendapatkan 1 byte lebih banyak dengan print"@[2J":, mengganti @ di dalam tanda kutip dengan ASCII 27 (untuk tujuan pengujian, print"\033[2J"mungkin lebih mudah).
Jarmex
Anda dapat mengganti \edengan byte ESC literal. - Apakah Anda keberatan jika saya menggunakan \ectrik dalam jawaban saya?
Dennis
@ Dennis tentu saja, karena "\e"itu hanya jalan pintas untuk itu. Tolong pergilah!
Dom Hastings
6

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

Cukup mudah. Menggunakan string template untuk menyimpan gambar, dan mengganti nilai boolean untuk menentukan yang akan digunakan.

CATATAN: Solusi ini mungkin tidak valid, karena sebenarnya tidak menggunakan konsol. Namun, saya tidak percaya itu mungkin untuk menghapus konsol browser menggunakan JS, setidaknya tidak saat menggunakan Firefox.

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

Produksi ETH
sumber
1
@ atau Kode menciptakan manusia animasi. (Chrome @ Windows). Namun ini berbasis GUI daripada berbasis konsol. Mungkin tidak dianggap sah seperti itu.
Justin
3
1. Di komputer saya, ini berfungsi dengan baik di Firefox tetapi tidak di Chrome, jadi saya kira Anda harus melabelnya sebagai ECMAScript 6 untuk menghindari kebingungan. 2. Jika Anda memasukkan <pre id="a"/>bagian HTML, Anda tidak perlu <pre>tag dalam kode.
Dennis
1
Atau, lebih baik lagi, singkirkan HTML dan ganti document.getElementById`a` dengan document.body.
NinjaBearMonkey
1
Saya mendapat 87 byte dengan membuat HTML <pre>dan melakukan document.all[4]. Ini memungkinkan Anda menyingkirkan string pembungkus dan membuatnya innerHTML=a?`...`:`...`}.
NinjaBearMonkey
1
Ini berhenti bekerja untuk saya di Chrome
Beta Decay
5

Bash, 86 84 byte

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

Python 2, 99 byte

Berjalan di Windows

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

Untuk mesin UNIX, tambahkan dua byte:

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

awk - 95 92 86 84 83

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

Latihan yang bagus: D Hanya ingin tahu apakah ini bisa dilakukan. Tidak ada harga yang didapat ...;)

Jika seseorang ingin menguji ini: setelah Anda menjalankan program ini, Anda harus menekan Ctrl + D (akhir input) untuk benar-benar memulai blok END. Untuk menghentikannya saya harus menggunakan Ctrl + Z.

Saya juga punya ini, yang hanya 74 byte, tetapi dimulai dengan menjeda sedetik yang saya pikir bukan perilaku yang diinginkan

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}
Cabbie407
sumber
1
Apakah tidur mengukur interval tiga detik?
trichoplax
Ya Tuhan. terima kasih atas petunjuknya :) Atau jika itu bukan petunjuk: Tidak, ini hanya tidur 0,33 detik.
Cabbie407
Saya tidak tahu apa-apa, tetapi sepertinya itu akan mengukur dalam hitungan detik. :)
trichoplax
1
Itu hanya terlihat sangat lucu jika bergerak lebih cepat, bahwa saya lupa tentang bermain golf di sana; D
Cabbie407
perintah sleep tidak awk, itu bash, btw
Cabbie407
2

Batch - 82 byte

Sunting: Membisukan perintah batas waktu dan menghapus baris baru ekstra.

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

Saya telah melihat 2 jawaban batch serupa lainnya sehingga saya tidak benar-benar ingin memposting ini, tetapi ini adalah golf pertama saya.

Peter Lenkefi
sumber
1
Tapi telanjang timeout 1akan menempatkan banyak output yang tidak
diminta
Benar, saya punya output ekstra. Diedit.
Peter Lenkefi
1
mungkin >mulitu jenis kesalahan, atau mungkin Anda tidak tahu apa nulitu. en.wikipedia.org/wiki/Null_device
edc65
@ edc65 Backdraw copy-paste dan bukan pengujian. Terima kasih!
Peter Lenkefi
2

BBC BASIC, 75 byte

Perhatikan bahwa tokenisasi menariknya hingga 75 byte. Spasi ditambahkan oleh IDE.

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

Properti menampilkan ukuran program

Peluruhan Beta
sumber
2

JavaScript ES6, 100 95 byte

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

Log ke konsol. Diuji di Safari Nightly

Downgoat
sumber
2

Batch, 151 130 118 byte

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
Maks
sumber
Anda mungkin dapat menyimpan beberapa byte sekarang karena OP telah mengkonfirmasi bahwa baris kosong tidak perlu dicetak secara eksplisit
trichoplax
Anda harus bisa bermain golf 12 karakter dengan menggunakan @PING 127.0.0.1 -n 2>NULsebagai gantinya. Ping default untuk menunggu sekitar satu detik antara upaya, jadi ini dalam beberapa milidetik menjadi akurat, cukup dekat untuk tantangan ini. Referensi
AdmBorkBork
bermain golf 12 byte berkat TimmyD
Max
2

CBM 64 BASIC V2, 121 119 112 117 byte

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN
Maks
sumber
Apakah ?CHR$(147)menghapus layar? Jika demikian, Anda mungkin dapat menyimpan 2 byte sekarang karena OP telah mengkonfirmasi bahwa baris kosong tidak perlu dicetak secara eksplisit
trichoplax
Ini tidak menghasilkan bingkai animasi pertama (yaitu, di mana lengan rata).
Psychonaut
kamu benar ... aku akan memperbaikinya!
Maks
1

Julia, 70 byte

(pada Windows , dengan mengganti cleardengan cls, berkat undergroundmonorail)

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

Di Linux, 72 byte

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

Ini menggunakan baris baru yang sebenarnya daripada \nuntuk menyimpan byte; jika tidak, iini bisa 1 atau -1 sebagai "bendera", dan menggunakan rekursi untuk mencapai loop tak terbatas. Sebut saja sebagai salah satu n(1)atau hanya n().

Juga, run(`clear`)/ run(`cls`)menggunakan perintah shell untuk membersihkan jendela, karena Julia tidak memiliki jendela command-jelas built-in.

Glen O
sumber
Jika Anda menjalankan ini di windows Anda menyimpan dua byte dengan mengubah clearke cls(saya berasumsi, saya tidak tahu apa-apa tentang Julia).
undergroundmonorail
@undergroundmonorail - Terima kasih, tapi saya menggunakan Ubuntu, cls tidak berfungsi. Semoga Julia memutuskan untuk menerapkan fungsi kliring terminal yang nyata.
Glen O
@GlenO Pada Windows clsberfungsi (lihat jawaban saya)
Beta Decay
1

Windows Batch, 83 89

Edit menghapus baris kosong setelah klarifikasi oleh OP

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

Jika Anda menyingkirkan garis kosong di pria melompat (yang tidak bisa dilihat lagi), skornya adalah 83

Catatan: timeouttidak ada di Windows XP. Ini bekerja di Vista atau versi yang lebih baru. Selain timeoutitu tidak tepat untuk yang kedua, jadi itu adalah pilihan yang sempurna untuk menerapkan langkah 4 (Tunggu sebentar ( sekitar satu detik ))

edc65
sumber
1

Javascript (ES6), 82 byte

Modifikasi dari jawaban saya sebelumnya yang menggunakan konsol. Bekerja sebagian di Firefox, tetapi hanya membersihkan konsol di Chrome, AFAIK.

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

Seperti biasa, saran diterima!

Produksi ETH
sumber
Suka! Saya perhatikan melalui ini bahwa Chrome juga menjalankan ES6 untuk saya sekarang!
Dom Hastings
@HomHastings Saya belum pernah mengembangkan di Chrome sebelumnya, tapi saya pernah mendengarnya tidak mendukung ES6 secara default, jadi saya sama terkejutnya dengan Anda! :)
ETHproduksi
1

JavaScript, 92 91 89 byte

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • Tidak ada fitur ES6 (tetapi akan secara signifikan lebih pendek dengan mereka)
  • Bekerja dengan Node.js di Linux (tidak tahu tentang lingkungan lain)
  • Sebagian berfungsi di konsol Chrome ( cditampilkan alih-alih membersihkan konsol, memecahkan output)

Menghapus "\033c"+dari kode di atas, berikut ini berfungsi di browser, tetapi tidak menghapus konsol.

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

Nateowami
sumber
Pekerjaan yang mengesankan! Menggunakan fitur ES6, saya mendapatkan 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Untuk beberapa alasan, JS tidak akan membiarkan saya lulus console.logsebagai fungsi dan manusia ASCII sebagai param tambahan.
ETHproduksi
@ ETHproduk Terima kasih! Saya berpikir untuk melakukannya di ES6, tetapi karena tidak pernah menggunakannya dan tidak menginstal io.js, saya memutuskan untuk tidak melakukannya. Sejauh tidak bisa lulus console.loguntuk setInterval, alasannya adalah bahwa kita tidak melewati fungsi, tetapi menyebutnya. Itu akan dievaluasi sebelum setIntervaldipanggil, dan karena console.logtidak kembali, pada dasarnya akan diteruskan undefinedke setInterval. Masuk akal? Dan terima kasih telah memperpendeknya!
Nateowami
Saya mengerti apa yang Anda katakan, tetapi menurut halaman ini , kode ini harus berfungsi: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <line break> 0 <line break> / \ `, \\o/<line break>_0_] [x ^ = 1])` Sebenarnya, itu tidak membawa kesalahan jika saya ganti console.logdengan alert.
ETHproduksi
Ah, saya mengerti apa yang Anda katakan. Saya pikir masalahnya adalah bahwa kita perlu mencatat sesuatu yang berbeda setiap kali, tetapi "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]dievaluasi sebelum panggilan setInterval.
Nateowami
0

Ruby, 79 byte

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

Membutuhkan kode pelarian.

tepuk
sumber
0

Keempat, 86 byte

Membutuhkan GNU Forth untuk string yang lolos. Untuk menjalankan dalam Forth non-GNU, cukup ubah S\"ke S", dan karakter yang lolos tidak akan mencetak dengan benar.

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

mbomb007
sumber
0

CBM BASIC v2.0 (68 karakter)

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

Di atas memerlukan beberapa penjelasan, karena markup Stack Exchange tidak benar mewakili karakter PETSCII:

  • Program ditampilkan di sini untuk kenyamanan dalam huruf kecil, tetapi bisa dan harus dimasukkan dan dijalankan dalam mode huruf besar pada Commodore 64.
  • Karakter "S" pertama dan ketiga sebenarnya dalam video terbalik, dan diproduksi dengan menekan CLRtombol ( SHIFT+HOME ).
  • Karakter "q" sebenarnya dalam video terbalik, dan diproduksi dengan menekan kursor ke bawah ( CRSR ⇓).
  • "|" karakter sebenarnya dalam video terbalik, dan diproduksi dengan menekan kursor kiri ( SHIFT+ CRSR ⇒).
Psychonaut
sumber
0

lilin lebah ,119 113 byte

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   <

Penjelasan bagian-bagian penting dari program:

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

The f's mendorong nilai-nilai pada gstack (tumpukan global) untuk digunakan nanti. Nilai-nilai ini diakses oleh instruksi 0gh(atau yang dicerminkan hg0) dan hg( gh). hmemutar gstack ke atas, gmembaca nilai tertinggi gstack dan mendorongnya ke lstack (tumpukan lokal) dari lebah (penunjuk instruksi).

}`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'-<

Penjelasan mendalam mengikuti nanti, jika perlu. Mungkin dengan animasi.

ML
sumber
0

Deadfish , Non-Competing (658 bytes)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

Ini solusi yang tidak bersaing , karena tidak sepenuhnya memenuhi persyaratan tantangan. Deadfish adalah bahasa terjemahan yang sangat aneh, yang hanya memiliki 4 perintah dan akumulator. Akumulator adalah variabel byte tunggal yang diinisialisasi pada 0. Perintah 4 adalah:

  • i = Menambah akumulator a = a + 1
  • d = Mengurangi akumulator a = a - 1
  • s = Kuadratkan akumulator a = a * a
  • o = Keluarkan akumulator print(a)

Karena bahasa tidak termasuk pengulangan, membersihkan layar, atau penundaan, bahasa tidak memenuhi persyaratan. Output yang diharapkan:

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

Penjelasan kode:

_  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

Penafsir Deadfish dalam Python 3:

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)
Julian Lachniet
sumber
0

Noodel , 24 byte tidak bersaing

Tidak bersaing karena Noodel lahir setelah tantangan diciptakan :)

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

Cobalah:)

Bagaimana itu bekerja

”ṛ|ọ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.

Saat ini tidak ada versi Noodel yang mendukung sintaks yang digunakan dalam tantangan ini. Berikut adalah versi yang dapat digunakan:

24 byte

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

tkellehe
sumber