Inspirasi tantangan adalah ini yang saya lihat di suatu tempat:
Kata "biarawati" hanyalah huruf dan melakukan gerakan jungkir balik
Tantangan Anda adalah mengambil seutas tali dan menentukan apakah itu huruf pertama yang melakukan gerakan jungkir balik.
Aturan
String adalah huruf yang melakukan gerakan jungkir balik jika:
- Huruf pertama sama dengan huruf terakhir. (Surat itu tidak bisa mendarat di kepalanya.)
- String berganti-ganti antara huruf cartwheeling setiap satu karakter.
Huruf cartwheeling adalah n
dan u
, m
dan w
, b
dan q
. Perhatikan bahwa n
dan w
bersama-sama bukan huruf cartwheeling, dan juga tidak w
dan b
.
- Anda akan mengambil string menggunakan metode input standar kami.
- Anda akan menampilkan nilai kebenaran jika string tersebut adalah huruf cartwheeling, dan nilai falsy jika bukan. Keluaran dapat dilakukan dengan menggunakan metode keluaran standar apa pun.
Aturan tambahan:
- Hanya huruf kecil cartwheel
n
/u
/m
/w
/b
/ yangq
perlu ditangani. - Anda dapat berasumsi bahwa input tidak pernah kosong.
- String satu karakter bukan cartwheel yang valid.
Uji kasus
Input -> Output
nun -> truthy
nunun -> truthy
nunununu -> falsy
wmw -> truthy
wmwun -> falsy
bqbqbqbqbqb -> truthy
v^v^v -> falsy
AVAVA -> falsy
OOO -> falsy
ununununu -> truthy
nunwmwnun -> falsy
nun unun -> falsy
nunwmw -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn -> falsy
m -> falsy
nunuuunun -> falsy
Pemenang
Seperti halnya kode-golf , kode terpendek (dalam setiap bahasa) menang!
b
jungkir balik ke dalamq
, bukan?d
danp
juga teman-teman jungkir balik. Kuncinya adalah mereka berputar, bukan membalik.uwuwuwuwuwu
bqb
tapi tidakpdp
?dpd
,pdp
dan itu tidak berfungsi, saya pikir Anda harus memilikinya dalam kasus uji dengan jawaban yang salah.Jawaban:
Jelly , 23 byte
Ini membutuhkan lebih banyak pekerjaan daripada yang mungkin diperkirakan!
Tautan monadik yang mengambil daftar karakter dan kembali
1
(benar) atau0
(falsey).Cobalah online! atau lihat test suite .
Bagaimana?
Menemukan indeks setiap karakter input dalam daftar karakter 1-diindeks
nmbuwq
. String ini diatur sedemikian rupa sehingga indeks pasangan terpisah tiga, dengan demikian perbedaan tambahan dari indeks untuk roda-roda yang valid akan merupakan pengulangan salah satu[-3,3]
atau[3,-3]
.Ketika suatu item tidak ditemukan dalam daftar dengan indeks "atom", item
i
itu kembali0
, yang akan memasangkan karakter tidak berdasar denganb
, membuat input seperti benarbxbxb
. Jadi0
, diganti dengan10
nilai lebih dari tiga dari nilai lain sebelum memeriksa validitas.sumber
sed 4.2.2 , 30 + 1
-r
=4331 byteDisimpan 12 byte berkat @Neil dengan memperpendek baris pertama
Cobalah online!
Menghapus input jika falsey, jika tidak melakukan apa-apa pada input.
Penjelasan
Dengan
-r
flag, kita tidak perlu menggunakan\(
dan\)
untuk menangkap grup dan ini menghemat byte.sumber
sed
penyihir ...sed
terlihat seperti sihir bagiku. : Punu
dannun
mengandungnu
dan baris kedua memastikan bahwa sisa surat cocok dengan kedua.JavaScript (ES6),
827877 byteDisimpan 1 byte dengan menggunakan dua nilai palsu, seperti yang disarankan oleh ThePirateBay dan MD XF.
Uji kasus
Tampilkan cuplikan kode
sumber
&&
bukan&
?&
akan menghasilkan salah satufalse
atau0
.)&
; Saya menentukan (dalam obrolan) kadang-kadang bahwa nilai falsy yang tidak konsisten diizinkan.Python 3 , 111 byte
-2 byte terima kasih kepada Tn. Xcoder.
Cobalah online!
sumber
nunununu
.Python 2 , 63 byte
Cobalah online!
sumber
"nu un nm mn bp pb".split()
untuk menghemat 4 byte, dan Anda bisa menghapus spasi. 75 byte:lambda s:any(s==c[-1]+c*max(len(s)/2,1)for c in"nu un nm mn bp pb".split())
s[0]
alih - alihc[-1]
.unmnu
danunmwnu
. Benar-benar mengembalikan positif palsu ketika(s==s[::-1])+len(set(s))
4, yang mudah dipaksakan. Bahkan hanya 4 karakter yang berbeda membuatnya kembali Benar.Python 3 , 71 byte
Cobalah online!
-1 berkat @HyperNeutrino dan -13 terima kasih kepada @ovs
Jika di atas ditemukan gagal untuk setiap kasus uji, ada alternatif:
Cobalah online!
Penjelasan
''.join(sorted(list({*n[1::2]}).union({*n[::2]}))))
- Mendapat karakter pada indeks ganjil dan karakter pada indeks genap, menduplikasi mereka dan mengurutkan daftar yang dibentuk oleh penyatuan mereka.in'nu,mw,bq'
- Memeriksa apakah kombinasi surat-surat yang valid.n[0]==n[-1]
- Memeriksa apakah karakter pertama sama dengan yang terakhir.sumber
uwuwuwuwuwu
menghasilkan truenuuun -> True
. Ini tidak benar.JavaScript (ES6), 40 byte
Cek untuk melihat apakah string input digabungkan dengan karakter kedua dari string input adalah string berulang dari pasangan karakter cartwheel yang sama.
Tes:
sumber
Clojure, 156 byte
Ini ternyata sulit! Saya akhirnya harus memecahnya menjadi 3 sub masalah:
Saya tentu saja tidak menang, tetapi ini adalah latihan pagi yang baik! Penjelasan lengkap di bawah ini:
sumber
Haskell,
8078 byteCobalah online!
Bagaimana itu bekerja:
sumber
Python 2 , 45 byte
Cobalah online!
Spasi dalam string adalah
DEL
karakter.sumber
|u|
ditafsirkan sebagai roda jungkir balik.DEL
karakter menjadi jelas.s[:3]in'bqbqnunuwmwm'
Retina , 24 byte
Output 1 untuk truey, 0 untuk falsy.
Jawaban Port of Quack tentang dukun.
Cobalah online!
sumber
nunwmwnun
(ketika itu harus salah), itulah sebabnya saya memiliki\1*
jawaban sed saya.G`nu|mw|bp
karena semua string yang benar mengandung salah satu pasangan surat itu dan baris kedua akan memastikan bahwa semua string lainnya mengandung huruf-huruf itu juga ..ununununu
Grime , 28 byte
Cobalah online! Mencetak
1
untuk input yang benar dan0
yang salah.Penjelasan
Sintaksis Grime menyerupai ekspresi reguler, dan program Grime menentukan pola yang mungkin cocok atau tidak cocok dengan persegi panjang karakter.
Beberapa fitur Grime yang membantu mempersingkat ini:
""
ubahlah ini: elemen sintaksis diloloskan tetapi literal tidak. Tanpa tanda kutip, bagian yang menyebutkan pasangan karakter akan menjadi(\n\u|\b\p|\m\w)oT
.-
) bertindak atas hasilnya:..-#!"…"oT
sama dengan(..-"…"oT)#!
.v
rendah prioritas elemen sintaksis yang mengikutinya. Seseorang&
memiliki prioritas lebih tinggi daripada-
, tetapiv&
memiliki lebih rendah. Demikian pula,..+
diuraikan sebagai.(.+)
, tetapi..v+
setara dengan(..)+
.sumber
Python 2 , 69 byte
Cobalah online!
sumber
Pyth , 27 byte
Test Suite.
Keluaran
1
untuk kebenaran danFalse
atau0
untuk kepalsuan, karena OP diizinkan dalam obrolan.sumber
Jelly , 27 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 , 103 byte
Cobalah online!
sumber
Japt , 47 byte
Cobalah online!
sumber
Python 3 , 88 byte
len(x)%2
: string genap tidak dapat berakhir pada karakter pertamax[:2] in
: periksa salah satu dari 6 pasangan awal yang validlen(set())
: dapatkan panjang kumpulan karakter di 0,2,4 ... dan 1,3,5 ...Kembali
True
jika daftar evaluasi sama dengan [1,1,1,1], yang lainFalse
.Cobalah online!
sumber
Perl 5 , 55 + 1 (-p) = 56 byte
Cobalah online!
Mencetak versi "terbalik" dari karakter pertama untuk true, nothing for false.
sumber
PHP, 59 +1 byte
Jalankan sebagai pipa dengan
-F
.sebagian solusi regex, 101 +1 byte:
Output kosong untuk falsy. Jalankan sebagai pipa dengan
-nR
.sumber
Java 8, 57 byte
Coba di sini.
Regex sederhana untuk mencocokkan semua enam kasus. Perhatikan bahwa Java
String#matches
secara otomatis cocok dengan seluruh String, jadi tidak perlu^...$
.sumber
MATL , 25 byte
Ouput adalah vektor kolom numerik yang tidak kosong, yang truthy jika semua entri yang adalah nol, dan falsy sebaliknya. Cobalah online!
Untuk memverifikasi semua kasus uji ,
if
cabang ditambahkan di footer yang menggantikan nilai kebenaran dengan string'truthy'
, atau nilai falsy dengan string'falsy'
, dan kemudian menampilkan string.Penjelasan
sumber
Python 2 , 74 byte
Cobalah online! Ini mengambil masalah yang sangat kompetitif.
sumber
Clojure, 115 byte
Buat regex dari setiap pasangan surat dan lihat apakah inputnya cocok. Banyak cara yang lebih elegan untuk melakukan semua bagian ini, tetapi semuanya lebih bertele-tele. Begitulah hidup dengan bermain golf Clojure.
sumber
Perl 5, 68 + 1 = 69 byte
Jalankan dengan
-n
.Penjelasan:
sumber
TXR Lisp , 50 byte
Menjalankan:
f^$
adalah kombinator yang mengambil objek regex dan mengembalikan fungsi yang cocok dengan regex itu dengan cara berlabuh. (Dengan sendirinya, objek regex adalah objek yang dapat dipanggil fungsi yang mengambil string dan mencari sendiri melalui itu.)sumber
Python 3 , 66 byte
Cobalah online!
sumber
TXR :
7874 byteJalankan, dari prompt sistem. Nomor prompt adalah status penghentian: 0 = sukses, 1 = gagal:
Penjelasan:
@{x 2}
: cocokkan dua karakter, ikat kex
variabel.@(rep :gap 0)@x@(end)
: pertandingan berulang tanpa celah yang dilewati: nol atau lebih darix
, digraf yang sebelumnya cocok.@y
: sisa garis cocok, ditangkapy
.@(bind(x y)(foo bar))
: ikatx
kefoo
, y kebar
. Karenax
dany
sudah terikat, mereka harus cocokfoo
danbar
, atau ada kegagalan.foo
adalah#"nu un mw wm bq qb"
, daftar kata harfiah, gula sintaksis untuk daftar Lisp("nu" "un" ... "qb")
. Sebuahbind
pertandingan antara variabel dan daftar berarti bahwa variabel harus sesuai elemen.bar
adalah@[x 0..1]
: substring satu karakterx
dari awal. Thebind
pertandingan antaray
dan pasukan ini huruf terakhir dari garis untuk mencocokkan pertama.sumber
C ++, 268 byte
sumber
n
= 110,u
= 117,m
= 109,w
= 119,q
= 113. Jadi, menggunakan nilai ASCII atau tidak tidak masalah untuk karakter yang lebih tinggi daric
(99)JavaScript (ES6), 63 byte
Pengembalian
1
atau0
.Penjelasan
Semua string roda gila akan memiliki satu atau lebih bq , wm , atau un . Kami menguji dengan:
Jika Anda mengganti semua contoh dari dua huruf pertama dari string roda gila dengan apa-apa, Anda memiliki huruf pertama dari string tersebut. Kami menguji dengan:
Tampilkan cuplikan kode
sumber