Semordnilaps (juga dikenal sebagai heteropalindrom, semi-palindrom, half-palindrom, reversgram, mynoretehs, anagram reversibel, pembalikan kata, atau anadrom) adalah kata-kata yang juga kata-kata ketika dieja terbalik. Beberapa contoh adalah:
- Ward <=> Draw
- Menambang <=> Denim
- Bagian <=> Tali
Dengan bilangan bulat positif N (melalui argumen fungsi atau STDIN), kembalikan / keluarkan daftar semordnilaps dari daftar kata-kata bahasa Inggris ini , yang memiliki huruf N persis. Daftar kata-kata dapat disimpan secara lokal pada komputer Anda sebagai file teks yang disebut: w.txt
. Anda juga bisa mendapatkan daftar dari url, tetapi akan dimasukkan dalam jumlah byte.
Aturan:
- Palindrom bukan semordnilaps! Karena itu, kata "siang", "rotor" dan "radar" tidak boleh dimasukkan dalam daftar.
- Hanya satu kata (dalam pasangan semordnilap) yang harus dimasukkan dalam daftar. Karena itu, jika "anjing" ada dalam daftar, "tuhan" tidak boleh (tidak peduli yang mana yang termasuk.)
- Jika tidak ada semordnilaps, output harus berupa string kosong, 0, FALSE atau sesuatu yang menunjukkan bahwa tidak ada hasil. Fungsi tersebut harus berfungsi bahkan jika tidak ada hasil.
Ini adalah kode golf sehingga kode terpendek dalam byte menang!
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
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 nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Emordnilap
dan bentuk jamak menjadiSemordnilap
? ;)Jawaban:
Pyth , 23 (18 kode, 5 STDIN diperlukan)
Ini adalah solusi yang cukup mudah.
J
menyimpan daftar kata. Kemudian kami memfilter daftar kata (f J
) pada panjang kata menjadi input (qlTQ
), kata terbalik berada di daftar (}_TJ
), dan pembalikan kata menjadi lebih besar dari kata (>_TT
). Kondisi terakhir memastikanT
tidak palindromik, dan hanya satu dari pasangan yang dicetak. Daftar yang dihasilkan dicetak.Cara Pyth bekerja, satu-satunya cara untuk membuka file adalah dengan menerima namanya di STDIN. Inilah sebabnya saya menghitung 5 dari byte STDIN
w.txt
,, dalam skor saya.Contoh dijalankan:
sumber
Ruby, 74 byte
Iterasi daftar dengan menghapus elemen, yang menghindari kedua palindrom dan mengeluarkan "stres" dan "makanan penutup". Menggunakan nama variabel yang sama untuk fungsi dan iterator menyiasati quirk sintaksis Ruby: meskipun
f=i.pop
dievaluasi sebelumnyaf.reverse
, baris tidak akan diuraikan kecualif
sudah berarti sesuatu. Saya juga bisa menggunakanp
.sumber
bash
134157118 bytef () { comm -12 <(sort w.txt) <(rev w.txt|sort)|while read w; do ((${#w}==$1))&&[[ $w<$(rev<<<$w) ]]&&echo $w; done; }
Ini bukan entri serius, tetapi sebagai tanggapan atas jawaban Brian Bash . Ini adalah bagaimana saya cenderung berpikir tentang pemrograman hal semacam ini di Bash - dengan menggunakan Bash sendiri sesedikit mungkin, dan membiarkan alat bawaan melakukan semua pekerjaan.
sumber
&&[[ $w > $(rev<<<$w) ]]&& echo $w
tetap hindarisort|tail -1
. Dengan itu, saya pikir Anda bahkan dapat menjatuhkan jenis terakhir dan unik, karena menghilangkan palindrom dan hanya menghasilkan salah satu kata.<(sort w.txt)
tidak apa-apa.Python,
126125120 byteSolusi yang sangat mudah.
sumber
k=c[::-1]
. Juga, tidak bisakah Anda meneleponset()
hanya untuk kedua kalinya? Saya tidak berpikir ada pengulangan dalam file?k
(9 untuk definisi ditambah 1 untuk baris baru ditambah 1 untuk ruang), tapi saya hanya akan menyimpan 10 karakter (ambil[::-1]
untuk 6 tetapi tambahkan 1 karena saya kemudian butuh spasi). Tentang ituset
, saya perluJ
menjadi satu set karena saya menghapus kata-kata yang digunakan dari itu untuk memenuhi aturan no-dupeN==len(c)and
menghemat ruang.=
- seharusnya==
.CJam,
4847454238 byteKarena URL harus dihitung, saya menggunakan pemendek URL yang sama dengan Pengoptimal.
Ini
§
adalah bagian dari ASCII yang diperluas, sehingga setiap karakter dalam kode dapat dikodekan dalam satu byte.Seperti dalam kasus Optimizer, Anda harus menggunakan penerjemah Java dan menjalankan ini secara lokal dari file, katakan
semordnilap.cjam
, lalujadi input diberikan sebagai argumen baris perintah.
Cara kerjanya (agak ketinggalan jaman):
String yang dihasilkan secara otomatis dicetak pada akhir program.
sumber
Jawa,
280218 byteDibandingkan dengan sisa kompetisi, saya sama sekali tidak tahu apakah ini skor yang bagus.
Diperluas:
Menggunakan compareTo () untuk secara bersamaan mengabaikan palindrom dan duplikat.
sumber
Files.readAllLines(Paths.get("w.txt"))
sebelumnya. Itu trik yang berguna.CJam, 68 byte
Anda harus mengunduh versi Java dari kompiler dari sini dan menyimpan kode di atas dalam file bernama words.cjam (bisa berupa nama apa saja). Kemudian jalankan kodenya seperti
Misalnya, untuk
N = 8
,sumber
Node.js, 172 byte
Fungsi:
Pengujian:
sumber
K, 59 byte
Cukup mudah. Baca daftar, buat daftar terbalik, ambil persimpangannya, saring palindrom, saring dalam hitungan yang diperlukan, urutkan dan potong pasangan.
sumber
Ruby, 95 byte
Penjelasan
Integer
.String
(a
).Array
semua kata (tanpa baris baru).a
.Array
l
.l
.Kosong
Array
dikembalikan ketika kata-kata yang memenuhi syarat tidak ditemukan.sumber
Node.js, CoffeeScript, 132 Bytes
Node.js, 162 Bytes
Konsol Alat Dev Chrome, 111 Bytes (Di halaman unduhan)
Semua versi mengembalikan array dengan panjang Semordnilaps
n
.Node.js, 162 Bytes
Mencetak semua semordnilaps:
sumber
Julia, 101 byte
Ini seharusnya bekerja ...
sumber
Mathematica, 105 byte
Terkadang Impor akan secara otomatis membagi teks menjadi daftar daftar baris, atau memperlakukannya sebagai CSV atau TSV. Di lain waktu, Impor akan membaca konten file menjadi string. Impor melakukan yang terakhir untuk data pengujian.
sumber
PESTA
menguji ...
sumber