Tombol piano memiliki lebar 3 karakter, dan tinggi 7 karakter. Namun, jika setiap kunci memiliki 3 karakter lebar, tidak akan ada cukup ruang untuk kunci hitam. Itu sebabnya beberapa kunci putih dipotong bagiannya. Ada 3 jenis kunci putih.
Kunci dengan setengah kanan yang hilang (R):
____
| |
| |
| |
| |
| |
| |
|___|
Kunci dengan setengah kiri hilang (L):
____
| |
| |
| |
| |
| |
| |
|___|
Dan kunci dengan bagian kiri dan kanan hilang (M):
___
| |
| |
| |
| |
| |
| |
|___|
Pada keyboard asli, polanya seperti ini:
RMLRMML, RMLRMML, RMLRMML...
dan ulangi total 88 kunci. Sekarang Anda tidak dapat melihatnya ketika tombol ditampilkan secara individual, tetapi ketika Anda mendorongnya bersama, Anda dapat melihat kunci hitam.
_________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Tugas Anda
Dengan bilangan bulat positif N , cetak ASCII-art dari piano ini dengan tombol N putih. Anda harus dapat menangani N dari 1 hingga 52 inklusif (karena piano 88-key asli memiliki 52 kunci putih). Berikut ini adalah hasil tes dari 1 hingga 8, dan setelah itu polanya meningkat dengan cara yang serupa.
1
____
| |
| |
| |
| |
| |
| |
|___|
2
________
| | | |
| | | |
| | | |
| | | |
| | |
| | |
|___|___|
3
_____________
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | |
| | | |
|___|___|___|
4
________________
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | |
| | | | |
|___|___|___|___|
5
____________________
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
| | | | | |
| | | | | |
|___|___|___|___|___|
6
________________________
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | | | | | |
| | | | | | |
| | | | | | |
|___|___|___|___|___|___|
7
_____________________________
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | |
| | | | | | | |
|___|___|___|___|___|___|___|
8
________________________________
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | |
| | | | | | | | |
|___|___|___|___|___|___|___|___|
Dan yang tak kalah pentingnya, berikut ini adalah 52 output kunci penuh:
_________________________________________________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Celah standar dilarang, dan jawaban terpendek dalam byte menang!
Jawaban:
Pyth,
686563 byteCobalah online!
Suite uji.
Dalam versi ini, saya hanya mengganti tugas (J dan K) di dalam untuk menghemat 2 byte. Karena itu, baca versi di bawah ini.
Versi 65-byte sebelumnya dengan penjelasan
Cobalah online!
Sihir hitam
sumber
JavaScript (ES6),
155149147 byteDimana
\n
mewakili karakter baris baru literal. Memanfaatkan fakta bahwa semua garis setelah mulai pertama dengan|
karakter. Penjelasan:Sunting: Disimpan 2 byte dengan memperbaiki kesalahan saya membaca spesifikasi pada ketinggian tombol.
sumber
Ruby, 119 byte
Tidak digabungkan dalam program uji
sumber
> <>,
188182 byteJumlah tombol putih untuk ditampilkan harus ada pada tumpukan saat program dimulai.
Sunting : Saya berhasil mencukur beberapa byte dengan menggabungkan output untuk baris 5/6 dan 7. Versi sebelumnya:
sumber
PHP, 238 byte
Seperti biasa, tambahkan dulu kode
<?php
, masukkan ke dalam file PHP (beri namakeyboard.php
) dan jalankan dengan menggunakan:Dua byte lagi dapat disimpan di PHP7 dengan menekan inisialisasi
$n
dan$s
ke dalam penggunaan pertama mereka:Kode ungolfed, test suite dan barang lainnya dapat ditemukan di github .
sumber
Python
32,191185180182171145144133132 byteIni bisa menggunakan beberapa golf tetapi saya sudah terlalu mengutak-atik kode sehingga saya mungkin tidak melihat di mana tempat golf. Saran bermain golf dipersilakan.
Sunting: Salah membaca spesifikasi pada ketinggian tombol. bug ini telah diperbaiki.
Sunting: Gagasan 12 kunci Neil yang dipinjam dari jawaban Javascript-nya, menghapus beberapa tanda kurung, dan beralih ke Python 2 untuk menyimpan 11 byte.
Sunting: Banyak perubahan untuk menurunkan fungsi ke satu
for
loop.Sunting: Sekarang program alih-alih fungsi.
Sunting: Sekarang menggunakan
print"\n|".join()
seperti yang disarankan oleh Neil untuk menghemat 11 byte. Mengubah program kembali menjadi fungsi untuk menghemat satu byte.sumber
"\n|".join
trik saya .print
dan"\n|"
!C # 1683 byte
Jadi .... setelah melihat jawaban Neil di atas ini cukup memalukan, tetapi saya tetap akan mempostingnya karena butuh beberapa saat (berkah). Saya menggunakan C # untuk membuat milik saya. Di dalam kelas "Fncs", saya membuat array dari urutan kunci. Kemudian, saya membuat fungsi yang memungkinkan pengguna untuk mendapatkan indeks yang sesuai untuk array ini berdasarkan integer yang diberikan. Untuk mengedit setiap baris, saya membuat kelas "PianoKeyboard" yang berisi kamus yang menyimpan banyak string yang mewakili masing-masing baris. Akhirnya, saya membuat fungsi "DrawKey" yang menambahkan teks yang sesuai ke masing-masing baris dan fungsi "GetKeys" yang mengembalikan nilai string keseluruhan.
sumber