Inilah tantangan yang relatif sederhana untuk Anda.
Diberikan string dengan panjang N , output string ke depan, lalu ke belakang, lalu ke depan, lalu ke belakang ... dll. N kali. Misalnya, jika input Anda
Hello!
Anda harus menampilkan:
Hello!!olleHHello!!olleHHello!!olleH
Anda juga dapat secara opsional menampilkan satu baris baru.
Kiriman Anda dapat berupa program lengkap atau fungsi, dan Anda dapat mengambil input dan output dalam format yang masuk akal . Misalnya, Anda dapat mengambil IO dari STDIN / STDOUT, argumen fungsi dan nilai balik, dari file, dll. Anda dapat dengan aman berasumsi bahwa string input tidak akan kosong, dan hanya akan berisi ASCII yang dapat dicetak. Anda harus mengeluarkan string baru pada satu baris. Jadi, misalnya, jika output ke contoh terakhir adalah
Hello!
!olleH
Hello!
!olleH
Hello!
!olleH
Ini bukan solusi yang valid!
Berikut adalah beberapa kasus uji lagi:
Input:
a
Output:
a
Input:
abcd
Output:
abcddcbaabcddcba
Input:
OK!
Output:
OK!!KOOK!
Input:
4815162342
Output:
4815162342243261518448151623422432615184481516234224326151844815162342243261518448151623422432615184
Input:
PPCG
Output:
PPCGGCPPPPCGGCPP
Input:
42
Output:
4224
Papan peringkat
Karena ini adalah tantangan kode-golf , celah standar dilarang, dan jawaban terpendek dalam byte akan menang! Namun , ini juga merupakan kompetisi untuk mendapatkan jawaban terpendek dalam bahasa tertentu. Meskipun tidak mungkin bahwa jawaban Java akan mengalahkan jawaban dalam perl, atau bahasa golf, masih sangat mengesankan untuk memiliki jawaban Java terpendek. Jadi, Anda bisa menggunakan leaderboard ini untuk melihat keduanya
Jawaban terpendek dari semua bahasa, dan
Jawaban terpendek dalam masing-masing bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda bisa menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=93261,OVERRIDE_USER=31716;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
olleH
, bukanelloH
?Jawaban:
Vim,
39, 34 penekanan tombol5 byte disimpan berkat @Lynn!
Berikut adalah gif dari itu terjadi secara langsung: (Perhatikan bahwa gif ini adalah versi sebelumnya karena saya belum punya waktu untuk merekamnya kembali).
Dan inilah penjelasan cara kerjanya:
Di samping catatan,
Y
ambil baris baru ekstra, yang biasanya merupakan fitur yang menjengkelkan. Ini mungkin yang pertama kalinya ia benar-benar menyelamatkan beberapa byte!sumber
:%s/\n<cr>
, Anda bisa melakukannyav{gJ
untuk menghemat tiga byte.@q
kosong pada awalnya, kan? atau@q
rekaman sebelum berhenti akan melakukan sesuatu yang sewenang-wenang. (Ini membawa saya ke vivi trivium favorit saya yang saya buat: semua orang tahu bahwa berhenti vim semudah:q<CR>
, tetapi bagaimana Anda menutup dan menyimpan semua file Anda?qqqqqZZ@qq@q
@q
harus kosong. Kenapa tidak lakukan:wqa
saja? Juga ingin tahu cara menghasilkan fraktal di vim?qqqqq<C-w>v<C-w>n@qq@q
: DPython, 40 byte
Fungsi rekursif. Tambahkan string input
s
ke fungsi kebalikan hingga penghitungi
melebihi panjangs
.sumber
lambda s:(len(s)*(s+s[::-1]))[:len(s)**2]
satu byte.f = lambda s : ''.join([s[((-1)**(i//len(s)) <= 0)*(len(s)-1)+(-1)**(i//len(s))*(i%len(s))] for i in range(len(s)*len(s))])
tetapi menurut 136 bytesys.sizeof
, menariknya ukurannya samaf = lambda s : ''.join([s[::1] if i%2 else s for i in range(len(s))])
Brain-Flak ,
418378228 byteIni adalah karya Brain-Flak saya. Mungkin tidak bermain golf dengan baik tetapi tantangannya adalah yang paling sulit yang pernah saya temui.
Cobalah online!
Penjelasan
Penjelasan ini sekarang agak ketinggalan jaman tetapi masih cukup baik untuk menjelaskan program.
Penjelasan ini akan sedikit berbeda dari proses penjelasan reguler saya. Saya akan menjelaskan bagaimana saya mencapai hasil ini daripada menjelaskan hasilnya secara berurutan. Ini dia:
Rol
Setelah menyelesaikan masalah ini sedikit saya menemukan kode ini:
Kode ini (di mana n adalah literal untuk beberapa angka. Mis.
()()
) Akan mengambil item di atas tumpukan dan memindahkannya ke bawah n langkah. Dengan n sebagai tinggi tumpukan, ini akan melakukan tumpukan "roll". yaitu memindahkan item atas ke bagian bawah tumpukan. Begini cara kerjanya:Kami menempatkan tempat kami ingin memindahkan item ke minus satu di tumpukan. Kenapa minus satu? Saya tidak tahu itu hanya bekerja seperti itu.
Kami kemudian loop sampai angka ini mencapai nol melacak loop dengan a
()
.Setiap kali kami mengulang, kami mengambil item teratas dan memindahkan item di bawahnya ke tumpukan lain. Ini menempatkan nomor di atas di tempatnya.
Yang perlu kita lakukan sekarang adalah memasukkan angka yang kita pindahkan kembali. Kami beralih ke tumpukan off dan mendorong jumlah menjalankan loop dibuat.
Kami mengulangi decrementing angka yang baru ditekan hingga mencapai nol. Setiap kali kami memindahkan satu nomor kembali.
Membalikkan
Saya selanjutnya memodifikasi gulungan untuk membuat tumpukan penuh terbalik:
Sekali lagi n mewakili kedalaman kebalikannya. Itu adalah n item teratas di stack yang akan dibalik. Bagaimana itu bekerja:
Kebalikannya hanyalah roller yang dibungkus dengan fantastis. Kami hanya menggulung bagian atas tumpukan dan kali mengurangi kedalaman gulungan dengan satu setiap kali.
Duplikat
Duplikasi di tempat sulit. Sangat sulit. Setelah saya menemukan cara untuk membalikkan tumpukan itu masih butuh banyak upaya untuk menghasilkan algoritma duplikasi.
Ini dia:
Ini agak besar tapi inilah cara kerjanya:
Mulailah dengan mendorong n. n adalah kedalaman duplikat. Kami juga membuka dua tanda kurung. Ini memungkinkan kita untuk menyimpan nilai n dalam cakupan sampai dibutuhkan lagi.
Selanjutnya kita mengulangi n kali setiap kali mendorong nilai teratas tumpukan ke tumpukan tidak aktif dua kali. Ini membuat duplikat awal untuk setiap nomor di tumpukan.
Sekarang kami memiliki dua salinan dari masing-masing nomor di offstack. Kita perlu memisahkan ini menjadi dua kelompok.
Jadi kami beralih ke offstack dan mengingat salah satu ns yang kami simpan di awal.
Kami mengulangi n kali.
Setiap kali kami memindahkan satu salinan ke mainstack.
Dan gulung satu salinan ke bagian bawah tumpukan. (Ini mengasumsikan offstack kosong untuk memulai dengan membuat duplikat ini tidak menumpuk bersih)
Setelah selesai, kami telah membagi dokumen asli menjadi dua kelompok "asli" dan salinan di offstack (salinan sebenarnya terbalik). Jadi kita hanya memindahkan salinan ke tumpukan utama dan kita bisa menyelesaikannya.
Program kerangka
Sekarang saya telah membuat semua bagian dari program, saya hanya perlu memasukkannya ke dalam bingkai.
Bingkai menggandakan teks satu kurang dari waktu tinggi tumpukan Menggunakan duplikat.
Dan kemudian membalikkan tumpukan dengan mengurangi kenaikan ketinggian tumpukan awal dari n ^ 2-n ke 0.
sumber
Jelly ,
43 byteCobalah online! atau Verifikasi semua kasus uji.
Menyimpan satu byte berkat @ Maltysen .
Penjelasan
sumber
L
PHP,
5452 byte(49 byte, tetapi tidak berfungsi jika string berisi '0')
(52 byte)
(54 byte)
sumber
str_pad
. bagus2sable , 3 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online!
sumber
Ruby, 39 byte
Saya payah di Ruby. Bantuan bermain golf sangat dihargai.
Ruby adalah bahasa yang sangat bagus untuk ini karena
.reverse!
Penjelasan
Saya berharap itu akan menjadi sesuatu yang sederhana seperti:
tetapi karena pembatasan boilerplate / tantangan itu lebih lama.
Apa
s.reverse!
yang sangat bermanfaat.s.reverse!
pada dasarnyas = s.reverse!
, artinya juga bermutasis
.Apa yang dilakukan masing-masing bagian dari program dijelaskan di bawah ini:
Hal
s.reverse!
yang hebat adalah bahwa setiap kali dievaluasi stringnya terbalik. Jadi saat itu menggantikan string.s
dimodifikasi!sumber
-p
bendera, Anda dapat menyimpan 4 byte:$_.reverse!;gsub(/./){$_.reverse!}
.chomp
perhatian$_
? tampaknya termasuk baris baru saat iniruby -pe '$_.reverse!;gsub(/./){$_.reverse!}' < file.txt
manafile.txt
baris tanpa baris baru: V Ngomong-ngomong, jika Anda memutuskan untuk tidak melakukannya, Anda tidak perlu parens pada lambda begitu->s
berfungsis.gsub(/./){s.reverse!.reverse}
Perl, 24 byte
Termasuk +2 untuk
-lp
Berikan masukan pada STDIN:
rev.pl
:Anehnya ini tidak menggunakan
reverse
operator builtin . Nama itu panjang sekali, semua solusi yang bisa saya pikirkanreverse
adalah setidaknya 1 byte lebih lama.sumber
J,
138 byteDisimpan 5 byte berkat mil!
Ini adalah kereta 5 dengan kata kerja berikut:
Garpu dalam terdiri dari
]
(identitas),;
(tautan), dan|.
(terbalik). Mengamati:Dua kata kerja terluar membuat sisa dari kereta.
#
adalah, dalam hal ini, ukuran argumen, yaitu panjangnya. Kata kerja yang menghubungkan ini adalah;@$
, atauravel
lebihreshape
. Mengamati:Solusi lama.
Cukup sederhana.
|.
terbalik, dan^:
merupakan konjungsi daya, yang berulang kali menggunakan kata kerja kiri (kanan) # kali. Ketika argumen yang benar adalah kata kerja, kata kerja itu disebut pada argumen. Kata kerja yang tepat dalam hal ini berkisar dari nol (i.
) hingga panjang (#
). Ketika dinaikkan ke array, hasil antara disimpan. Yang perlu dilakukan adalah meratakan array,
.Hasil antara
sumber
<@#
#;@$];|.
mengemas inisial dan mundur, membentuk kembali string kotak dan meratakannya bersamaJavaScript (ES 6),
5950 byte9 Bytes berkat Hedi dan Huntro.
fungsi rekursif.
Membalik string membutuhkan hampir setengah dari ukuran (
2522 byte!) ...Mengapa tidak ada cara asli untuk itu?
sumber
s[n]?...
Intead darin<s.length?...
[...s]
alih-alihs.split``
f=(s,n=1)=>n==1?s:s+s.reverse(),n-1)
f=(s,n=1)=>Array.from({length:n},(_,i)=>i%2?s.reverse():s).join``)
yang juga akan lebih baik dengan beberapa fungsi yang lebih baik untuk jangkauanSyntaxError: Unexpected token )
JS tidak memiliki pengembalian string asli.SyntaxError: Invalid or unexpected token
untuk saran kedua Anda. Browser apa yang berfungsi?Minkolang , 17 byte:
Coba di sini!
Penjelasan
sumber
8088 Majelis, IBM PC DOS,
2928 byteDirakit,
xxd
dump:Daftar yang belum dirakit:
Standableone PC DOS program yang dapat dieksekusi. Input string melalui baris perintah, output adalah konsol.
sumber
Pip ,
1110 byteCobalah online!
Penjelasan:
sumber
Haskell,
403632 BytesContoh:
Bahkan lebih pendek (kredit ke Damien):
s >> [s, mundur s] siklus ["abc", "cba", ...] yang di-zip untuk mengoreksi ukuran dan menyesuaikannya dengan fst
sumber
q s=zip(s>>[s,reverse s])s>>=fst
(>>=fst).(iterate reverse>>=zip)
Perl 6 ,
3130 byteSimpan satu byte dengan menyalahgunakan
.ords
, yang mengembalikan daftar tata cara, lalu secara implisit mengubahnya menjadi angka untuk membuat rentang.Penjelasan:
Pemakaian:
sumber
Vim + coreutils, 32 penekanan tombol
Anda tidak akan pernah memiliki terlalu banyak jawaban Vim.
Penjelasan
sumber
MATL,
13128 byteMendorong semua elemen, menggabungkan pada akhirnya.
Cobalah online!
Versi lama:
Pendekatan yang sama sekali berbeda, berdasarkan pada
fprintf
:Versi berdasarkan pembalikan string template
sumber
td
!tnq:"
pertama, tetapitn:"
sedikit bau kode (lihat tip golf Matlab ini ) jadi saya pikir itutnq:
bisa lebih kompak juga.Scala,
737271 byteIni adalah upaya pertama saya di kode golf, jadi saya yakin ada banyak peningkatan.
Memperbarui:
Golf 1 byte dengan menghapus tanda kurung.
Berkat Destructible Semangka untuk saran, mencukur satu byte.
sumber
i%2==1
kei%2>0
?Cubix , 52 byte
Di sebuah kubus:
Yang ini menyenangkan; masih ada byte yang harus di-golf-kan, tetapi ini pasti akan berhasil.
Cobalah online!
penjelasan:
Input dari
ABC
/A
: pergi ke utara dan membaca semua input sebagai karakter;-1
akan di bagian bawahp\;.
: hapus-1
dari tumpukanu#
: dorong panjang string (jumlah item pada tumpukan)\:\:qq
: dup panjang string dua kali, tekan dua salinan ke bagian bawah tumpukanlingkaran:
soq(?/<u
: bertukar top stack, ouptut atas stack sebagai ASCII, tekan top (letter) ke bawah, decrement top stack, belok kanan jika tidak dilakukan, kemudian pindahkan IP ke tempat yang tepat.C B A 3 3 0
;u
: pop top of stackC B A 3 3
B
: tumpukan terbalik3 3 A B C
p(
: pindah ke bawah ke atas dan mengurangi3 A B C 2
?
jika top adalah nol, langsung ke@
dan hentikanpsq:uq
: pindah dari bawah ke atas, bertukar atas dan pindah ke atas dup ke bawah, dan pindah ke atas ke bawah3 2 A B C 3
$u
: lewatiu
<
menempatkan kita kembali ke loop.Penerjemah
sumber
C (gcc) ,
888785836866838278 byte-1 terima kasih kepada ceilingcat
Versi lama
Cobalah online!
Versi lebih pendek (sedikit rusak)
Riffing pada pendekatan 76 byte oleh ASCII-hanya di komentar, dan -1 byte dari tweak tweak saya.
Sunting: Versi ini sedikit rusak karena mengasumsikan bahwa setiap string didahului oleh byte NULL, yang tidak selalu benar. (Lihat test case terakhir di tautan). Mengembalikan ke versi 83 byte untuk saat ini.
Cobalah online!
sumber
Java,
12711188 byteProgram tes tidak digabungkan
sumber
(s,r)->{for(int i=0;i++<s.length();)r+=i%2<1?s:new StringBuffer(s).reverse();return r;};
( 88 byte ). Juga, saya akan menentukan bahwa ini adalah Java 8.R, 53 byte
Asumsikan bahwa input dipisahkan oleh spasi atau baris untuk setiap karakter.
Beberapa test case:
sumber
PowerShell v2 +, 57 byte
Tidak ada cara nyata bersih untuk mendapatkan panjang tali atau membalikkannya, jadi ini cukup panjang.
Mengambil input
$a
, loop dari1
ke$a.length
(disimpan$x
untuk digunakan nanti). Setiap iterasi, kami menggunakan pseudo-ternary untuk mengindeks ke dalam array salah satu$a
atau$a[$x..0]
(yaitu, dibalik), berdasarkan apakah nomor input kami ganjil / genap[$_%2]
. Ini semua diringkas dalam parens dan diedit-join
bersama untuk membentuk string tunggal. Itu tertinggal di pipeline, dan output tersirat.sumber
Java, 151 byte
}
Tidak Disatukan:
sumber
public static
sebelum metode Anda. Anda dapat menghapus spasi di antarat=new StringBuffer
. Anda dapat menghapus kurung dan kurung yang tidak perlu. Dan Anda dapat menukar cek modul dari==1
ke<1
(yang setara dengan==0
untuk angka non-negatif). Anda juga dapat memindahkani++
ke penggunaan terakhir di dalam for-loop.void r(String s){for(int i=0;i<s.length();)System.out.print(i++%2<1?s:new StringBuffer(s).reverse()+"");}
( 105 byte )C #, 94 byte
76 byte untuk metode + 18 byte untuk impor LINQ.
Bagaimana itu bekerja:
sumber
CJam , 10 byte
Cobalah online!
Penjelasan
sumber
Oktaf,
3935 bytePenjelasan:
Disimpan 4 byte berkat Luis.
~x
bukannya0*x
disimpan satu byte (berfungsi karena semua elemen x tidak nol.flip
Alih-alihflipud
menyimpan dua byte lainnya (saya tidak tahuflip
ada).sumber
bash + util-linux,
685853 bytePenjelasan
Dua hal dengan
for
loop:for
loop yang tampaknya tidak berdokumen di mana seseorang menggantido
dandone
kata kunci dengan kurung kurawal{
dan}
. Ruang setelah braket pertama diperlukan, dan titik koma di akhir juga diperlukan.for
loop "C-style" , Anda bisa menginisialisasi dengani;
alih - alih menggunakani=0;
.${#1}
dari kondisii < ${#1}
mengacu pada panjang input kami (parameter pertama$1
). Secara umum, Anda dapat menggunakan${#foo}
untuk mengambil ukuran string$foo
.Selain itu:
rev
adalah alat di util-linux yang membalik string.-n
bendera untukecho
menyingkirkan baris baru.rev<<<$y
disebut string di sini (lihat halaman tldp.org yang relevan ), yang meneruskan variabel$y
ke input standarrev
.sumber
do
dandone
kata kunci dalam satufor
lingkaran, Anda benar - benar melakukannya membutuhkan ruang itu!y=$1;for((;i<${#1};i++)){ printf $y;y=`rev<<<$y`;}
... menyimpan beberapa byteJapt , 11 byte
Cobalah online!
sumber
î
lagi, bukan ?!05AB1E , 7 byte
Cobalah online!
Akan terus bekerja di sana. Saya tidak terlalu suka bagian "v}", mungkin bisa menyimpan byte di sana.
Penjelasan
sumber
vÂ}\J
5 byte sama dengan kode Anda, tetapi dengan builtin yang Anda cari. :)Â
adalah Bifurcate (kependekan dari Duplicate & Reverse, yang persis seperti yang Anda lakukan).\
menghapus item teratas di stack.