Saat menulis pesan dengan magnet kulkas, Anda akan sering menemukan diri Anda mengganti sebuah 1
untuk I
. Dalam tantangan ini, tujuan Anda adalah untuk mengetahui apakah suatu pesan dapat ditulis menggunakan huruf-huruf dari pesan lain. Pergantian yang diizinkan adalah:
A = 4
B = 8
C = U
E = M = W = 3
G = 6 = 9
I = 1
L = 7
N = Z
O = 0
R = 2
S = 5
Misalnya, pesan CIRCA 333
dapat disusun ulang untuk mengeja ICE CREAM
, di mana dua 3
s pertama diputar 180 derajat untuk membuat dua E
s, dan yang terakhir 3
diputar 90 derajat berlawanan arah jarum jam untuk membuat M
. Ruang putih dapat dimasukkan dalam pesan, tetapi mereka tidak harus diperhitungkan dalam solusi Anda, karena dibuat dengan menempatkan magnet di lemari es.
Memasukkan
Dua string (atau array karakter). Semua pesan akan cocok^[A-Z0-9 ]+$
Keluaran
Benar jika dua string input adalah pengaturan ulang yang valid satu sama lain, falsey sebaliknya.
Contohnya
["CIRCA 333", "ICE CREAM"] => true
["DCLV 00133", "I LOVE CODE"] => true
["WE ARE EMISSARIES", "33 423 3315542135"] => true
["WE WANT ICE CREAM", "MET CIRCA 334 MEN"] => true
["I HAVE ICE CREAM", "HAVE 2 ICE CREAMS"] => false
Lebih banyak contoh menarik
Ini adalah semua 15 kata kata yang memetakan ke kata lain Beberapa substitusi sepele, tetapi saya memasukkan semua yang saya temukan.
["ANTHROPOMORPHISE","ANTHROPOMORPHISM"]
["ANTIPHILOSOPHIES","ANTIPHILOSOPHISM"]
["CIRCUMSTANTIALLY","ULTRAMASCULINITY"]
["DECENTRALIZATION","DENEUTRALIZATION"]
["DIMETHYLNITROSAMINE","THREEDIMENSIONALITY"]
["INSTITUTIONALISE","INSTITUTIONALISM"]
["INTERCRYSTALLINE","INTERCRYSTALLIZE"]
["INTERNATIONALISE","INTERNATIONALISM"]
["OVERCENTRALIZATION","OVERNEUTRALIZATION"]
["OVERCENTRALIZING","OVERNEUTRALIZING"]
["PREMILLENNIALISE","PREMILLENNIALISM"]
["TRANSCENDENTALIZE","TRANSCENDENTALIZM"]
Karena ini adalah tantangan kode golf, solusi terpendek menang! Saya akan menerima solusi terpendek dalam 7 hari dari posting. Selamat bermain golf!
Terkait
EDIT : Membuat kesalahan dalam pergantian, memiliki G = 6
dan 6 = 9
sebagai pergantian terpisah, menggabungkan mereka menjadi satu.
T
danL
tidak bisa ditukar, saya tidak bisa menambahkanT = 7
. Hal yang sama berlaku untukN = Z = 2
, yang akan menyiratkan hal ituN = Z = R = 2
. Namun, jenis pengganti yang Anda sarankan akan membuat versi yang lebih sulit dari tantangan ini, yang mungkin saya posting di lain waktu. Saya hanya ingin melihat apakah tantangan seperti ini akan diterima dengan baik terlebih dahulu.false
.Jawaban:
Japt ,
38363330 byteMengambil input sebagai array dari 2 string.
Cobalah atau jalankan semua test case
3 byte disimpan berkat ETHProductions
sumber
r¶
di akhir untuk menghemat 3 byte.Python 2 ,
145131130129125 byteCobalah online!
Alt:
Python 2 , 125 byte
Cobalah online!
sumber
Ruby ,
997271 byteCobalah online!
Mengambil array string, menganggap input dalam huruf besar seperti dalam semua kasus uji.
-1 byte golf oleh benj2240.
sumber
!
untuk menyimpan byteJavaScript (ES6),
102100 byteMengambil input sebagai dua larik karakter dalam sintaks currying
(a)(b)
. Mengembalikan boolean.Cobalah online!
Bagaimana?
Menggunakan fungsi helper g () , untuk setiap input s :
Digit 0 hingga 8 dan huruf X , Y dan Z tidak berubah. Yang lainnya diterjemahkan secara eksplisit.
Kode:
Kami mengurutkan karakter (yang membawa semua spasi di awal), bergabung dengan mereka dan menghapus semua spasi putih terkemuka.
Kode:
Akhirnya, kami membandingkan kedua output.
sumber
Retina 0.8.2 , 42 byte
Cobalah online! Mengambil input pada baris yang berbeda, tetapi Tautan menyertakan case uji dan header. Penjelasan:
Petakan semua huruf ke set minimal, hapus spasi.
Urutkan setiap string ke dalam urutan.
Bandingkan kedua nilai tersebut.
sumber
APL (Dyalog Unicode) , 49 byte SBCS
-1 terima kasih kepada ngn.
Fungsi awalan diam-diam anonim.
Cobalah online!
⎕R
PCRE R eplace:'UMWZ '
lima karakter ini⎕D,
didahului oleh digit,¨
secara terpisah (membuat masing-masing menjadi string daripada menjadi karakter tunggal)dengan:
⊂⍬
tidak ada yang'OIREASGLBGCEEN',
didahului oleh karakter ini(
...)
terapkan fungsi tersembunyi berikut untuk itu:(
...)¨
terapkan fungsi tersembunyi berikut untuk masing-masing:⊂
lampirkan (untuk memperlakukannya secara keseluruhan)⍋⌷¨
gunakan setiap indeks yang akan mengurutkannya untuk mengindeks ke seluruh string≡/
apakah mereka identik? (lit. pengurangan pertandingan)sumber
''
->⍬
Python 2 , 108 byte
Cobalah online!
Ada 23 kelas karakter ekuivalensi. Menggunakan string 36 karakter
'85930A4614012B3C4D5EF6378GH9AI2J3KL7'
, kami memetakan setiap karakter ke kelas ekivalennya (mengabaikan ruang), lalu mengurutkan array yang dihasilkan. Dua string setara jika daftar yang dihasilkan sama.sumber
Java 10,
262260258216208174 byte-2 byte terima kasih kepada @Arnauld .
-76 byte terima kasih kepada @ OlivierGrégoire .
Cobalah online.
Penjelasan:
sumber
"A4B8CUEMEWE3G6G9I1L7NZO0R2S5".split("(?<=\\G.{2})")
tampaknya bekerja ... walaupun saya bahkan tidak yakin persis bagaimana caranya. : p{2}
bisa.
untuk -2 byte lainnya. Saya juga tidak 100% yakin cara kerjanya. Saya tahu(?<= ... )
digunakan untuk membagi tetapi tetap mengikuti pembatas per item . Tapi saya agak bingung mengapa(?=\\G..)
(tetap memimpin pembatas) tidak bekerja dalam hal itu. Dan juga tidak benar-benar tahu bagaimana tindakan\\G..
vs..
di split di sini. Akan melihat apakah saya bisa mengetahuinya di suatu tempat, karena bukan saya penasaran. ; p Terima kasih baik untuk byte yang disimpan. Perlu diingat\\G
saat membelah blok yang berukuran rata. :)(?<=\\G..)
di dalam split, saya telah membuat pertanyaan StackoverFlow yang memberi sedikit cahaya. Pada dasarnya itu adalah perilaku tidak terdefinisi yang bekerja secara berbeda di hampir setiap bahasa. Meskipun\G
panjangnya nol, di Jawa dengan tampilan positif di dalam perpecahan, agak konflik kedua aturan menyebabkan perilaku yang kita lihat di sini. Ini masih agak samar bagi saya secara pribadi, tetapi setidaknya itu menghemat 4 byte dalam jawaban ini. ;)R , 123 byte
Cobalah online!
utf8ToInt
mengubah string menjadi vektor titik kode Unicode.tetapi itu tidak membantu di sini karena saya sebenarnya berurusan dengan bilangan bulat dan bukan logika.!sd(a-b)
adalah satu byte lebih pendek dariall(a==b)
sumber
!any
di tempat!sd
sebagai elemen bisa semua sama, tetapi untuk 1. Cobalah:f(list("BCDEF","ABCDE"))
J , 56 byte
Cobalah online!
Penjelasan:
&
untuk argumen kiri dan kanan-.&' '
menghapus spasi dari input,rplc
menggantikan'0123456789UMWZ';"0'OIREASGLBGCEEN'"1
karakter dalam input dengan mengganti karakter di kolom kiri dengan yang di kanan: (di sini dialihkan untuk menghemat ruang)/:~@
dan mengurutkan string yang dihasilkan-:
apakah string yang diurutkan sama?Solusi awal saya:
J ,
7773 byteCobalah online!
Penjelasan:
(' '-.~])
menghapus spasi dari argumen dane."1
menguji setiap karakter untuk keanggotaan dalam tabel berikut:[:(,a.,.@-.,)'EMW3','G69',9 2$'A4B8CUI1L7NZO0R2S5'"1
referensi:1#.
menjumlahkan tabel perbandingan untuk setiap argumen-:&
apakah mereka cocok?sumber
Perl 6 , 55 byte
Cobalah online!
Bekerja dengan sejumlah string yang berubah-ubah.
sumber
Python 2 , 111 byte
Cobalah online!
116 byte
Cobalah online!
sumber
Python 3 , 105 byte
Cobalah online!
sumber
Jelly ,
3934 byteCobalah online!
sumber
05AB1E ,
3833 byteCobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
Lihat tip tambang 05AB1E ini (bagian Bagaimana mengompresi string bukan bagian dari kamus? Dan Bagaimana mengompresi bilangan bulat besar? ) Untuk memahami mengapa
.•2Θ`ĆĀÑεÉ•
ini"abemwgilorsuz"
dan•B/óÕ¦•
sekarang48333917025
.sumber