Baca dua string dari stdin
.
Output Yes
jika satu string adalah versi yang dirotasi dari string lainnya.
Jika tidak, outputNo
Testcases
Memasukkan
CodeGolf GolfCode
Keluaran
Yes
Memasukkan
stackexchange changestackex
Keluaran
Yes
Memasukkan
stackexchange changestack
Keluaran
No
Memasukkan
Hello World
Keluaran
No
Stackexchange Stackchangeex
kembali?No
. Rotasi adalah pergeseran, seperti tandaJawaban:
APL (28)
Mengambil input pada dua baris.
Penjelasan:
A←⍞
: baca sebaris input dan simpan di A⌽∘A¨⍳⍴A
: Putar A demi x, untuk setiap x dalam [1..panjang A]. Memberikan daftar, yaituestT stTe tTes Test
(⊂⍞)∊
: baca baris input lain, dan lihat apakah ada dalam daftar ini.1+
: tambahkan satu ke ini, berikan 1 jika string tidak diputar dan 2 jika itu'No' 'Yes'[
...]
: Pilih elemen pertama atau kedua dari daftar'No' 'Yes'
tergantung pada apakah string diputar atau tidak.sumber
Ruby
4941Edit: ganti gets.split dengan $ *
sumber
$*
argv ketika pertanyaannya ditentukanstdin
.Python, 70 byte
Menguji ...
sumber
stdin
mana solusi ini tidak.print ['No
Python 70 Karakter
Berkat gnibbler untuk trik slice.
sumber
nn nfn
, AndaYes
salah, yang mana salah.<>
dengan-
karena itu juga akan menghasilkan0
jika mereka memiliki panjang yang sama.J, 47
sumber
Menurut spec (panjang tali yang sama):
Perl,
4243 karakterJika string ukuran yang berbeda diperbolehkan, solusinya adalah:
Perl, 47 karakter
rbo
sumber
nn nfn
, AndaYes
salah, yang mana salah.Golfscript, 31
Yang ini periksa panjangnya dulu, jadi harus bekerja seperti yang diharapkan.
sumber
:)
dan=)
+1 untuk kode yang sangat menyenangkanJ, 57
Penggunaan sampel:
sumber
Windows PowerShell, 76
sumber
JavaScript, 51
JavaScript tidak memiliki inang kanonik, jadi jawaban ini ditulis sebagai fungsi dari dua argumen. Skor naik hingga 60 jika kita melarang fitur JS 1.7 (penutupan ekspresi).
Dalam shell SpiderMonkey ini akan menjadi (untuk skor 71):
sumber
=>
notasi fungsi;)Python,
6663Solusi lain dalam 69 char
sumber
print'YNeos'[a!=(2*a).replace(b,"")::2]
J, 84
sumber
JavaScript (120 karakter)
Keluaran:
sumber
Ruby, 58 (62) karakter
Solusi ini mengasumsikan input hanya berisi karakter alfanumerik (sebenarnya semua yang tidak memiliki arti khusus di dalam ekspresi reguler adalah ok).
Solusi yang tidak memiliki batasan ini adalah 4 karakter lebih lama
sumber
Python, 71
sumber
nn nfn
, AndaYes
salah, yang mana salah.PHP, 61
sumber
Ruby, 41
sumber
puts gets =~ /^(.+)(.*) \2\1$/ ?:Yes: :No
- tingkatkan menjadi 41 karakter.Haskell (
9896 karakter)sumber
Q (
5043 karakter)sumber
Scala 78
Sayang sekali tentang ukuran cek, tanpa itu hitungannya turun menjadi 54
sumber
"""val b=readLine split " " print(b(0).sorted==b(1).sorted)""".length
menghasilkan 56pesta 56
sumber
GolfScript, 25 byte
Bagaimana itu bekerja
sumber
CJam, 21 byte
Cobalah online!
sumber
0
/1
bukannyaNo
/Yes
.Lua 115 karakter
sumber
Program C - 146
sumber
PHP, 82 karakter
sumber
perl, 123 karakter
sumber
Ruby,
3037Versi yang mencetak "benar" dan "salah" alih-alih "ya" dan "tidak":
Keduanya bekerja dengan string dengan panjang berbeda (tidak seperti yang lama)
sumber
Python 2, 86 Karakter
sumber
Perl (hanya perbaikan cepat)
Solusi untuk memperbaiki sepatu bot karet, menjadi pengguna baru yang saya belum bisa berkomentar, jadi saya hanya akan mengirim jawaban baru.
Karena metode yang disebutkan menggunakan ekspresi reguler yang dibangun dari input pengguna, dimungkinkan untuk melakukan injeksi regex kecil, sebagai berikut:
Cara mengatasinya adalah dengan menggunakan \ Q (dikenal juga sebagai quotemeta):
Kode itu sendiri dapat dipersingkat lebih lanjut menggunakan 'katakan' tetapi ini dibiarkan sebagai latihan untuk pembaca :)
sumber
print+(qw/yes no/)[
Anda mungkin dapat menulisprint qw(yes no)[
yang dua karakter lebih pendek.