Kotak terlihat simetris, dan begitu juga kode yang diperlukan.
Tujuan : Menulis program yang kode sumbernya adalah bujur sangkar solid (N baris dengan huruf N yang dapat dicetak, karakter spasi putih setiap baris) dan mencetak kuadrat dengan ukuran yang sama. Suatu program (atau keluaran) dengan lebar dan tinggi yang tidak konsisten tidak valid. (mis. 6x5)
Contoh (HQ9 +)
QAA
AAA
AAA
Persyaratan
- Sumber dan output harus mengandung N baris, dan N karakter yang dapat dicetak setiap baris, diikuti oleh 1 linefeed. Program Anda tidak boleh mengandung atau menampilkan karakter kontrol apa pun (kecuali LF atau CR-LF) atau spasi putih (Spasi, Tab, VTab)
- Celah standar membosankan, jangan gunakan itu.
- Suatu program (dan keluaran) dengan hanya satu karakter pada dasarnya tidak ada. N setidaknya harus dua.
- Konten output tidak masalah, asalkan sesuai dengan aturan 1
- Aturan khusus : Do tidak menggunakan komentar atau kode yang tidak tidak mempengaruhi output untuk "mengisi" kode Anda.
Untuk lebih jelasnya, Anda diizinkan untuk menggunakani++;i++;... i++;
alih-alihi+=10;
, tetapi Anda tidak harus mendefinisikan variabelstring s="placeholder"
tetapi tidak pernah menggunakannya nanti. Sangat mudah untuk mengatasi aturan ini jadi jangan terlalu ketat. - Jika Anda ingin menampilkan baris baru sebelum yang lainnya, tidak apa-apa tapi nyatakan bahwa Anda menggunakan aturan ini.
Jika Anda ingin menampilkan baris terakhir tanpa umpan baris berikutnya, tidak masalah, dan Anda tidak perlu mendeklarasikannya. Namun itu tidak mempengaruhi penilaian.
Tambahan : Tolong beri nomor N (lebar / tinggi) yang digunakan oleh program Anda. Berikan deskripsi kode Anda jika memungkinkan.
Tidak perlu memberikan panjang (dalam byte) dari program Anda karena N mengatakan semuanya.
Karena ini adalah bowling kode , program dengan N terbesar dan kompleksitas tertinggi akan menang.
Jawaban:
JavaScript (ES6), N = 5
Dengan baris baru terkemuka, bukan baris baru.
JavaScript (ES6), N = 6
JavaScript, N = 7
JavaScript, N = 202
sumber
N = 4
(Saya hanya tidak yakin apakah baris baru di awal diperbolehkan).Perl 5, 5 × 5
Ini sangat sedikit dikaburkan untuk membuatnya lebih menarik, jadi inilah beberapa penjelasannya:
q.u.
sama saja dengan'u'
. Berikutx
ini adalah operator pengulangan , sehingga'u'
diulang$]
kali.$]
adalah antara 5 dan 6 , jadi'u'
diulang 5 kali. Anda kemudian menambahkan baris baru$/
danprint
semuanya. Ini semua dilakukan satu kali untuk masing-masing anggota daftart..x
:t
danx
sebagai kata kunci diberi nilai't'
dan'x'
masing - masing, dan daftar demikian't','u','v','w','x'
. Jadi outputnya adalah:sumber
Ruby, 3x3
Cetakan
Cobalah online!
Bagaimana itu bekerja
p
adalah metode yang mencetak setiap argumennya, lalu mengembalikan nilai (atau larik nilai-nilai) yang dicetaknya. Jika itu disebut tanpa argumen, itu tidak mencetak apa pun dan kembalinil
. Jadi,p
s pada baris 2 dan 3 semuanya dievaluasinil
, dan yang pertamap
mencetaknyanil
.sumber
Python 3 , 29 byte
Cobalah online!
5x5 bisa dilakukan. Cetakan:
sumber
Arang , n = 2
Solusi membosankan (Arang hanya mencetak ASCII secara harfiah):
Cobalah online!
sumber
<?
/<?php
.C, N = 7
Mencetak kisi 7x7
%
, yaitusumber
brainfuck , 9x9
Cobalah online!
Output kuadrat dari
+
(fungsi paling mendasar dari brainfuck).Saya akan kembali ketika saya mencari cara untuk mengubahnya menjadi quine, jadi kurang lebih 3 minggu ...
sumber
Haskell,
7x76x6Keluaran
Cobalah online!
Bagaimana itu bekerja:
Dengan flag compiler diperbolehkan ada solusi 5x5:
Haskell, 5x5 (dengan flag -cpp compiler)
Cobalah online!
-cpp
memanggil preprocessor cpp yang memungkinkan garis lipat melalui\
.sumber
SOGL V0.12 , N =
32Coba Di Sini!
Baris pertama -
H$
artinyain the continuing lines replace $ with H
, menghasilkan baris berikutnyaHQ
. Itu kemudian dieksekusi:Menemukan ini dengan memaksa paksa melalui semua program pada panjang 2 (seperti program apa pun
..\n..
akan selalu turun ke program 2 karakter)sumber
Python 2 , n = 6
Cobalah online!
Bukan golf seperti itu, tapi ... Aku harus mengisi kekosongannya, bukankah begitu: P
sumber
print
itu sendiri adalah 6 byte dan 1 byte '\' adalah paksaan terendah."print"
dan kemudianeval
, tapi saya pikir Anda akan pergi terlalu jauh untuk masuk ke5x5
...Ruby , n =
65Disimpan 12 byte berkat m-chrzan
Cobalah online!
Ya, saya bermaksud untuk Leaky NunEDITini:: / pembatasan sumber lebih buruk daripada yang saya kira untuk kebanyakan esolang, dan bahasa normal jugasumber
puts
.> <> , N = 3
Mencetak
Cobalah online , atau tonton di taman bermain ikan !
Ini agak sulit, jadi bersabarlah. Ikan mulai di sudut kiri atas, dan segera memasuki mode string. Ini mendorong kode "v" dan "n" ke stack, masing-masing 118 dan 110. Ikan kemudian membungkus dan memukul
"
lagi, keluar dari mode string. Thev
kemudian mengirimkan ikan ke bawah, dan/
mencerminkan itu kiri ke:
yang duplikat atas tumpukan: stack sekarang 118, 110, 110.Ikan kemudian membungkus dan
^
mengirimkannya dalam satu lingkaran:Lingkaran ini mencetak bagian atas tumpukan sebagai angka (
n
), membungkus dan memantul, mendoronga
= 10 = linefeed ke tumpukan, kemudian mencetaknya sebagai karakter (o
) dan memulai loop lagi. Ketika tumpukan kosong,n
menyebabkan kesalahan dan program berhenti.Telah ditunjukkan dalam komentar bahwa berhenti dengan kesalahan agak tidak memuaskan. Karena itu saya memberi Anda alternatif yang berhenti secara alami, dalam kotak 4x4:
Mencetak
Cobalah online!
sumber
something smells fishy...
tidak masuk hitungan, karena secara teknis itu dicetak ketika kesalahan program (IIRC itu dicetak ke STDOUT).V , 11 byte
Cobalah online!
Seharusnya solusi 5 byte yang valid, tetapi sayangnya fungsi itu hilang. :(
sumber
CJam, n = ∞
Versi root: n = 2
Cobalah secara Online
Cetakan
Dapat diperluas ke sembarang n dengan menambahkan angka ke setiap baris. Misalnya:
n = 11
Cetakan
Cobalah secara Online
sumber
Proton , N = 5
Cobalah online!
sumber
Ly , 11 byte
Cobalah online!
Sebuah quine standar berbentuk bujur sangkar.
sumber
Perl 5 , 4x4
Cobalah online!
Dibutuhkan
-M5.010
pada baris perintah.sumber
-M5.010
memiliki efek yang sama dengan baris dalam file yang berbunyiuse 5.010;
?use 5.010
atau-M5.010
dapat dianggap sebagai gratis, karena sebagian besar fitur yang diimpor olehnya dapat diakses dengan menjalankan skrip viaperl -E
alih-alihperl -e
yang panjangnya sama.perlvar
pula) kalau tidak, Anda bisa mendapatkan 3x3 dengan sesuatu seperti ini ... Akan bermain dengan ini hari ini sekalipun!brainfuck , N = 6
Bisa dibilang ini tidak valid karena saya sewenang-wenang memilih output char menjadi 3 codepoint lebih rendah untuk memperbaiki sqaure ...
Cobalah online!
sumber
Python 3 , N = 13 (181 byte)
Cobalah online!
Saya tidak melihat mengapa ini tidak valid, karena tidak ada aturan yang memaksa saya untuk tidak menggunakan teknik ini (saya pikir). Ini mencetak grid 13x13 gurita.
sumber
Aceto , 3x3
Masukkan nol implisit ke float (
0.0
), duplikat, cetak, baris baru, duplikat, cetak, baris baru, cetak, baris baru.Versi lama yang mungkin tidak valid:
Aceto dibuat untuk tantangan semacam ini; semua program adalah kotak, setidaknya secara internal. Ini mungkin atau mungkin tidak valid, karena dalam output, baris terakhir tidak berakhir dengan linefeed. Kami hanya menghitung 2 ^ 7, nyalakan mode sticky, dan mencetak tiga kali dengan baris baru di antara.
sumber
Gaia , 3 x 3
Cobalah online!
Penjelasan
Gaia, 2 x 2
Saya tidak yakin apakah ini valid karena ini adalah quine kecurangan (
Øg
membaca file sumber program).sumber
PHP, n = ∞
Saya tidak tahu apakah ini celah, tapi ini
2
versinya:Cetakan
Cobalah online!
Dengan n = 10
Cobalah online!
Dapat diperpanjang ke nomor apa pun.
sumber
Python 3 , n = 6
Cobalah online!
Hampir sama dengan jawaban Python 2, hanya dengan parens: /
Saya bisa membuatnya lebih berbeda jika ada yang mau: P
sumber
TI-BASIC, N = 2
Perhatikan bahwa
Disp
(termasuk spasi) danXmax
masing-masing satu karakter. Karena Xmax adalah 10 secara default, outputnya adalah:sumber
WendyScript , 5x5
menghasilkan:
Cobalah online!
sumber
Python 2 , n = 5
Cobalah online!
Python 2 varian jawaban Sisyphus
sumber
Excel VBA, n = 15
Deklarasi subrutin yang menggunakan variabel input kosong, (untuk output) dan output untuk rentang
[A1]
, melalui kotak pesan dan jendela langsung VBE, dan melalui variabel inputAutoformats di atas untuk
dan output
sumber
Pesona Rise , n = ∞ (min 7x7)
Cobalah online!
Sangat memanfaatkan kemampuan Runic untuk menangani beberapa petunjuk instruksi secara bersamaan. Apa yang digandakan quine? Kenapa, satu quine dua kali lebih lama.
Semua
.
perintah adalah bagaimana ekspresi quine dasar"'<~S@|
dapat diperluas menjadi lebar sewenang-wenang. Salinan tambahan dari quine memperluas kotak secara vertikal. Baris baru dan output ditangani oleh baris terakhir, menyalurkan semua IP quine ke ekspresi terminator tunggal, mengikutiRak@
, yang mendorong karakter baris baru, lalu membuang seluruh tumpukan bagian atas ke bawah ke output. Baris terakhir itu sendiri juga menghasilkan garis keluaran,.@kaR<00
untuk mempertahankan ukuran struktur yang diperlukan. Sebagai baris terakhir yang keluar terlebih dahulu, tidak ada baris baru yang memimpin atau tertinggal.Ada quines yang lebih pendek (yaitu
'<~@|"
), namun baris terakhir sulit dibatasi hingga 7 karakter, atau tidak dapat menghasilkan output dengan lebar yang benar (@"<Rak
panjang 6 karakter, tetapi hanya menghasilkan 5 karakter).Saya juga berusaha untuk mengkode kotak terkecil yang mungkin. Ini adalah yang terbaik yang bisa saya lakukan.
Pesona Rise , n = 6
Cobalah online!
Ulangi bagian atas tumpukan berulang-ulang, cetak, dan tukar dua item teratas untuk mencetak
100000
enam kali dengan 5 baris baru terjalin.Dan kemudian, karena saya bisa:
Pesona Rise , n = 9
Cobalah online!
Program 9x9 kuadrat yang menghasilkan kuadrat 9x9 (dengan newline terkemuka).
Ini dilakukan dengan membuat quine 9-byte sebagai string dan kemudian
E
mengujinya 4 kali, kemudian mengalikan string dengan 5 ("abc"*3
->"abcabcabc"
) dan Evaling sekali lagi untuk 5 salinan terakhir. Ini dilakukan dengan cara ini untuk mengisi kotak 9x9 tepat ke tepi.sumber
Bahasa Wolfram (Mathematica) , n = 5
Keluaran
Asumsikan bahwa Anda tidak menghitung
>>
itu akan menjadi yang terpendek karena hanya fungsi pencetakan yangPrint
danEcho
. Anda juga harus memasukkan setidaknya 1 karakter setelah fungsi untuk memanggilnya.Cobalah online!
Keluaran
dengan baris baru yang tertinggal
n = 7
Cobalah online!
Keluaran
dengan baris baru yang tertinggal
sumber
Perl 5, 9x9
Penjelasan
for
Lingkaran luar melewati urutan1 .. ($= / 7)
. $ = adalah 60, jadi loop berjalan dari 1 ke lantai 60/7, yaitu 8.Pernyataan pertama di loop luar
$qq = ($q=$_)**7
,, memberikan variabel$q
nilai indeks$_
loop, dan memberikan$qq
nilai$q
pada kekuatan ketujuh.Kemudian muncul lingkaran dalam, yang melebihi urutan
$qq % 7 .. $q / 7
(%
adalah modulo).Jadi loop dalam berjalan total tiga kali: dua kali ketika indeks loop luar adalah 7, dan satu kali ketika indeks loop luar adalah 8.
Loop dalam melakukan
map{...} 0..2
yang merupakan loop lain, kali ini di atas urutan0 .. 2
, sehingga melakukan tiga kali berikut:The
qq
s adalah operator double-kutipan , jadi ini hanya cetakqqq
danqqqqqq<newline>
.Jadi, outputnya adalah
Cobalah online.
sumber