Tugas ini sederhana: Tulis program atau fungsi yang menampilkan daftar semua not musik (menggunakan nama not Bahasa Inggris) dari A ♭ ke G♯.
Semua catatan tanpa nama yang terdiri dari satu huruf (yaitu catatan hitam pada keyboard musikal) harus memiliki nama mereka dicetak dua kali, sekali sebagai tajam dari catatan, sekali sebagai flat dari satu. Catatan tajam atau datar yang dapat dijelaskan dengan satu huruf, seperti B♯ (C) atau F ♭ (E) tidak boleh ditampilkan.
Ini adalah contoh dari output:
Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#
Spesifikasi
Program atau fungsi tidak boleh mengambil input apa pun.
Catatan dapat dicetak dalam urutan apa pun, dan dalam daftar keluaran apa pun yang diizinkan oleh aturan I / O standar kami
Simbol Unicode yang tajam dan datar (♯ / ♭) dapat diganti dengan
b
dan#
Seperti biasa, lubang standar dilarang.
Karena ini adalah kode-golf , program terkecil, dalam byte, menang.
sumber
"C "
bukan"C"
?Jawaban:
Malbolge ,
482370353 byteR1: Penghilangan koma peralihan (karena tidak diharuskan oleh tantangan)
R2: Memotong beberapa byte
Cobalah online!
sumber
Perakitan CP-1610 ( Intellivision ), 31 DECLEs 1 = 39 byte
Rutin mengambil pointer output di R4 dan menulis catatan di sana, dipisahkan dengan spasi. Dalam kode contoh, kami menulis langsung ke layar.
Hex dump (hanya rutin)
Sumber lengkap
Keluaran
tangkapan layar dari jzIntv
1. Sebuah opcode CP-1610 dikodekan dengan nilai 10-bit, yang dikenal sebagai 'DECLE'. Rutin ini sepanjang 31 DECLEs, mulai dari $ 4820 dan berakhir pada $ 483E (termasuk).
sumber
Python 3 , 50 byte
Cobalah online!
Python 2: 48 byte
Kode ini dapat disesuaikan untuk menyertakan B # dan Cb, dengan biaya tanpa byte tambahan. Ini dapat dicapai dengan mengganti
5
dengan6
.Selain itu, ini (akhirnya) lebih pendek dari sekadar mengeluarkan string polos:
Python 3 , 51 byte
Cobalah online!
Python 2: 50 byte
sumber
05AB1E ,
161513 byte-2 byte terima kasih kepada @maxb .
Cobalah online.
Output sebagai daftar, di mana catatan char tunggal dengan spasi tambahan.
Penjelasan:
Lihat ini 05AB1E ujung tambang (bagian Cara kompres bilangan bulat besar? ) Untuk memahami mengapa
Ž7×
adalah1999
.Ž7×
bisa juga₄·<
(1000, dobel, kurangi 1) untuk byte-count yang sama.sumber
7£
benar - benar perlu? Tampaknya berjalan baik tanpa itu.Jelly , 18? * 20 byte
Tautan monadik mengembalikan daftar daftar karakter.
* Jika daftar campuran (a) daftar karakter dan (b) karakter dapat diterima hapus jejak
W€
untuk 18.Cobalah online!
Bagaimana?
sumber
bytes
di header.Retina 0.8.2 , 33 byte
Cobalah online! Penjelasan:
Masukkan nama catatan dasar.
Perluas setiap not untuk menyertakan versi datar dan tajam.
Hapus
B#
,E#
dan juga catatan yang mengikuti mereka (Cb
danEb
).sumber
Perl 6 , 41 byte
Cobalah online!
Produk silang sederhana dari catatan dan benda tajam / flat, diikuti dengan menghapus catatan tambahan yang tidak valid. Ini adalah blok kode anonim yang menghasilkan string:
sumber
R , 50 byte
Cobalah online!
Jawaban yang membosankan.
R , 60 byte
Cobalah online!
sumber
Cb
danE#
.Arang , 21 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Japt ,
2322 byteCobalah
sumber
<6
tetapi<5
dalam penjelasan.dzaima / APL REPL,
382825 byteCobalah online!
sumber
⎕←
.{}
LOL.Stax ,
1715 byteJalankan dan debug itu
Program bonus: cetak simbol mewah
sumber
Ruby , 43 byte
Cobalah online!
Dengan rentang
0..20
ini akan mencetak array yang berisi semua flat, semua alami dan semua benda tajam. Yang tidak diinginkanFb Cb E# B#
dihilangkan dengan menggunakan rentang2..18
Catatan dicetak dicetak sesuai dengan https://en.wikipedia.org/wiki/Circle_of_fifths , atau dengan kata lain naik dengan 7 semitones (rasio frekuensi hampir persis 1,5) setiap kali.
Ini mengarah pada urutan surat yang diberikan, di mana setiap nada adalah lima derajat inklusif (dikenal sebagai "kelima") di atas yang sebelumnya. Sebagai contoh
F->C
adalahFGABC
sumber
brainfuck , 106 byte
Cobalah online!
Output setiap not dipisahkan oleh carriage return.
sumber
Zsh , 36 byte
Solusi yang lebih buruk, tetapi menghemat dua karakter.
(F)
bergabung dengan daftar pada baris baru, dan//[BE]#???
menghapus bagian-bagian dari string yang kita butuhkan.Cobalah online!
Zsh , 38 byte
Saya selalu menikmatinya ketika Zsh mengalahkan Perl (mudah-mudahan saya tidak berbicara terlalu cepat ...).
Cobalah online!
sumber
Jelly , 21 byte
Cobalah online!
sumber
Brachylog , 36 byte
Cobalah online!
Saat ini saya sedang dalam proses brute-forcing memaksa indeks powerset yang akan membiarkan saya menyingkirkan
⟨h₅ct₁₄⟩⟨h₁₂ct₅⟩
(dan dengan ekstensi↺
, karena output tidak perlu berada dalam urutan yang sama dengan contoh output), tetapi butuh cukup sementara ... mungkin saya harus menyisihkan satu menit untuk benar-benar mengetahui urutan sublists yang dihasilkan, dan menghitung indeks dengan cara itu ...sumber
Kanvas , 23 byte
Coba di sini!
22 byte dengan baris baru ekstra dalam output
sumber
PHP , 65 byte
Membuat daftar dengan satu lingkaran. Item dipisahkan oleh
_
dengan trailing separator.Cobalah online!
PHP , 43 byte
PHP mengeluarkan apa saja, bila tidak di dalam,
<?php
dan diberi?>
tag.Cobalah online!
sumber
Pyth ,
2321 byteCobalah online!
Sunting: Tulis ulang sebagian untuk menghemat 2 byte, versi sebelumnya:
s%2c*<r1G7"b #"xLG"fhoq
Cobalah online!sumber
Commodore C64 / TheC64 Mini (mungkin varian BASIC 8-bit Commodore lainnya) - 52 byte BASIC tokenized
Menekan
CTRL
tombol plusN
pada keyboard C64 masuk ke 'mode bisnis' pada karakter yang ditetapkan untuk karakter huruf besar / kecil. Kami dapat mencetak ini dalam string dalam satu byte / token; dan karena kami memiliki 40 kolom, ruang dari G ke G # tidak diperlukan.Kita tidak perlu menutup string dalam kasus ini karena ini bukan garis multi-pernyataan dengan
:
pemisah.Bagaimana ini terlihat pada layar Commodore C64 (dan yang kompatibel) ditunjukkan di bawah ini.
sumber
Tong , 43 byte
Tali, dikompresi.
TIO
sumber
APL (Dyalog Unicode) , 45 byte
Cobalah online!
⎕R
Operasi eplace sederhana , mengawali,
setiap elemen dalam string yang cocok dengan setiap huruf dalam⎕A
lfabet, lalu menjatuhkan 2 karakter pertama, yaitu,
.sumber
Brainfuck, 214 Bytes
Cobalah secara Online!
sumber
JavaScript (Node.js) , 84 byte
Cobalah online!
Hanya mengembalikan string (seperti yang ditunjukkan di bawah) akan lebih pendek sebesar 36 byte, tetapi di mana kesenangannya?
sumber
brainfuck ,
255115 byteCobalah online!
sumber
All notes without a name consisting of a single letter (i.e. black notes on a musical keyboard) should have their name printed twice, once as the sharp of a note, once as the flat of one. Sharp or flat notes that can be described with a single letter, like B♯ (C) or F♭ (E) should not be outputted.
Itu tampak cukup jelas bagi saya, dan saya melihat tidak ada riwayat edit pada OP di layar saya.Bash 5 , 42 byte
Keluaran:
sumber
Perl 5 ,
4741 byteCobalah online!
sumber
T-SQL, 124 byte
Jeda baris hanya untuk tujuan tampilan.
Lebih lama tetapi jauh lebih menarik daripada versi sepele (50 byte) :
sumber
Z80Golf ,
3129 byteCobalah online!
Penjelasan :
Z80Golf hanyalah mesin fantasi sederhana berdasarkan Z80 8-bit CPU. Program dimuat di lokasi memori
0x0000
, dan sisa memori diisi dengan nol. Output dilakukan dengan memanggil0x8000
, yang akan menampilkan nilai register A sebagai karakter.Program dimulai dengan data yang akan diproses, totalnya 6 byte. Setiap pasangan byte menentukan akhiran catatan, dan bitmask yang mengontrol huruf mana yang dapat dikombinasikan dengan catatan ini. Untuk menyimpan byte, karakter suffix terbalik (
xor 0xff
) - ini memungkinkan data dieksekusi sebagai instruksi dengan sedikit efek samping, sehingga memungkinkan untuk menghapus lompatan yang melewatkan data ini:Beginilah cara CPU menerjemahkan ini:
Data ini dibaca dua byte sekaligus ke dalam pasangan register DE. Penunjuk tumpukan digunakan untuk menunjuk ke elemen berikutnya. Ini dimulai pada 0, dan karena Z80 menggunakan tumpukan penuh, turun, setiap pops akan membaca pasangan data berikutnya - semua operasi tumpukan adalah 16-bit.
Loop luar diimplementasikan dengan penghitung pengurangan di register B, yang mana Z80 menyediakan dukungan khusus dalam bentuk
djnz
instruksi:Surat saat ini disimpan di register A. Karena kenaikan cocok pada awal loop, kami memuat satu kurang dari nilai awal aktual
A
:sumber