Tantangannya adalah untuk menulis kode yang paling rumit, tertanam dalam seni ASCII yang membaca dan mencetak "DFTBA". Misalnya, yang berikut ini berbunyi DFTBA:
oooooooooo. oooooooooooo ooooooooooooo oooooooooo. .o.
`888' `Y8b `888' `8 8' 888 `8 `888' `Y8b .888.
888 888 888 888 888 888 .8"888.
888 888 888oooo8 888 888oooo888' .8' `888.
888 888 888 " 888 888 `88b .88ooo8888.
888 d88' 888 888 888 .88P .8' `888.
o888bood8P' o888o o888o o888bood8P' o88o o8888o
Dan berikut ini, di bash mencetak DFTBA
echo "DFTBA"
Tantangannya adalah untuk menulis yang melakukan keduanya.
Kondisi menang
Jawaban yang valid, (semua kondisi sesuai kebijakan saya)
- Dapat dengan jelas dibaca sebagai DFTBA
- Cetak DFTBA saat dijalankan
- Harus fungsional tanpa koneksi internet
- memiliki huruf yang sama tingginya
- tidak boleh memiliki lebih dari 80 kolom
- tidak boleh memiliki lebih dari 10 baris
Poin (jumlah kemenangan tertinggi)
- Baris * Kolom / 32
- Keterbacaan: 25 untuk terbaca, 50 untuk sangat jelas
- 1 poin untuk setiap karakter non-spasi berbeda yang digunakan
Batasan
Ini dapat digunakan untuk sesuatu, sehingga semua tanggapan diasumsikan dilepaskan ke domain publik. Jika Anda tidak bisa, atau memilih untuk tidak merilis jawaban Anda ke domain publik: memposting komentar / tanggapan terhadap pertanyaan awal yang mengatakan "Jawabannya ditulis dan / atau dibagikan oleh saya, mungkin tidak dianggap berada di domain publik" .
Jawaban domain non-publik dipersilakan juga! Pastikan untuk menentukan :-)
Apa itu DFTBA?
Kadang-kadang singkatan dari "Don't For Be Awesome", tapi tidak selalu ... Ceritanya panjang ... Lagu terkait ini mungkin bisa membantu menjelaskan (atau membingungkan).
sumber
Jawaban:
(Saya telah membuat tulisan lengkap di sini karena cukup luas bagaimana saya sampai ke dua hasil ini)
Brainfuck, rentang ASCII lengkap 0 hingga 255: 80x10 = 800/32 = 25 + 25 + 219 = 269
Ada garis melalui tengah yang satu ini yang tidak cukup selat, tapi itu hanya tampilan di sini di CodeGolf. Jika Anda mengunduh file asli dari tautan di atas dan melihatnya di Brainfuck Developer atau Notepad alih-alih Wordpad, itu akan terlihat benar seperti ini .
Brainfuck, Bagian ASCII berkisar 0 hingga 127: 80x10 = 800/32 = 25 + 25 + 95 = 145
sumber
\s
regex (spasi putih), string to array |> unique |> length.Piet, Skor Tidak Pasti (153ish)
Saya mengerti bahwa ini tidak sepenuhnya sesuai dengan spesifikasi (memerlukan seni ASCII), namun kode sumber memang memberikan DFTBA yang sangat mudah dibaca. Jejaknya di bawah.
Piet mengabaikan setiap warna yang tidak berarti apa-apa. Akibatnya, saya menggunakan abu-abu sebagai "warna komentar" umum untuk menguraikan dan sejenisnya. Warna abu-abu tidak ditafsirkan (seperti yang akan Anda lihat di jejak). Saya ingin memperjelas piksel mana yang ada dalam program dan mana yang tidak.
Saya telah menggunakan 15 warna, yaitu 13 tanpa whitespce. Ini 89x32 piksel, meskipun bisa dikompresi lebih banyak. Saya menggunakan 4 op-code (kurangi, bagi, push dan outputc). Mungkin jika menggunakan penilaian bagaimana saya akan berpikir, 153?
Mungkin tidak menjamin skor, tetapi merupakan latihan yang menarik. Karena belum pernah menggunakan Piet sebelumnya, saya tidak pernah melakukan begitu banyak pemrograman coba-coba! Saya membutuhkan npiet secara ekstensif, dan jejaknya. Saya masih tidak tahu bagaimana pergerakan kursor bekerja dengan stabilitas apa pun!
Bagaimana itu bekerja:
sumber
Malbolge (
7180 x 10) / 32 + 25 + 94 =141.1875144Pembaruan: menambahkan lebih banyak jarak antar huruf untuk meningkatkan skor.
Diuji dengan penerjemah resmi Malbolge. Tentu saja, benar-benar tidak sulit untuk mencetak teks statis menggunakan Malbolge. Pengkodean yang digunakan oleh Malbolge hampir menjamin Anda akan memiliki seluruh rangkaian karakter ASCII yang dapat dicetak di sana.
Penjelasan kode (orang mengatakan mereka tidak memahaminya):
(Untuk informasi lebih lanjut tentang Malbolge lihat http://esolangs.org/wiki/Malbolge ).
Pertama, mari normalisasikan kode ke operasi yang diberikan di halaman di atas:
Juga perhatikan bahwa setelah setiap siklus instruksi, instruksi yang dieksekusi dikodekan ulang dan penunjuk kode dan penunjuk data ditingkatkan sebesar 1.
Pada awalnya,
C
(ptr kode)= D
(ptr data)= 0
. Ini berarti[D] = 'b' (98)
dani
instruksi dipilih. Jadi kita lompat ke alamat 99. (C
diatur pertama kali ke 98 dan kemudian ditingkatkan), penunjuk data sekarang 1.Di 98 ada serangkaian NOP (
o
). Ini memang memiliki efek bahwa mereka semua dikodekan ulang dan ituC
danD
bertambah. Instruksi nyata berikutnya (*
) ditemukan di alamat 140, jadi sekarangC=140
danD=42
.*
melakukan rotasi kanan (atau pembagian tiga) pada apa yang ditunjuk oleh pointer data, dan menyimpan kembali ke dalam memori dan di akumulatorA
.[42] = 'x' (120), so A <- [42] <- '(' (40)
.Baris lain dari NOP menyebabkan
C=154 (p)
danD=62 ( [D]='j' (106) )
.p
adalah operator gila . Saya tidak akan mereproduksi mejanya di sini, tetapi yang terjadi adalahA = [D] = crazy(A, [D])
.A
masih 42,[D]
adalah 106, yang artinyacrazy(A, [D]) = 29504
.<
adalah output. Ini mengeluarkan akumulator, yaitu 29504, sebagai karakter ASCII.29504 % 256 = 68
, yangD
, jadi sekarang kita memiliki D.sumber
Javascript (80 x 10) / 32 + 25? + 94 = 144
Kode:
Demo: http://jsfiddle.net/4hyyS/3/
Untuk menambahkan beberapa penjelasan:
Pertama saya memetakan
Number.prototype.toString
untuk setiap huruf kecil:Ini memungkinkan saya untuk menggunakan huruf kecil secara efisien.
Selanjutnya saya membuat string 'DFTBA' dengan mengubah angka menjadi karakter, misalnya:
(Saya bisa menggunakan
fromCharCode
atautoString(36)
untuk semua karakter, tapi itu akan terlalu mudah)Untuk mengisi karakter tambahan, dan mengaburkan kode lebih lanjut, saya menggunakan beberapa trik untuk membuat angka:
Dll
Untuk karakter yang tidak digunakan dalam kode aktual, saya menjatuhkannya di blok komentar
/* ... */
atau string" ... "
.Saya mulai dengan kisi 80x10, lalu mengecilkannya ke huruf saya, kemudian menyesuaikan kode saya agar sesuai (juga, terlihat lebih baik di font ini, yang terakhir
|
hanya kursor):sumber
Perl (75 x 7) / 32 + 25 + 59 ≈ 107,4
Saya akan memberi tahu Anda apa fungsinya, tetapi itu akan merusak obfu, bukan?)
sumber
count_char
di atasnya, dan lupa untuk mengecualikan spasi putih.C #, (71 * 7) / 32 + 25 + 45 = 85,53
Teka-teki Pemrograman pertamaku menjawab! C # benar-benar tidak terlalu bagus untuk gim ini ...
sumber
Python, (69 * 7) / 32 + 25 + 49 = 89
Tidak mudah melakukannya dengan Python karena lekukan dan spasi putih. Jadi saya melakukan satu dari banyak hal untuk membuat indentasi itu sah:
Keterbacaan masih dapat ditingkatkan sedikit ...
sumber
C, (55 * 8) / 32 + 25 + 55 = 93.35
Cukup mudah untuk membuat huruf lebih besar, dan menggunakan beberapa karakter lagi.
sumber
Jawa
sumber