Ada 88 tombol pada piano standar dan 95 karakter ascii yang dapat dicetak (kode hex 20 hingga 7E):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
('karakter' mengacu pada karakter ASCII yang dapat dicetak mulai dari sini)
Dalam JSFiddle ini saya telah mengambil keuntungan dari itu dan membuat sintaks sederhana yang menghasilkan nada piano menggunakan AudioSynth . (Kalau ada yang bisa mengarahkan saya ke set nada piano nyata yang dapat dihubungkan, saya akan berterima kasih.)
Setiap karakter dalam string input selain () 01+-
sesuai dengan satu kunci piano:
CHARACTER: ! " # $ % & ' * , . / 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
KEY NUMBER: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
NOTE: A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C C# D D# E F F# G G# A A# B C
OCTAVE: 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 8
Jadi RPNPRRR
mainkan 7 catatan pertama Mary Had a Little Lamb menggunakan parameter pengaturan waktu yang dapat Anda lihat di JSFiddle.
Spasi ( ) merepresentasikan istirahat musik yang berlangsung selama satu interval nada. Jadi
RPNPRRR PPP RUU
mainkan 13 catatan pertama Mary Had a Little Lamb dengan bertumpu di tempat yang seharusnya.
Jika ada karakter selain ()01
diawali oleh urutan 0
's dan 1
' s (regex [01]+
), urutan itu dibaca sebagai angka biner b , dan karakter tersebut diganti dengan b salinan itu sendiri. Jadi 101A11 10+1-0B01C
menjadi AAAAA ++-C
karena 101
= 5, 11
= 3, dll. (Urutan 0
's dan 1
' di akhir string tidak berpengaruh.)
Tanda kurung yang cocok ( ()
) melayani dua tujuan:
- Jika kontennya tidak diakhiri dengan urutan
0
's dan1
' s, semua catatan dimainkan bersamaan dengan akor (yang sebaliknya tidak berbeda dengan catatan). Begitu(NQU)
juga dengan akord C minor pada oktaf 4.
Jika duplikat catatan hadir, suaranya juga digandakan. Begitu(NN)
dan(NNN)
terdengar berbeda. - Jika konten mereka tidak berakhir dengan urutan
0
's dan1
' s, urutan yang dibaca sebagai angka biner b , dan tanda kurung dan konten mereka diganti dengan b salinan konten. Jadi(NQU11)
menjadi 9 catatan individu:NQUNQUNQU
.
Rincian Kurung:
- Menarang kurung yang direplikasi (tujuan 2) baik-baik saja:
(N(QU10)11)
→(NQUQU11)
→NQUQUNQUQUNQUQU
. - Bersarang kurung non-replikasi (tujuan 1) baik-baik saja tetapi tidak memiliki efek:
(A((+)C))
sama dengan(A+C)
. - Anda juga dapat menggabungkan keduanya:
((N(QU10))11)
→(NQUQU)(NQUQU)(NQUQU)
. - Urutan
0
's dan1
' sebelum tanda kurung non-replikasi mengulanginya dengan cara yang sama setiap karakter diulang. Jadi10(NQU)
menjadi(NQU)(NQU)
. - Urutan
0
's dan1
' sebelum mereplikasi kurung tidak berpengaruh. (
harus selalu memiliki kecocokan)
, tetapi tidak sebaliknya: misalnyaN)
valid.
Plus ( +
) dan minus ( -
) masing-masing meningkatkan dan mengurangi durasi catatan atau interval waktu antara catatan, tergantung pada konteksnya:
- Ketika di dalam tanda kurung non-replikasi, mereka segera menambah atau mengurangi variabel durasi catatan dengan beberapa jumlah milidetik yang telah ditentukan (lihat JSFiddle ). Jadi
(++)N
akan bermainN
dalam durasi yang lebih lama dari biasanya. - Ketika di luar tanda kurung non-replikasi, mereka menambah atau mengurangi interval antara awal catatan berikutnya dan catatan setelah itu (dan setiap interval berikutnya) dengan beberapa jumlah milidetik yang telah ditentukan. Jadi dalam
++NP
interval antaraN
danP
lebih lama dari biasanya.
Durasi catatan dan interval waktu di antara mereka tidak bisa turun di bawah 0.
Tantangan
Saya sengaja memilih () 01+-
menjadi 7 karakter khusus karena mereka dapat ditempatkan secara tidak bersalah dalam banyak konteks dalam banyak bahasa pemrograman.
Tugas Anda adalah menulis quine dalam 512 byte atau kurang yang menghasilkan nada suara terbaik ketika kode itu sendiri digunakan sebagai string input di JSFiddle .
Anda dapat memilih nilai awal apa pun (bilangan bulat non-negatif) untuk parameter 4 interval / durasi, tetapi nada Anda tidak boleh bertahan lebih dari 10 menit. Anda juga harus memberi tahu kami jika nada Anda terdengar terbaik pada instrumen tertentu.
Aturan
- Hanya tab, baris baru, dan cetak-ASCII yang diizinkan dalam kode Anda. Semua ASCII yang tidak dapat dicetak diabaikan oleh pencipta lagu.
- Output mungkin pergi ke file atau stdout atau alternatif terdekat (misalnya peringatan JS). Tidak ada input.
- Tidak membaca kode sumber. Itu pasti quine yang sebenarnya.
- Penghapusan 3 karakter sumber yang berdekatan harus membuat program tidak lagi berfungsi sebagai quine. Ini untuk memastikan orang tidak menulis lagu yang bagus dalam sebuah string kemudian memiliki bagian quine kecil untuk menghasilkannya.
- Jadi, jika program anda adalah
MYCODE
kemudianMYC
,MYE
,MDE
, danODE
semua harus tidak quines (mereka mungkin kesalahan atau output sesuatu yang lain).
- Jadi, jika program anda adalah
Ini adalah kontes popularitas, jawaban dengan suara terbanyak menang.
Pembaruan: Aturan terakhir yang santai.
sumber
Jawaban:
C
Saya memutuskan bahwa saya menyukai suara gemuruh rendah yang dihasilkan oleh string
/**/
yang tidak-jadi-kebetulan cara untuk membuka dan menutup komentar dalam C. Satu-satunya hal yang menarik di sini adalah bahwa34
untuk"
digantikan oleh35-1
(Berakhir dengan1
sengaja) untuk hindari akord yang mengerikan. Saya juga mencoba membuat akhirannya terdengar dramatis. Saya benar-benar melakukannya. Saya bermaksud mengedit ini nanti untuk membuatnya terdengar sedikit lebih baik.Untuk pemahaman saya tentang aturan, bagian yang dikomentari masih melewati aturan terakhir karena penghapusannya menghasilkan quine yang gagal.
sumber
J
Ya, saya pikir Anda bisa menebak bagaimana ini akan berjalan.
Sulit untuk melakukan sesuatu yang keren dalam J tanpa parens, dan karena Anda jarang bisa mengakhirinya dengan 0 dan 1, kebanyakan hal terdengar seperti seseorang yang duduk di bagian atas dan bawah keyboard pada saat yang bersamaan. Saya mencoba yang terbaik, saya ingin Anda tahu.
Inilah garis dasar yang funky untuk piano, saya pikir. Saya benar-benar tidak tahu apa-apa tentang komposisi, saya hanya mengambil quine dan memutar-mutar jumlahnya sedikit.
Dan, hanya untuk bersenang-senang, mainkan ini sebagai EDM. Saya menyebutnya Japhex Twin .
Anda dapat mengkonfirmasi quineiness potongan halus ini kode di tryj.tk .
sumber
Beton Musique dengan Python
Saya tidak punya banyak waktu hari ini, tetapi saya ingin mendapatkan jawaban. Genre adalah alasan untuk tidak terdengar seperti apa pun. Mungkin efek suara di video game?
sumber
C
Dipatahkan dengan jeda baris hanya untuk tujuan presentasi; ini hanya quine (dan hanya memenuhi persyaratan panjang) jika baris baru dihapus.
Deklarasi printf diperlukan untuk dikompilasi
(printf)
./*(*/
dan/*)*/
digunakan untuk mencocokkan tanda kurung dalam kode, sementara campuran tanda kurung dan operator koma digunakan untuk membentuk akor dariprintf
parameter.Sunting: Dipersingkat agar sesuai dengan persyaratan ukuran serta membuat karya sedikit lebih cepat.
Ini terdengar terbaik di piano.
sumber
Skema
Ini mungkin tidak terlalu melodi (sebenarnya terdengar seperti seseorang menjatuhkan babi mati ke dalam baby-grand), tetapi setidaknya itu adalah karya musik pendek. Akan sulit untuk membuat sesuatu yang lebih lama atau kurang mati-terbang-seperti babi dalam skema.
sumber
Für Golfscript
Ini memuaskan surat aturan penghapusan no-tiga-berturut-turut, meskipun bukan maksudnya, saya kumpulkan.
sumber
Cobra / Batch
Secara teknis bukan quine di Batch (ia membaca sumbernya sendiri). Namun itu adalah quine di Cobra.
Itu terdengar paling baik dengan mode piano, agak seperti musik tingkat hantu dari video game era Super Mario World.
sumber
Pyth
Paling baik dimainkan dengan pengaturan keempat (jumlah + dan - ubah interval) sekitar 20, sisanya pada pengaturan default. Terdengar terbaik di piano.
sumber
Haskell
(Saya tidak yakin apakah nama variabel itu melanggar aturan terakhir.)
Terbaik dimainkan di piano dengan durasi not 1000 milidetik dan interval not 250 milidetik, dengan nilai + dan - standar.
sumber