Diberikan karakter, output (ke layar) seluruh tata letak keyboard qwerty (dengan spasi dan baris baru) yang mengikuti karakter. Contoh-contoh membuatnya jelas.
Input 1
f
Keluaran 1
g h j k l
z x c v b n m
Input 2
q
Keluaran 2
w e r t y u i o p
a s d f g h j k l
z x c v b n m
Input 3
m
Keluaran 3
(Program berakhir tanpa hasil)
Masukan 4
l
Keluaran 4
z x c v b n m
Kode terpendek menang. (dalam byte)
PS
Baris baru ekstra, atau ruang ekstra di akhir baris diterima.
Jawaban:
CJam,
4240 byteUji di sini.
Penjelasan
sumber
e#
? Apakah itu sintaks CJam untuk komentar? Terima kasih sebelumnya.Pyth, 33 byte
Perhatikan bahwa beberapa karakter tidak dapat dicetak. Cobalah online di Pyth Compiler .
Bagaimana itu bekerja
sumber
\
setara dengand
.md5
tidak menghasilkan 5 spasi.d
adalah variabel default yang diputar melalui argumen iterable dari operator peta. DanjL\ <list>
hanyalah jalan pintas untuk operator petamj\ d<list>
.Perl, 56 byte
Menghitung shebang sebagai 3, input diambil dari stdin. Jika sebuah baris baru terkemuka bukan masalah input
p
danl
, maka/$_\n?/
bisa diganti dengan bare$_
to save 4.Contoh Penggunaan
sumber
\K
!s/.\B/$& /g
akan bekerja dengan baik. Contoh yang lebih baik .GS2 ,
3837 byteKode sumber menggunakan pengkodean CP437 . Cobalah online!
Uji coba
Bagaimana itu bekerja
sumber
C #, 112 byte
105110Hitung naik 5 byte, tetapi lebih benar! Terima kasih @ MartinBüttner !!
Tidak bermain golf
sumber
JavaScript (ES6), 60 byte
Gunakan teknik yang sama dengan jawaban lainnya. Saran diterima!
sumber
.join` `
tidak akan melakukan apa-apa dan tidak akan ada ruang dalam hasilnya.Ruby,
6357 byteMengambil karakter sebagai argumen baris perintah:
ruby keyboard.rb e
sumber
TeaScript ,
504544 byteTeaScript adalah JavaScript untuk bermain golf.
Tanpa penjelasan dan penjelasan
sumber
JavaScript ES6, 73
Jika baris baru terkemuka tidak diizinkan saat parameternya
p
ataul
, maka 83sumber
Python, 83 byte
Cobalah online
sumber
Sed, 59 karakter
(58 karakter kode + 1 opsi opsi perintah karakter.)
Contoh dijalankan:
sumber
Ruby,
8687837166Ruang ekstra setelahnya
m
adalah untuk mencegah program mogok jika inputnya adalah 'm'.Terima kasih kepada @manatwork untuk ~ 16 byte tips
sumber
ARGV
→$*
;each_char
→chars
;do
..end
→{
..}
;printf
→$><<
+%
akan menyebabkan ini:"qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}
. Lebih banyak di Tips untuk bermain golf di Ruby ..
di ekspresi reguler tidak cocok\n
secara default, lebih baik menggunakan itu untuk jarak yang:puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& ')
. Padahal panjang kode akan tetap sama.PHP, 88 byte
Membutuhkan
-F
opsi baris perintah, dihitung sebagai 3. Pengaturan default .ini diasumsikan (Anda dapat menonaktifkan .ini lokal Anda dengan-n
).Contoh Penggunaan
sumber
Prolog (SWI),
153133 byteSunting: Potong 20 byte dengan tips dari @Fatalize
Kode
Penjelasan
Contohnya
sumber
atom_codes
bagian dengan menggunakan backquotes yang membatasi kode string (sehingga Anda bisa langsung mengganti L dalam panggilanb
dengan string).b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
bukannya 2 aturan berbeda untukb
adalah 7 byte lebih pendek. Biasanya, selalu lebih pendek untuk menggabungkan semua aturan menjadi satu dengan OR;
alih-alih menulis beberapa aturan, karena Anda menghindari mengulangi nama dan parameter predikat dan Anda menghindari pemberian baris juga;)Befunge, 122 byte
Ini telah diuji di sini: Befunge-93 Interpreter .
Bagaimana itu bekerja
'q w e r t y u i o p\na s d f g h j k l\nz x c v b n m'
didorong pada tumpukan.@ZVD0FHJ:LNP^\<>,2B48X.T6R
) N didorong.Catatan
Saya memilih pengkodean sehingga string dimulai dengan
@
untuk tumpang tindih dengan program. String ini dihasilkan dengan kode python berikut:sumber
Gondong - 102 Bytes
Skrip golf:
Tidak dikumpulkan dan berkomentar:
Aturan yang memungkinkan baris baru tambahan menyelamatkan saya hampir 10 byte ...
sumber
Java - 107 byte
Tidak digabungkan dengan pembacaan kelas pembungkus dari System.in
Jika spasi pada awal baris dapat diterima, kita bisa turun ke 99 byte:
sumber
Python 2,
586763 byte ##Mengambil input sebagai string atau karakter. Pisahkan string pada input dan cetak semuanya setelah perpecahan.
(Pertama kali bermain golf, harap bersikap lembut: P)
EDIT: Tidak melihat spasi tambahan yang diperlukan antar karakter, ditambahkan sekarang
EDIT 2: Dimodifikasi menjadi fungsi lambda anonim dan menghapus split split tambahan, menghemat 4 byte
sumber
print
, tetapi sepertinya ini tidak mencetak spasi di antara setiap pasangan huruf."f"
.)lambda s:...
. Saya pikir perpecahan tidak perlu arg1
, karena karakter hanya muncul sekali. Ini menghasilkan spasi pada awal baris berikutnya, tidak yakin apakah itu diizinkan.Rubi,
59 5767 byteMenambahkan spasi antar huruf
sumber
nil
. Yang bukan masalah itu sendiri, tetapi akan menyebabkan Anda masalah saat menyelesaikan kode Anda untuk menambahkan spasi di antara huruf-huruf.JavaScript, 88 byte
(tidak perlu di ruang setelah char pertama, karena tidak pernah sampai ke output)
Memperingatkan keyboard saat Anda menelepon
s("some letter")
. Bisa juga dibuat dengandocument.write()
atauconsole.log()
, tapi hei, ini lebih lama: PDemo:
sumber
\n
alih-alih;
dalam string dan menyingkirkan penggantian.SQL (MS T-SQL), 172 byte
Tidak Disatukan:
Saya baru di sini, baru saja menemukan situs ini. Tidak tahu apakah saya sudah memposting dengan benar atau jika T-SQL diizinkan tetapi saya tahu prosedur di atas berfungsi.
sumber
O 2.2,
4846 karakterContoh dijalankan:
O, 61 karakter
Contoh dijalankan:
sumber
"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d
hanya bekerja pada penerjemah baru tetapi 51 byte.git submodule update --init
, lalumake
Japt ,
4942414038 byteJapt adalah versi singkat dari Ja vaScri pt . Penerjemah
The
?
harus menjadi tak patut ditulis Unicode Char U + 0086.Bagaimana itu bekerja
Sekarang mengalahkan CJam! :) Saran diterima!
Versi yang tidak bersaing, 12 byte
Pada 11 Januari, saya telah menambahkan fitur baru yang keren ke Japt: Jika program berisi koma terkemuka, variabel
ABCDEFGHIJL
didefinisikan ulang ke berbagai nilai.D
diatur ke"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
, jadi;Dv
cukup untuk mengganti string di sini.sumber
Gema, 56 karakter
Contoh dijalankan:
sumber
8086 kode mesin + DOS, 61 byte
Hexdump (dengan tampilan ASCII di sebelah kanan):
Kode sumber assembly (dapat dirakit dengan tasm):
Dua hal menyenangkan di sini:
qwerty
string adalah0x011e
. Byte atasnya adalah 1, yang merupakan nomor fungsi DOS untuk input karakter. Ini menghemat 1 byte dalam kode.AND
dengan0x20
, mereka semua berubah menjadi ruang, yang kemudian dicetak. Jika char sebelumnya adalah byte end-of-line, itu akan berubah menjadi 0, dan tidak ada ruang yang dihasilkan. Ini digunakan untuk menghindari urutan yang tidak masuk akal0d 20 0a 20
di ujung garis.Satu hal yang hampir menyenangkan:
Saya mencoba mencari input char mulai dari alamat 0 (yang mengurangi ukuran program sebesar 2 byte), bukan tempat yang biasa (mulai dari string). Ini hampir berhasil; Namun, gagal untuk input
t
, karena kode itu sendiri berisi bytet
(sebagai bagian dari pengkodean lompatan bersyarat). Jadi untukt
, itu akan menghasilkan beberapa byte sampah:sumber
𝔼𝕊𝕄𝕚𝕟, 32 karakter / 79 byte
Try it here (Firefox only).
Setidaknya aku menang dalam hitungan char ... (Byte count adalah cerita yang berbeda.)
Oh ya, baru menyadari bahwa saya menerapkan cara pintas indeks (
⎖1
bukan[1]
) kembali. Saya konyol!sumber
C ++,
129, 11297 byteTidak Disatukan:
sumber
puts
alih-alihstd::cout<<
#include
untukputs
, tapi jelas aku tidak!strstr
apa-apa.<stdio.h>
untukstrstr
.Batch, 206 + 2 = 208 byte
Karena ini menggunakan ekspansi yang tertunda Anda harus memohonnya
CMD /V /C keyboard.cmd <letter>
, jadi tambahkan12 untuk/V
sakelar.sumber
cmd
mau menerimanya/VC
, seperti yang dilakukan alat POSIX. Tapi seperti yang saya tahu/V
membutuhkannya sendiri/
, yang juga dihitung.Python, 109 byte
Saya tahu ini agak besar tetapi semua yang saya tahu harus saya lakukan sekarang!
sumber
kb()
pada akhirnya; mendefinisikan fungsi sudah cukup. Juga, 1 ruang lekukan sudah cukup. Setelah melakukan perubahan ini, saya mendapatkan 108 byte, menggunakan situs ini .Bash, 80 byte
Cobalah sendiri, ganti $ 1 dengan karakter yang diinginkan atau buat skrip #! / Bin / bash.
Berikut beberapa contoh dari cygwin:
Ini bukan yang terpendek, tapi saya masih bangga akan hal itu!
sumber