Tiga baris keyboard qwerty adalah qwertyuiop
, asdfghjkl
dan zxcvbnm
. Tugas Anda adalah menemukan kata terpanjang yang dapat diketik hanya menggunakan satu baris keyboard, dari daftar kata yang diberikan.
Masukan sampel 1
artist
home
gas
writer
geology
marine
twerp
Keluaran
writer
(Dari kata-kata yang diberikan, hanya gas
, writer
dan twerp
dapat ditulis menggunakan satu baris, dan writer
yang terpanjang)
Kata-kata itu mungkin bukan kata-kata aktual (jadi jangan menganggap baris ketiga tidak valid). Namun, Anda dapat mengasumsikan bahwa akan selalu ada satu jawaban (tidak lebih, tidak kurang).
Masukan sampel 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Keluaran
bxnzmmx
Tanda baca dan spasi putih tambahan dapat diberikan dalam input (sesuai persyaratan bahasa). Namun, tidak ada output tambahan yang harus diberikan. Input dan output dalam huruf kecil. Kode terpendek menang.
Jawaban:
Python 2, 84 byte
Menemukan
max
input, membandingkan dengan lebih sedikit baris keyboard yang terbentang, kemudian bertambah panjang. Nilai baris keyboard diekstraksi oleh"asdfghjklzxcvbnm".find(c)/9
, yang membawa baris tengah ke0
, baris bawah ke1
, dan baris atas, yang dikecualikan, untuk-1
, karenafind
memberikan-1
nilai yang hilang.Upaya lain:
sumber
/
karakter lebih banyak untuk Python 3;)9
danfor
...E
ataue
, Anda hampir selalu dapat menghapus spasi putih antara angka dan nama variabel / kata kunci4if 0else 2
valid pada 2.7.11 dan 3.5.1 (dan mungkin telah berlaku untuk beberapa versi sebelumnya)Japt,
3230 byteUji secara online! Input adalah larik string.
Bagaimana itu bekerja
sumber
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
huruf yang sudah ditentukan sebelumnya? Dimainkan dengan baik :-)D
diatur keQWERTYUIOP\nASDFGHJKL\nZXCVBNM
, bahkan halaman yang Anda rujuk tampaknya menyatakanVariables <...> D 13
;
pada awal program mengatur ulang variabelA-L
ke berbagai nilai.D
diatur ke string keyboard. Anda dapat menemukan info lebih lanjut di sini .Python 2.5+ dan 3, 93 byte
Harus menguji berapa pukulan untuk pendekatan ini; ini menggunakan fakta yang
a.strip(b)
menghasilkan string kosong jikaa
hanya terdiri dari karakter yang terjadi pada b.Fungsi mengambil daftar string dan mengembalikan string.
sumber
key
variabelnya ada di sana? Saya pikir Anda bisa menghapusnya.key
argumenmax
fungsi adalah kata kunci saja.Retina , 73 byte
Cobalah online!
Kesimpulan: Retina membutuhkan tahap penyortiran.
Penjelasan
Ini adalah tahap grep: ia hanya menyimpan garis yang cocok dengan regex. Yaitu mereka yang dibentuk secara eksklusif dari salah satu kelas karakter tersebut.
Sekarang kita hanya perlu menemukan yang terbesar dari string yang tersisa. Kami melakukan ini dengan mencocokkan semua kata yang setidaknya sepanjang dari semua kata setelahnya. Ini
1
adalah tambahan baru untuk Retina (dirilis dua hari lalu), yang membatasi tahap pertandingan ini hanya untuk mempertimbangkan pertandingan pertama yang seperti itu. Dan!
menginstruksikan Retina untuk mencetak pertandingan (bukannya menghitungnya).sumber
(?<a-b>...)
sintaksis yang jarang dibutuhkan dalam kode golf.o-r
, luar biasa.Java,
154142 atau142130 byteKarena, Anda tahu, Jawa.
C #, untuk perbandingan .
146 byte jika input harus berupa string tunggal dengan nilai yang dipisahkan oleh
\n
:134 byte jika saya dapat menganggap input sebagai String [] sebagai gantinya:
Sedikit tidak berbulu:
Lambda kedua adalah a
Function<String[],String>
.sumber
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 karakter)import java.util.*;
dalam jumlah byte, artinya mengambil daftar adalah -16 byte dengan mengambil Daftar tetapi +19 untuk mengimpor Daftar. NAMUN, Anda menangkap di sana menggunakanmax
bukannyareduce
untuk mendapatkan -7 byte.Jelly,
4034 byteCobalah online!
Bagaimana itu bekerja
sumber
Python 3, 98
Disimpan 5 byte berkat Kevin.
Disimpan 3 byte berkat PM 2Ring.
Disimpan 3 byte berkat Antti Haapala.
Brute memaksanya saat ini. Saya memfilter kata-kata ke hanya yang terkandung oleh satu baris, dan kemudian mengurutkan untuk panjang string maksimal.
Kasus uji:
sumber
PowerShell v2 +, 72 byte
Mengambil input melalui argumen baris perintah
$args
, lalu menggunakan-match
operator dengan regex untuk memilih hanya kata-kata yang secara eksklusif dibuat dari satu baris keyboard. Kami menyalurkan hasil tersebut keSort-Object
properti tersebutLength
. Kita bisa melakukan ini karena string di PowerShell adalah semuaSystem.String
tipe, yang termasuk.Length
sebagai properti yang dapat diurutkan. Ini memilah string menjadi urutan naik dengan panjang, jadi kami mengambil yang terakhir[-1]
, meninggalkannya di pipa, dan output tersirat.Contoh
sumber
Pyth,
4535 byteTerima kasih kepada @FryAmThe Eggman karena telah menyelamatkan saya beberapa byte!
Coba di sini!
Mengambil input sebagai daftar kata.
Penjelasan
sumber
Ruby,
888269Jika saya tidak diizinkan untuk mengambil daftar string dan harus mengambil string multiline, tambahkan +12 ke skor dan tambahkan
.split('\n')
tepat sebelum.grep
panggilan.Terima kasih CatsAreFluffy untuk mengajari saya tentang lambdas yang stabby di Ruby, dan optimisasi lebih lanjut dari manatwork
sumber
.split('\n')
sebelum.select
, kan? Dan mengapa tidak ada lambdas yang stabby?.select
blok kode adalah mencocokkannya dengan ekspresi reguler,.grep
lebih cocok; tidak perlu menempatkan tanda kurung di sekitar parameter metode terakhir dalam rantai panggilan;.length
memiliki alias pendek,.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 byte)
Pesaing untuk bahasa golf terburuk, untuk alasan yang jelas. Menggunakan lokal "saya" dengan qwertz alih-alih qwerty tetapi berfungsi dengan baik jika tidak.
Program lengkap tanpa tempat:
Hanya keluaran tanpa Tempat:
Hanya keluaran (asli):
sumber
bash
, 105 byteDan berbagai utilitas lainnya, tentu saja.
sumber
awk
kode dapat ditulis lebih pendek$0=length"\t"$0
.awk,
928481 bytedisimpan 3 byte berkat saran @ Wolfgang
sumber
[wetyuio-r]
sebagai gantinya, dan juga dua lagi dengan melakukan/^(expr|expr|expr)$/
alih - alih `/ ^ expr $ | ^ expr $ | ^ expr $ /gawk
danmawk
bahagia tanpa mereka.MATL , 54 byte
Ini bekerja dengan versi saat ini (14.0.0) dari bahasa / kompiler.
Format input adalah (contoh pertama)
atau (contoh kedua)
Cobalah online!
Penjelasan
sumber
Perl, 81 byte
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
Simbol untuk menghitung huruf cukup tinggi.
sumber
Groovy, 65 karakter
Contoh dijalankan:
Perhatikan bahwa ekspresi reguler yang digunakan oleh
.grep()
tidak memerlukan penahan, memungkinkan untuk mengesampingkan pengelompokan juga:sumber