Karena itu, Anda perlu cara yang lebih baik untuk berolahraga jika frasa adalah akronim dari sebuah kata. Anda juga berpikir akan bermanfaat untuk melihat apakah frasa dan kata yang dimaksud adalah singkatan rekursif.
Tugas Anda:
Diberi kata dan kemudian frasa yang dipisahkan oleh satu baris, output jika frasa tersebut adalah akronim dan kemudian jika itu adalah akronim rekursif . (Frasa berisi apa artinya)
- Input akan terdiri dari karakter alfabet dan spasi.
- Program Anda tidak boleh peka huruf besar-kecil.
Contoh Input / Output:
Kasus 1:
Memasukkan:
Acronyms
Acronyms can really obviously narrow your message sensors
Keluaran:
True
True
Kasus 2:
Memasukkan:
FAQ
frequently asked questions
Keluaran:
True
False
Kasus 3:
Memasukkan:
foo
bar baz
Keluaran:
False
False
Kasus 4:
Memasukkan:
GNU
GNU is not Unix
Keluaran:
False
False
Kasus 5:
Memasukkan:
Aha
A huge Aha
Keluaran:
True
True
Jawaban:
Pyth,
1918Ini mencetak hasilnya dalam format yang agak aneh, seperti:
TrueFalse
.Anda dapat mencobanya secara online atau menjalankan Test Suite .
Penjelasan:
sumber
Python 3, 89
Menyimpan banyak byte berkat SOPython.
Bagian paling rumit dari solusi ini adalah
h=tuple(a)==next(zip(*d))
.Ini membongkar daftar
d
ke dalam zip dan kemudian memanggilnext
untuk mengembalikan tupel dari elemen pertama dari setiap iterable yang diteruskanzip
yang kemudian dibandingkan dengan tuple dari setiap huruf dalam huruf a (tuple(a)
).sumber
[0]==l
untuk.startswith(l)
.CJam,
2120 byteCoba biola ini dalam juru bahasa CJam atau verifikasi semua kasus uji sekaligus.
Bagaimana itu bekerja
sumber
Haskell,
8180 byteFormat output tidak ditentukan secara ketat, jadi saya mengembalikan sepasang boolean, misalnya
p "Aha\na huge arm"
->(True,False)
.sumber
<-
) —terimakasih!Scala,
135110108 byteMenyimpan beberapa byte dengan menggunakan argumen baris perintah (terima kasih kepada J Atkin untuk petunjuknya), menempatkan booleans sebagai tupel, menggunakan
mkString
alih-alihnew String
dan mencetak bukan println.EDIT: Salah mengartikan pertanyaan, dan harus mengimplementasikan kembali solusinya
sumber
Python 3, 106 byte
Yah, setidaknya itu mengalahkan Scala;)
sumber
AppleScript,
302301297293 BytesAh, sial ya. Bahkan tidak peduli bahwa saya kalah, ini kompetitif untuk AppleScript.
Output sebagai:
Atau apa pun jawabannya.
sumber
PHP, 120 byte
Tidak menjadi case sensitif banyak berat (26 byte). Lulus semua kasus uji:
Menghasilkan dua nilai bool dalam bentuk ini:
Membaca dua argumen dari baris perintah, seperti:
Tidak disatukan
sumber
Rubi,
7774 bytesumber
Ruby, 52 byte
Contoh:
sumber
Matlab, 90 byte
Contoh (perhatikan bahwa Matlab menampilkan
true
/false
sebagai1
/0
):sumber
JavaScript ES6,
9592 byteMasukkan kedua string sebagai parameter. Output array dengan dua nilai: satu untuk setiap boolean.
sumber
.indexOf
. Kerja bagus! Mungkinr=eval(`/^${a}$/i`)
akan berfungsi sebagai penggantir
pengaturan Anda saat ini .eval
sebagaiRegExp
penyingkat objek. Terima kasih atas tipnya!GNU sed, 118 byte
Membutuhkan
-r
bendera, termasuk dalam skor sebagai +1. Perhatikan bahwa saya menggunakan\b
untuk pencocokan batas kata, meskipun saya tidak dapat menemukan ini didokumentasikan dalam GNU sed. Ini Bekerja Untuk Saya ...Diperluas:
sumber
Groovy, 91 byte
Format output adalah
[bool, bool]
. Ini mengambil input dari args baris perintah.sumber
Lua 5.3, 182 byte
sumber
R, 93 byte
Pemakaian:
sumber
awk
137 byteT="True";F="False"
untuk menyederhanakan output.NR*NF<2{a=tolower($1)}
: seta
hanya jika baris pertama hanya memiliki satu bidang.END{...}
: dengan asumsi hanya dua baris ...for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1)
: membangun akronim rekursif.print(a==b?T:F)"\n"(a==tolower($1)?T:F)
: cetak output dari kedua perbandingan,a==b
dana==tolower($1)
.Jika ada yang tahu bagaimana mengoptimalkan konstruksi akronim rekursif, jangan ragu untuk menyarankan.
sumber
SpecBAS - 144 byte
Mengkonversi input 2 x ke huruf besar menghemat karakter vs konversi huruf kecil. Sekarang dapat melakukan banyak tugas dalam satu
LET
pernyataan, yang juga membantu. DanTEXT
menyimpan satu karakterPRINT
.Gunakan 1/0 untuk menampilkan true / false (tanda kutip hanya memindahkan output ke baris berikutnya).
sumber
Perl5, 90 byte
menipu sedikit: 0 = semua salah, 1 = satu benar, 2 = keduanya benar. Saya bukan pegolf, tapi saya kesal karena hilang saat menjelajah!
sumber
JavaScript (ES6) 93
Tes menjalankan cuplikan di bawah ini di peramban apa pun yang mendukung EcmaScript 6
sumber
JavaScript (ES6),
899695 byteSial ... Kupikir aku sudah beres, tapi ternyata aku salah.
Ini mendefinisikan fungsi anonim yang mengambil input sebagai dua string, dan mengembalikan dan array dua item boolean. Item pertama dihitung dengan membandingkan string pertama di semua huruf kecil dengan karakter pertama dari setiap kata di string kedua. Item kedua dihitung hanya dengan memeriksa apakah string kedua berisi yang pertama.
Inilah solusi lain untuk item kedua; 2 byte lebih pendek, tetapi sangat sedikit browser yang mendukungnya:
sumber
GNU: Gnus nettle unicorns
ReferenceError: l is not defined
(hilangl=
sebelumnyatoLowerCase
)'GNU','GNU is not unix'
(test case 4) harus salah, salahl=
sementara mencari bug dan lupa untuk mengembalikannya. Terima kasih telah membahasnya! Kasing uji lainnya harus diperbaiki juga.Pyke (tidak diberi judul saat diposting), (tidak kompetitif), 20 byte
Anda dapat menemukan kode sumber di sini , bahasa benar-benar tidak stabil (tantangan tes pertama untuk itu) jadi jangan berharap itu berfungsi di masa depan (komit 8)
Atau 18 byte (stabil)
Coba di sini!
sumber