Persyaratan:
- Ambil input pada stdin termasuk jalur baru / carriage return dengan panjang tidak terbatas (hanya dibatasi oleh memori sistem; yaitu, tidak ada batasan yang melekat dalam program.)
- Keluarkan kebalikan dari input pada stdout.
Contoh:
Memasukkan:
Quick brown fox
He jumped over the lazy dog
Keluaran:
god yzal eht revo depmuj eH
xof nworb kciuQ
Kemenangan terpendek.
Papan peringkat:
var QUESTION_ID=242,OVERRIDE_USER=61563;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>
strrev
ƃop ʎzɐʃ ǝɥʇ ɹǝʌo pǝdɯnɾ ǝH
xoɟ uʍoɹq ʞɔınΌ
;-PJawaban:
Golfscript - 3 karakter
versi dikaburkan juga 3 karakter
berikut ini penjelasan tentang cara kerja %
sumber
Bash - 7
tac
membalik urutan baris, sementararev
membalik urutan karakter.sumber
alias z='tac|rev'
rev|tac
skor yang sama - hanya menambahkan catatan untuk mengatakan bahwa ini bekerja untuk semua shell POSIX, bukan hanya Bash.BrainFuck, 10 karakter
Mengalahkan sejumlah jawaban yang bagus untuk bahasa yang begitu sederhana.
sumber
C, 37 byte
sumber
Haskell - 21
sumber
Pancake Stack ,
342316 byteDiasumsikan bahwa input diakhiri oleh karakter nol (
^@
pada commandline). Contoh lari, menggunakan interpreter :sumber
Python,
4140 byte41 -> 40 - menghapus titik koma di akhir program.
Mungkin bisa dioptimalkan!
sumber
print raw_input()[::~0]]
? Ini masih Python 2 karenaprint
# Language Name, Character/Byte Count
APL, 2
Atau CircleBar QuoteQuad jika karakter tidak muncul, artinya: input karakter keyboard terbalik.
sumber
⍞
.⌽
adalah fungsi anonim lengkap yang dapat diberikan dan digunakan:f←⌽
f 'The quick brown fox'
.Perl - 23
sumber
print"".reverse<>
hanya 17 karakter. Dan dengan Perl 5.10+ Anda dapat menyimpan dua karakter lagi menggunakansay
bukanprint
.print~~reverse<>
untuk 16 karaktersay~~reverse<>
apakah akan berhasil? 14 karakter.Ruby - 19 karakter
sumber
C - 47 karakter
Perhatikan bahwa ini menggunakan ruang stack O (n). Cobalah online!
sumber
main(c){(c=getchar())>0&&main(),putchar(c);}
c>=0
dapat menjadi~c
Windows PowerShell, 53
542011-01-30 (54) - Upaya pertama
2011-01-30 (53) - Istirahat inline menyenangkan.
2011-01-3- (52) - Penugasan variabel inline juga.
sumber
-join($a="$args")[$a.Length..0]
pada dirinya sendiri tampaknya bekerja untuk contoh yang diberikan, saya tidak memiliki masalah dengan linebreak yang berjalan dengan windowscrlf
- tidak yakin tentang psv2 atau apa pun yang Anda gunakan saat ini ditulis.$input
adalah enumerator yang menghasilkan garis, sehingga Anda tidak dapat merangkai seperti itu.Perl 5.1, 14
sumber
Befunge-93 - 11x2 (22 karakter)
Diuji menggunakan juru bahasa ini .
sumber
Binary Lambda Calculus - 9 bytes
Sumber: http://ioccc.org/2012/tromp/hint.html
sumber
Fission ,
161412 bytePenjelasan
Aliran kontrol dimulai
D
dengan(1,0)
atom yang turun . The?
membaca dari STDIN, satu karakter pada satu waktu, pengaturan massa untuk kode karakter membaca dan energi untuk0
. Setelah kita menekan EOF,?
alih-alih akan mengatur energinya1
. The[
pengalihan atom ke sebuahZ
switch. Selama kita membaca karakter, energinya akan0
, jadi atom dibelokkan ke atas olehZ
. Kami mengkloning atom, mengulang satu salinan kembali ke?
untuk terus membaca input. Kami menambah energi salinan lain1
dengan$
dan mendorongnya ke tumpukanK
. Jadi loop input adalah ini:Ketika energi
1
disebabkan oleh EOF,Z
alih-alih akan membiarkan atom melewati dan mengurangi energi0
lagi.~
mengurangi energi lebih lanjut menjadi-1
. Atom dengan energi negatif muncul dari tumpukan, sehingga kita dapat mengambil karakter dalam urutan yang berlawanan dan mencetaknya!
. Sekarang perhatikan bahwa grid adalah toroidal, sehingga atom muncul kembali di tepi kiri dari baris yang sama. Ingatlah bahwa kita telah menambah energi dari atom yang didorong sebelumnya$
, sehingga atom sekarang memiliki energi1
seperti keluaran terakhir dari?
dan akan kembali melewati atomZ
. Karena itu, jalur setelah EOFLingkaran di baris bawah ini berlanjut sampai tumpukan kosong. Ketika itu terjadi, atom dipantulkan kembali dari
K
dan energinya menjadi positif (+1
). The~
decrements sekali lagi (bergerak ke kiri), sehingga kita sekarang memukulZ
dengan energi non-positif. Ini mengalihkan atom ke bawah, sehingga berakhir di irisanY
tempat penyimpanannya, dan karena tidak ada lagi atom yang bergerak, program berakhir.sumber
> <>,
1614 byte-2 byte oleh @ JoKing
dua tahun (!) kemudian, menghapus -1 ekstra dari input input dengan menggeser logika untuk berhenti.
Cobalah online!
Mirip dengan jawaban>>> lainnya, ini tidak perlu membalikkan tumpukan karena cara input dibaca di baris pertama. Saya sebenarnya tidak terlalu yakin apakah ini seharusnya menjadi saran untuk jawaban>> yang lain, karena sangat berbeda dalam penampilan tetapi serupa dalam konsep.
Perbedaan utama adalah bahwa jawaban saya membandingkan input ke 0, dan jika kurang (yaitu tidak ada input -
i
mengembalikan -1 jika tidak ada input) melompat ke (1,7), jika tidak, (0, 7). Jika melompat ke yang pertama, itu muncul nilai teratas (-1) dan memulai putaran cetak. Jika melompat ke yang terakhir, itu melanjutkan loop input.11 byte, keluar dengan kesalahan
Atas perkenan @ JoKing
Cobalah online!
Saya percaya ini valid sekarang melalui konsensus meta.
Jawaban sebelumnya (14 byte)
sumber
o
setelah;
o
; tidak menyadarinya saat itu. Dan terima kasih untuk save. Penggunaan pintar perbandingan ke nol untuk menyingkirkan -1 terakhir.0=?
untuk?!
)PHP -
3817 karaktersumber
cat
??stdin
Stack Cats , 7 byte
Cobalah online!
Ada banyak alternatif untuk jumlah byte yang sama, yang sebagian besar pada dasarnya setara dalam cara kerjanya:
Penjelasan
A Stack Cats primer:
-1
di atas nol itu dan kemudian byte input di atas itu (dengan byte pertama di bagian paling atas dan byte terakhir di atas-1
).-1
di bagian bawah jika ada, dan kemudian mencetak semua nilai sebagai byte ke STDOUT.Sekarang untuk program yang sebenarnya:
Sp3000 mengatur pencarian brute force-nya untuk menemukan semua solusi 7-byte lainnya, jadi berikut adalah beberapa alternatif:
Ketiga varian ini pada dasarnya sama, kecuali bahwa mereka berbeda ketika bitwise NOT dihitung dan apakah kita menggunakan tumpukan kosong di sebelah kiri atau di sebelah kanan.
Seperti saya katakan dalam penjelasan di atas,
T
tidak melakukan apa-apa ketika bagian atas tumpukan adalah nol. Itu berarti kita benar-benar dapat menempatkan!
di tengah. Itu berarti yang pertamaT
adalah no-op, maka kita putar nol di atas ke dalam-1
dan kemudian kemudian keduaT
melakukan pembalikan. Tentu saja, ini berarti bahwa keadaan memori akhir memiliki-1
pada stack di sebelah yang asli, tetapi itu tidak masalah karena hanya tumpukan pada posisi head tape saat ini yang mempengaruhi output.Varian ini menggunakan
*
(XOR 1) alih-alih!
, sehingga mengubah nol menjadi+1
, danI
merupakan dorongan bersyarat yang mendorong nilai positif dan kanan, nilai negatif kiri, dan meniadakannya dalam kedua kasus (sehingga kita masih berakhir dengan-1
di atas tumpukan asli ketika kita jumpaiT
), jadi ini akhirnya bekerja sama dengan<!]T[!>
solusi asli .sumber
PHP,
8229242928 karakter82 -> 29: Karakter baris baru dipertahankan ketika dibalik dengan
strrev
.29 -> 24: Gunakan sintaks pintas sekarang
24 -> 29: Sekarang bacalah semua baris, bukan satu baris
sumber
fgets(STDIN)
hanya membaca baris pertama.Befunge-98 -
1110(Diuji dengan cfunge)
Varian di bawah ini sedikit mematahkan persyaratan: ia melakukan tugas tetapi menghasilkan aliran infinite nol byte setelahnya (dan tidak berakhir).
Cara kerjanya adalah berulang kali membaca input ke stack (
~
) satu karakter pada satu waktu, melompati (#
) koma. Ketika EOF tercapai,~
bertindak sebagai reflektor dan PC membalik, berulang kali muncul dan mengeluarkan karakter (,
) sambil melompati (#
) tilde.sumber
#v~
baris 2::<,_@#
. Lucu bahwa menggunakanj
tidak meningkatkannya di sini.Pyth -
354 byteJadi, versi 3-char asli tidak membalik urutan baris, hanya garis. Saya kemudian datang dengan versi 5-char ini:
Saya menyimpan 1 byte berkat @FryAmTheEggman untuk menghasilkannya:
Demo langsung.
Penjelasan:
Solusi asli (salah):
Ini secara teknis tidak masuk hitungan karena Pyth dibuat pada tahun 2014, tetapi masih rapi bahwa itu dikaitkan dengan GolfScript.
Penjelasan:
sumber
Fk_.z_k
Saya yakin seseorang bisa mendapatkan sesuatu yang lebih pendek dari ini, tetapi itulah yang saya dapatkan.Cubix ,
98 byteBanyak terima kasih kepada Martin Ender untuk golf ini:
Lihat bekerja online!
Ini menjadi kubus berikut (
>
menunjukkan penunjuk instruksi awal):Langkah pertama dari program ini adalah mengambil semua input.
i
menempatkan 1 byte input ke stack. Jika input tidak selesai,?
buat IP berbelok ke kanan, lilitkan di sekitar kubus hingga mencapaiw
, yang mengirimnya kembalii
.Ketika input selesai,
?
membuat IP head utara, memasuki loop output:o
: cetak karakter di bagian atas tumpukanw
: 'sidestep' pointer ke kanan;
: pop karakter yang baru saja dicetak\
: mencerminkan IP, mengirimkannya ke Timur?
: jika ada karakter yang tersisa untuk dicetak, belok kanan, kembali ke loop.Terakhir kali
?
dipukul, ketika tidak ada yang tersisa di tumpukan, IP melanjutkan sebagai gantinya:i
: ambil satu byte input. Ini akan menjadi-1
sebagai input telah selesai.\
: mencerminkan IP, mengirimkannya ke Utara, ke:@
: menghentikan program.Solusi 9 byte
Lihat bekerja online!
Dalam bentuk kubus:
Karakter pertama yang dikodekan adalah
i
, yang mengambil kode sandi input. Jika tidak ada input yang tersisa, ini-1
.Karakter selanjutnya adalah
?
- keputusan. Jika bagian atas tumpukan positif, itu berbelok ke kanan, membungkus kubus sampai menyentuh/
yang mengirimnya kembali kei
, membuat loop input. Namun, jika TOS negatif, input telah selesai, dan karena itu belok kiri ke loop output.Loop output sederhana.
o;
output dan muncul TOS. Pertama kali ini dijalankan,-1
adalah bagian atas tumpukan, tetapi tidak memetakan ke karakter dan karenanya diabaikan./
mencerminkan IP untuk bergerak ke kiri, di mana ia bertemu!@
- yang mengakhiri program jika tumpukan kosong. Jika tidak, IP berlanjut, tekan?
lagi - karena stack tidak kosong, TOS harus berupa kode sandi, semuanya positif 1 , jadi ini membuat IP berbelok ke kanan dan melanjutkan loop output.1 Kedua solusi mengasumsikan bahwa input tidak akan berisi byte nol.
sumber
05AB1E, 1 byte
R membalikkan input.
sumber
,
di bagian akhir, karena bagian atas tumpukan dicetak secara otomatis ketika tidak ada yang dicetak.Wumpus , 12 byte
Cobalah online!
Jawaban Martin menunjukkan kontrol grid segitiga Wumpus mengalir dengan baik, tapi saya pikir saya akan mencoba tantangan ini dengan one-liner.
Versi yang lebih mudah dipahami (satu byte lebih lama) adalah:
yang berfungsi seperti ini:
Sekarang mari kita lihat versi golf, yang berbeda di tengah:
Versi golf menyimpan byte dengan tidak memerlukan perintah eksplisit
;
untuk memunculkan -1 yang asing. Pada EOF, program ini melompat ke(4, 0)
alih-alih(8, 0)
menjalankannya4*0.
lagi - kecuali kali ini -1 asing ada di atas! Ini menyebabkan kita melompat(-4, 0)
, yang karena pembungkusnya sama dengan(8, 0)
grid ini, membawa kita ke tempat yang kita inginkan sambil mengonsumsi nilai asing pada saat yang sama.sumber
Wumpus ,
1311 byteCobalah online!
Penjelasan
Karena Wumpus adalah bahasa berbasis tumpukan, ide dasarnya adalah membaca semua STDIN ke tumpukan dan kemudian hanya mencetak seluruh tumpukan dari atas ke bawah. Bagian yang menarik di sini adalah aliran kontrol melalui grid.
Untuk memahami aliran kontrol, kita perlu melihat tata letak kotak segitiga yang sebenarnya:
IP dimulai di sudut kiri atas ke timur. Kita dapat melihat bahwa ada loop melalui kelompok enam sel di sebelah kiri, dan cabang dari
\
. Seperti yang Anda harapkan, loop membaca semua input, dan bagian linier pada akhirnya menulis hasilnya kembali ke STDOUT.Mari kita lihat loop pertama. Lebih masuk akal untuk menganggap yang pertama
)?\
sebagai bukan bagian dari loop, dengan loop yang sebenarnya dimulai padai
. Jadi, inilah bit awalnya:Kemudian loop dimulai:
Yang meninggalkan bagian linear di akhir:
sumber
PHP - 44 karakter
sumber
Perl
sumber
Fisi ,
2015 byteAlgoritma ini sangat mirip dengan Martin, tetapi implementasinya berbeda secara signifikan.
Bagaimana itu bekerja
Semuanya dimulai
R
, yang melepaskan atom ke timur dengan massa 1 dan energi 0.Setelah memukul
?
, karakter input disimpan sebagai massa atom, dan energi dibiarkan pada 0 kecuali stdin mengembalikan EOF, di mana energi kasus menjadi 1.J
adalah perintah lompatan Fission, dan melompati atom ke depan sejumlah sel yang setara dengan energi saat ini, meninggalkan atom dengan energi 0. Untuk saat ini, atom kita memiliki 0 energi dan mengabaikan perintah ini.Kami kemudian menyerang
%
, yang merupakan saklar. Dengan energi lebih besar dari 0, atom kita akan diarahkan ke bawah (seolah dipantulkan oleh\
cermin), tetapi karena kita memiliki energi tepat 0, kita dikirim ke atas oleh cermin yang berlawanan/
,.Atom kita terus berlanjut sampai ia mencapai cermin kedua,
\
kali ini mengarahkannya ke kiri.Kami menambah energi atom menjadi 1 dengan
$
, dan digunakanX
untuk menduplikasi atom. Satu salinan akan mencerminkan kembali ke$
perintah (meninggalkan salinan itu dengan 2 energi) dan salinan lainnya akan didorong ke tumpukanK
,.Salinan kami yang dipantulkan bergerak mundur dari mana itu datang sampai menyentuh
%
saklar lagi. Sekarang kita memiliki energi positif, kita merefleksikan seolah-olah kita telah menabrak\
cermin, membungkus papan ke yang berikutnyaS
dan mengurangi energi kita menjadi 1.The
S
perintah akan mengkonsumsi 1 energi untuk melestarikan arah kami. Seandainya kita tidak punya energi, atom akan dibelokkan seolah-olah terkena\
cermin, ke bawah. Sebagai gantinya, kami bergerak ke kanan lagi dan mengambil lebih banyak input dengan?
dan siklus berulang.Setelah atom kita mencapai EOF,
?
perintah akan menyimpan 1 energi dalam atom. Jadi, ketika kita menekanJ
perintah kali ini, kita sepenuhnya melompati%
sakelar dan mendarat diS
sakelar dengan 0 energi.Sekarang, karena energi kita dikonsumsi dalam lompatan, arah kita tidak dipertahankan oleh
S
saklar, tetapi kita agak diarahkan ke bawah. Kami kemudian mengurangi energi kami menjadi -1 dengan~
perintah dan membungkus papan. Ketika dipukul dengan energi negatif,K
perintah muncul atom bukannya mendorongnya. Kami mengeluarkan atom yang baru muncul dengan kami!
, dan menggunakan energi 1 dari atom itu untuk mem-bypassS
switch, dan siklus selesai.Jika tumpukan
K
itu kosong, energi atom kita dinegasi (menghasilkan energi +1) dan dipantulkan kembali ke~
perintah, meninggalkannya dengan energi 0. Setelah memukulS
lagi, kita dibelokkan ke kanan, sampai?
dipukul. Karena EOF telah tercapai,?
menghancurkan atom dan mengakhiri program.sumber
Labirin , 10 byte
Biasanya, program Labyrinth seharusnya menyerupai labirin, tetapi saya dapat menekan loop dalam satu ini dengan sangat ketat, sehingga kode tersebut berakhir sebagai satu blok (ruang?). Ini adalah versi yang sedikit diperluas yang membuatnya lebih mudah untuk mengikuti aliran kontrol:
,
membaca satu byte pada satu waktu dari STDIN hingga mencapai EOF dan kembali-1
. The)
bertahap nilai ini sehingga kita mendapatkan sesuatu yang positif untuk setiap byte membaca dan nol pada EOF. The:
duplikat setiap membaca byte.Setelah kita menekan EOF, penunjuk instruksi melanjutkan ke loop kedua, di mana itu berulang kali membuang satu nilai dengan
;
(awalnya EOF, kemudian salinan kedua dari setiap byte), kemudian menurunkan nilai berikutnya dengan(
dan mencetaknya dengan.
. Karena salinan kedua (yang selalu positif) kita tahu bahwa IP akan berbelok ke kanan di atas dan melanjutkan di loop ini.Setelah semua byte dicetak, bagian atas tumpukan adalah nol lagi dan IP terus lurus ke depan
@
dan program berakhir.Duplikasi yang tampaknya tidak perlu dari setiap byte adalah apa yang memungkinkan saya untuk memastikan bahwa (bahkan dalam loop ketat dari versi golf) IP selalu mengambil belokan yang benar dan tidak pernah melintasi dari satu loop ke loop lainnya.
Tip untuk TheNumberOne dan Sp3000 yang upayanya sendiri banyak membantu dalam menemukan solusi yang sangat terkompresi ini.
sumber