Ini adalah variasi quine .
pengantar
Kita semua menulis kode pendek, karena beberapa alasan yang tidak jelas , tetapi apa pun yang kita lakukan, akan memakan setidaknya 144 piksel / byte (dengan font 12px). Tetapi apa yang akan terjadi, jika kita menyandikan kode kita dalam gambar? Ini adalah tugas Anda hari ini.
Tantangan
Tugas Anda adalah membaca dalam kode sumber Anda sendiri (quine yang tidak tepat diizinkan, misalnya membaca file sumber secara harfiah), dan membuat gambar dari itu, dengan mengatur komponen merah, hijau dan biru dari sebuah piksel berdasarkan ASCII nilai karakter.
Contoh:
Kami memiliki string "Halo dunia!"
Hello world!
Mari kita konversi ini menjadi nilai ASCII:
72 101 108 108 111 32 119 111 114 108 100 33
Memetakan nilai RGB ke sana (Jika panjang kode sumber tidak dapat dibagi 3, gunakan 0s sebagai karakter yang tersisa):
__________________________________________________
| R | G | B || R | G | B || R | G | B || R | G | B |
----------------------------------------------------
|72 |101|108||108|111|32 ||119|111|114||108|100|33 |
----------------------------------------------------
Kami kemudian membuat gambar dengan area terkecil dari itu. Kami memiliki 4 set nilai RGB, sehingga gambar terkecil adalah gambar 2 * 2, pergi dari piksel kiri atas ke kanan:
Dan kami mendapatkan gambar yang sangat berwarna ini (diubah ukurannya, jadi setidaknya terlihat, juga membuktikan betapa kecilnya foto ini)
Aturan / Informasi tambahan
- Tidak ada input
- Outputnya harus sebagai file terpisah, atau dalam jendela terpisah.
- Untuk karakter multibyte, bagi karakter menjadi 2 byte.
- Panjang kode sumber minimal 1 byte
- Gambar haruslah yang dari ukuran yang mungkin, yang memiliki rasio lebar / tinggi terdekat dengan 1
- Jumlah piksel pada gambar harus persis ceil (byte count / 3), tidak ada piksel tambahan yang harus ditambahkan
Mencetak gol
Ini adalah kode-golf , jadi jawaban terkecil dalam byte menang.
sumber
height = N
danwidth = 1
? Saya pikir maksud Anda lebar / tinggi paling dekat dengan 1.Jawaban:
Sebenarnya, 12 byte
Cobalah online!
Program ini juga bekerja di Seriously.
Program ini menghasilkan gambar PPM , yang dapat diterima secara default .
Gambar output (ditingkatkan 50x):
Penjelasan:
sumber
MATLAB,
817269 byteIni menciptakan fungsi anonim yang dapat disisipkan ke jendela perintah dan dijalankan menggunakan
ans()
. Ketika dijalankan ini menciptakan gambar 23-pixel (prima) karena itu representasi paling persegi adalah array piksel sederhana.Penjelasan
Ketika disisipkan ke jendela perintah, fungsi anonim akan secara otomatis menempatkan dirinya ke variabel
ans
. Kemudian dari dalam fungsi anonim, kami menggunakan:yang mengevaluasi
char(ans)
dalam namespace dari jendela perintah daripada di dalam namespace lokal dari fungsi anonim. Oleh karena itu ia dapat mengubah fungsi anonim itu sendiri menjadi representasi string.Kemudian kami memiliki operasi berikut yang lebih mudah:
sumber
ans
gagasan itu!ans
dimiliki sampai proses pertama selesai, yang menghasilkanans
fungsi itu sendiri. Kali kedua, ia menggunakan kode "sendiri" (sebenarnya, itu adalah kode fungsi anonim yang terpisah tapi identik). Yang sedang berkata, saya tidak tahu MATLAB, jadi saya mungkin salah.evalin
untuk meneleponchar(ans)
di ruang kerja dasar. Theevalin
hanya dievaluasi pada saat run-time sehingga meskipunans
tidak didefinisikan ketika Anda sisipkan ke jendela perintah, ketika Anda meneleponans()
untuk menjalankan fungsi anonim ini,ans
adalah didefinisikan danevalin
panggilan dalam fungsi anonim dapat mengaksesnya. Jadi Anda tidak harus menjalankannya dua kali. Jika saya bisa mengandalkannya sedang dijalankan dua kali,evalin('base', 'char(ans)')
akan digantikan oleh cukupchar(ans)
Javascript (ES6)
324312309 BytesSaya yakin ini bisa sedikit golf:
Baris baru untuk keterbacaan:
Keluaran
sumber
f=()=>{
Di sini, lakukan sajaf=_=>
, -1 byte, jangan gunakan itu, javascript diketik secara longgarJavascript ES6 - 216 byte
Tidak Disatukan:
Catatan:
f
mengembalikan kanvas.Contoh menjalankan (mengasumsikan ada
<body>
untuk menambahkan):Haruskah membuang gambar berikut ke halaman (diperbesar):
sumber
PowerShell v4, 64 byte
Itu mendapatkan konten dari nama file sendiri, melemparkan string sebagai array char, menambahkan beberapa header PPM dan mengatur konten ke a.ppm sebagai output. 64 byte membuatnya 11x2 piksel:
sumber
Node.js, 63 byte
Output gambar menjadi file bernama
P6
yang dalam format PPM (P6).Berikut ini adalah membawakan PNG (7x3 piksel):
sumber
PHP, 226 byte
Golf
Versi tidak disatukan
Masukkan skrip ini ke file bernama 'p.php' dan jalankan. Anda memerlukan metode Anda sendiri untuk menjalankan skrip PHP, karena ini membaca dari file lokal.
Gambar output:
sumber
Java 511 karakter
Panjangnya solusi mengarah ke gambar yang lebih besar yang keren, karena gambar-gambar ini sangat bagus.
Perhatikan bahwa ada baris baru yang tidak terlihat! Bunyinya file sumber, yang harus "Q.java" dan membuat gambar "Q.png" yang terlihat seperti ini:
atau diskalakan 100x
sumber
APL (Dyalog) , 33 byte
Membutuhkan
⎕IO←0
yang default pada banyak sistem. Selain itu, AutoFormat harus dimatikan untuk mempertahankan program persis seperti yang diberikan.Hex B9 BA FD 4E 50 55 BB BB F8 0D 50 0D C2 CD FD 41 56 B2 0D 03 0B 01 FF 0D C2 BB C8 FD 4E 52 0D 16 0D
Unicode 28 2282 2395 4E 50 55 54 2283 29 27 50 27 2C 2355 2395 41 56 2373 27 0D 026B 08 2363 27 2C 2283 233D 2395 4E 52 27 66 27
Menciptakan
P
: P3 11 1 255 185 186 253 78 80 85 85 187 187 13 80 13 194 205 253 65 86 178 13 3 11 1 255 13 194 187 200 253 78 82 13 22 13Yang Anda simpan dan jatuhkan di sini untuk melihat:
⎕NR'f'
N ested R epresentation program f⊃⌽
pilih elemen (baris pertama yang dibalik) yang terakhir (lit)'␍ɫ␉⍣',
tambahkan empat karakter (filetype, lebar, tinggi, maks)⎕AV⍳
temukan indeks yang sesuai dalam A tomic V ector (set karakter⍕
format sebagai teks'P',
tambahkan satu huruf(
...)
terapkan fungsi diam-diam berikut:⊂
ambil seluruh argumen [dan menjadi]⎕NPUT
Asli [file,] Masukkan [itu, dengan nama file yang terdiri dari]⊃
karakter pertama ("P")sumber
Python, 81 byte
Output dalam format PPM.
Seperti inilah gambarnya:
Ditingkatkan:
sumber
q
P6
format, Anda tidak perlu mengonversi ke tata cara. Selain itu, untuk RGB 8-bit,255
sebaiknya digunakan256
.q
sekali, seperti yang tampaknya Anda lakukan, singkirkan tugas dan gantikan secara langsung - itu akan menghemat tiga byte.print'P3\n9 3 256 '+' '.join(map(lambda x:str(ord(x)),open(__file__).read()))
. Ini -4 byte, tho!