Tantangannya: Untuk membaca input yang panjangnya berubah-ubah dan menghasilkan ROT13 dari input tersebut. Semua karakter selain AZ harus disalin ke output kata demi kata, dan case harus dipertahankan jika memungkinkan.
Bahasa apa pun yang dapat membaca dan menulis stream standar adalah permainan yang adil.
code-golf
cryptography
MiffTheFox
sumber
sumber
Jawaban:
Bash, 23 byte
Jawaban 23 karakter Canonical:
sumber
tr A-za-m N-ZA-z
(16 karakter)[\\]^_`
input. Itu akan kembali sebagaiNOPQRS
bukan[\\]^_`
, setidaknya dalam versi yangtr
saya miliki. (Itu adalah enam karakter dalam ASCII yang terletak di antaraZ
dana
. Jelas, semua karakter lain akan berfungsi dengan benar.)Bash - 5 karakter
sumber
bash --version GNU bash, Version 4.0.33(1)-release (i486-pc-linux-gnu)
rot13 - 0 chars
...;)sudo apt-get install bsdgames
"Python 2, 34 byte
sumber
Befunge -
7x30 = 2106x26 = 156 karakterVersi streaming baru yang mendukung huruf besar dan kecil dan harus mendukung input tanpa batas.
Versi lama
Ini menyimpan nilai-nilai di dalam kode sumbernya sendiri. Benar-benar menunjukkan betapa mengerikannya untuk mencoba dan menampilkan nilai yang disimpan dalam urutan yang sama dengan yang Anda terima. Hanya mendukung karakter huruf kecil.
Saya tidak yakin persis batasan apa yang dimilikinya, menggunakan http://www.quirkster.com/iano/js/befunge.html sebagai penerjemah yang tampaknya tidak dapat diakses dengan input besar.
sumber
Ruby -
60 57 3837 karakterSunting: Dan baru menyadari string Ruby memiliki
tr
metode.Uji
Memberi:
sumber
puts
, dan 'Az' adalah jalan pintas untuk 'A-Za-z''A-z'
sebenarnya'A-Z[\]^_
a-z ', damn ascii having characters between
Z` dana
.puts gets.tr'A-Za-z','N-ZA-Mn-za-m'
.gets
hanya mengembalikan baris pertama, menggunakan $ <. Read dibaca sampai EOF. Pertanyaannya tidak mengatakan apa-apa tentang apakah input dapat berisi baris baru jadi saya hanya salah hati-hati.vim, 5 penekanan tombol
Dengan asumsi mode normal dan teks sudah ditulis dalam buffer:
ggg?G
Atau, mengalah konvensi vimgolf:
g?GZZ
Anda juga dapat menjalankannya sebagai perintah terminal, seperti ini:
Saya kira yang terakhir akan dihitung sebagai "program" 8 karakter (
norm g?G
)sumber
norm g?G
kependekan untuknormal g?G
yang membuat 8 karakter.gg
dapat ditinggalkan. Saya akan mengatakan 3 penekanan tombol ketika file terbuka.g?GZZ
).C -
8379 karakterVersi yang dapat dibaca:
sumber
Python (117 byte)
Ini adalah versi Python yang menghindari
rot13()
-metode.sumber
import sys
dan gunakansys.stdin.read()
.[]
untuk membuat daftar comp generator: tio.run/…tr///
solusi dalam Perl (39 karakter), boilerplate dapat dihilangkan dengan-p
:Menggunakan
-p
(23 karakter termasuk sakelar tambahan):sumber
R, 37 byte
example("chartr")
menjalankan contoh untukchartr
, yang meliputirot
fungsi, yang secaraROT13
default ....sumber
DC (
111108 untuk dc itu sendiri)Ok, ini dia di (kebanyakan) dc dan beberapa sihir sed dan od untuk mendapatkannya ke format yang tepat untuk kode. Jika Anda tidak menghitung hal input (
echo -n MESSAGE |
) itu 160 byte:Yang menarik, program dc itu sendiri hanya panjang 108 byte , lebih pendek dari versi python non-perpustakaan. Ia bahkan mempertahankan case dan tanda baca, dan mengalahkan Javascript dalam pengiriman di atas! Kalau saja saya bisa mengurai output od lebih baik, atau lebih baik lagi menggantinya sama sekali.
EDIT: Perlu dicatat bahwa pertanyaan itu tidak menunjukkan baris baru tertinggal
10P
yang menyelamatkan saya tiga byte lebih lanjut.EDIT 2: Tidak ada spesifikasi untuk format input, jadi saya menganggap itu diambil karena nyaman untuk program saya: P
sumber
Befunge-93, 85 (kisi: 41x3 = 123)
Ini adalah pertanyaan kuno, tapi saya pikir saya akan menghidupkannya kembali untuk mengirim jawaban Befunge yang sedikit lebih baik.
Anda bisa mengujinya di sini . Masukkan satu karakter pada satu waktu; itu berakhir saat memasukkan
.
karakter (Anda dapat mengubahnya dengan memodifikasi"."
dekat sisi kanan baris kedua). Bekerja dengan huruf besar dan kecil, serta tanda baca, dan tanpa batas input.Saya tidak berharap ini mendapatkan satu ton upvotes atau apa pun, tapi saya hanya ingin menunjukkan
betapa luar biasanya Befunge adalahbahwa Anda dapat melakukan sedikit lebih baik daripada jawaban lainnya.Saya mungkin bisa membuatnya lebih pendek di Befunge-98.
sumber
>$! _
karena Anda punya dua nol pada tumpukan pada saat itu ketika Anda mengharapkan nilai bukan nol.PHP -
1039880 karakter(tidak menggunakan str_rot13 ())
sumber
Delphi, 110
sumber
var c:Char;begin repeat Read(c);Write(Chr(Ord(c)+(Ord(c in['A'..'M'])-Ord(c in['N'..'Z']))*13));until EOF;end.
menghemat satu karakter :)Haskell, 100 karakter
sumber
Perl6 (54)
sumber
Java 251 karakter
sumber
Python 3 (107)
Oke, saya berjanji untuk berhenti menjawab pertanyaan ini sekarang, tetapi saya merasa harus mengalahkan jawaban DC dengan Python. Ini mungkin mencerminkan buruk pada saya sebagai pribadi :).
sumber
C:
6968 karakterBaiklah, saya tahu utas ini sudah lama mati, tapi saya tidak tahan dengan solusi-C (panjang) yang bahkan tidak dapat dikompilasi pada Dentang (tetapi tidak pada GCC).
Ini mungkin hampir masih dapat dipecahkan.Itu pasti bisa dipadamkan. Dan itu tidak hanya dapat dipadamkan, tetapi juga memungkinkan untuk membuatnya rekursif.sumber
05AB1E ,
1312 byteMenyimpan satu byte berkat robbie0630
Cobalah online!
Penjelasan
sumber
--debug
, dan sepertinya itu˜
adalah no-op dalam hal ini dan dapat dihentikan.PHP - 41 Karakter
sumber
JavaScript 1.8, 106
alert(prompt().replace(/\w/g,function(c)String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))))
JavaScript, 115
alert(prompt().replace(/\w/g,function(c){return String.fromCharCode(c.charCodeAt()+(c.toLowerCase()<'n'?13:-13))}))
Solusi ini menyelesaikan masalah dengan menambahkan 13 ke kode karakter jika karakter tersebut di bagian pertama dari alfabet, atau mengurangi 13 jika di bagian kedua.
sumber
+(c.toLowerCase()<'n'?13:-13))
dengan-13+26*/[a-m]/i.test(c)
.CHIQRSX9 + , 1
Anda hanya perlu menggunakan alat yang tepat untuk masalah tersebut.
CHIQRSX9 + adalah Turing yang lengkap, dan dapat membaca dan menulis dari saluran standar dengan
C
.sumber
C, 136 byte
Saya tidak pernah merasa ada solusi yang cukup baik untuk dikirim di sini, tetapi membuat ini untuk bersenang-senang, dan berpikir bahwa itu akan menjadi obat gerbang saya ke dalam kode golf.
sumber
Javascript, 177 byte
Ini mengasumsikan bahwa ada dua fungsi, cetak dan bacaLine:
sumber
LispLisp (16.636)
Maafkan saya.
sumber
8086 Kode Mesin, 27 byte
Belum dirakit:
Masukkan string
SI
, panjangCX
. Output string buffer diDI
.Uji output program IBM PC DOS:
Unduh program uji R13.COM (PC DOS).
sumber
Haskell - 112 karakter
sumber
K, 31
sumber
{x^a(,/-13 13#\:a:.Q.A)?x}
untuk 26 byteTcl, 74 karakter
sumber