Tantangan
Terinspirasi oleh video ini
Seperti yang Anda ketahui, palindrome adalah kata yang dieja sama maju seperti mundur. Kata "PULP" bukanlah palindrom, tetapi ketika diterjemahkan ke dalam Kode Morse (dengan jarak antar huruf dihapus), "PULP" menjadi ". - ...-.-...--." yang merupakan palindrome. Tugas Anda adalah menulis program atau fungsi yang mengambil string dan mengembalikan apakah kata itu palindrom dalam Kode Morse Internasional.
A: .-
B: -...
C: -.-.
D: -..
E: .
F: ..-.
G: --.
H: ....
I: ..
J: .---
K: -.-
L: .-..
M: --
N: -.
O: ---
P: .--.
Q: --.-
R: .-.
S: ...
T: -
U: ..-
V: ...-
W: .--
X: -..-
Y: -.--
Z: --..
Aturan
Memasukkan
Masukan dapat diambil dalam format apa pun yang masuk akal. String input hanya akan berisi huruf dalam hal apa pun yang Anda inginkan. String tidak akan berisi spasi, angka, atau tanda baca.
Keluaran
Program Anda harus menampilkan 1 dari 2 hasil konstan yang berbeda berdasarkan pada apakah inputnya adalah palindrom, misalnya Benar / Salah, 1/0, HOTDOG / NOTHOTDOG
Mencetak gol
Ini adalah kode-golf sehingga jawaban terpendek dalam byte menang. Celah standar dilarang.
Uji Kasus
Input => Output
"PULP" => True
"RESEARCHER" => True
"HOTDOGS" => True
"" => True
"A" => False
"RACECAR" => False
"PROGRAMMING"=> False
"PUZZLES" => False
sumber
Jawaban:
Jelly , 28 byte
Cobalah online!
Saya menulis jawaban ini melihat salah satu dari ini (baca baris dari kanan ke kiri, dan Anda mendapatkan string ajaib saya!):
sumber
73,540,211,105,102,870,315,464,559,332nd
... apa?! Bagaimana Anda menemukan bahwa nomor? Juga bagaimana yang tidak mengambil selamanya untuk menjalankan?00ABCDEFGHIJKLMNOPQRSTUVWXYZ
. Jelly memiliki built-in untuk mengubah permutasi menjadi angka seperti itu, dan angka tersebut kembali ke permutasi. Lihat basis nomor faktorial di Wikipedia.00ABCDEFGHIJKLMNOPQRSTUVWXYZ
Jelly ,
35 32 2725 byte-2 Berkat Dennis (ubah permutasi untuk menghindari
%32
)Mengambil input dalam huruf besar; output adalah
1
true,0
false.Cobalah online! Atau lihat test-suite .
Bagaimana?
Solusi 35 byte sebelumnya (juga membutuhkan input dalam huruf besar) ...
sumber
Dyalog APL , 24 byte
Cobalah online!
dfns
tidak pernah berhenti membuat takjubsumber
MBASIC , 325 byte
Upaya pertama, sebelum senjata besar sampai di sini :-)
Keluaran
sumber
JavaScript (Node.js) , 111 byte
Cobalah online!
sumber
Perl 6 , 87 byte
Cobalah online!
Ubah kata menjadi serangkaian 1s dan 0s dan periksa apakah palindromik.
Penjelasan:
sumber
Python 3 ,
172148104 byteGolf kode pertama. Mohon berbaik hati dan menawarkan bantuan :)
Ini didasarkan pada jawaban C #: /codegolf//a/175126/83877 . Saya mengambil ide yang sama dan menerapkannya pada Python 3. Saya mencoba yang terbaik untuk golf-ify kode, tapi saya yakin ada banyak lagi yang bisa saya lakukan.
EDIT 1: Terima kasih @Stephen dan @Cowabunghole karena membantu saya menghapus beberapa spasi putih dan kode yang tidak perlu.
EDIT 2: Terima kasih @ JoKing atas saran untuk melakukannya dalam biner. Ini adalah trik yang sangat rapi di mana '-' dan '.' bahkan tidak perlu. Ini menyebabkan penurunan byte yang sangat besar.
Larutan
Cobalah online!
sumber
while i > 0:
untukwhile i>0:
menyimpan 2 bytes. Juga, saya bisa saja salah tetapi saya pikir Anda bisa menghapus> 0
semuanya dan hanya menggunakanwhile i:
. Kedua, pernyataan di loop sementara bisa pergi pada baris yang sama dengan while, menyimpan baris baru dan lekukan. Terakhir, ini adalah saran yang mengerikan di mana-mana kecuali saat bermain golf, tetapi jika Anda menggunakan Python 2 dan bukan Python 3, Anda dapat menghemat 1 byte dari penggunaan/
alih-alih//
untuk pembagian.~-i
bukani-1
. Ini adalah jumlah byte yang sama, tetapi Anda kemudian dapat menghilangkan tanda kurung yang menghemat 2 byte.-
dan.
. 105 bytePyth,
3533 byteKode berisi karakter yang tidak patut dicetak, jadi ini hexdump.
Cobalah online. Suite uji.
Penjelasan
Mulai dari
."
akhir kode menghasilkan alfabet Morse, dengan titik-titik sebagai\x08
dan berlari sebagai\x07
, dan dipisahkan oleh tab.c
memisahkan string dengan tab.XzG
menerjemahkan (X
) input (z
) dari alfabet (G
) ke "alfabet Morse" ini.s
menjumlahkan (bergabung) simbol Morse bersama-sama. Untuk input kosong, mengembalikan 0, tetapi ini bukan masalah._I
memeriksa apakah hasilnya tidak berubah (I
) saat dibalik (_
). Untuk input kosong, periksa apakah 0 tidak berubah ketika dinegasikan.sumber
Retina 0.8.2 , 87 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Semua kode Morse untuk huruf-huruf pada set ini diakhiri dengan
.
.Semua kode Morse untuk huruf-huruf pada set ini diakhiri dengan
-
.Ganti setiap huruf dengan huruf yang kode Morse-nya adalah awalan dari huruf itu (di sini
E
danT
hanya dihapus melalui yang tidak terhapuskan_
, tetapi biasanya mereka akan berubah menjadi spasi). Misalnya,P
adalah kode MorseW
dengan tambahan.
di bagian akhir; kami menambahkan di.
atas jadi sekarang yang tersisa adalah untuk memecahkan kodeW
.Ulangi tahap di atas sampai tidak ada huruf yang tersisa.
Jika karakter pertama dan terakhir sama, hapus keduanya.
Ulangi sebanyak karakter yang cocok.
Jika ini adalah palindrome, maka paling tidak ada satu karakter yang tersisa.
sumber
Bahasa Wolfram (Mathematica) , 107 byte
Cobalah online!
Mirip dengan jawaban Jelly ini : kita menganggap kode Morse sebagai biner, dan menuliskan string di
" ETIANMSURWDKGOHVF L PJBXCYZQ"
mana posisi karakter, dalam biner, memberi kita kode Morse-nya. Tetapi dengan 1 tambahan ditambahkan karena kami ingin membedakanS = 000
danH = 0000
, misalnya. Kemudian##2&@@@
secara bersamaan menyingkirkan 1 terkemuka ini dan meratakan.sumber
05AB1E , 37 byte
Cobalah online!
Mengkodekan alfabet dalam basis 3, dikonversi ke basis 255:
Basis 255:
Kemudian pada dasarnya, saya pisahkan pada 0's, membangun string dengan posisi dan memeriksa palindrome.
sumber
C # (.NET Core) , 191 byte
Cobalah online!
Sebagian dari jawaban ini diadaptasi dari kode morse golf Nick Larsen . Berdasarkan komentar pada jawabannya, ini bisa berpotensi untuk golf lebih lanjut.
Tidak Terkumpul:
sumber
PowerShell ,
204187 byteCobalah online!
Kesalahan pada string nol ... Adakah yang bisa membantu dengan ini?
Kode uji (Setelah membungkus kode dalam Blok Skrip dan ditugaskan ke variabel $ Z ...):
Keluaran:
sumber