Tulis program terpendek yang menggunakan bilangan bulat tunggal sebagai input dan mencetak sempoa Suanpan
Testcases
Memasukkan:
314159
Keluaran:
|\======================================/|
|| (__) (__) (__) (__) (__) (__) ||
|| (__) (__) (__) (__) || || ||
|| || || || || || || ||
|| || || || || (__) (__) ||
|<======================================>|
|| (__) (__) (__) (__) || (__) ||
|| (__) || (__) || || (__) ||
|| (__) || (__) || || (__) ||
|| || || (__) || || (__) ||
|| || || || || || || ||
|| || || || || (__) || ||
|| || (__) || (__) (__) || ||
|| || (__) || (__) (__) || ||
|| (__) (__) || (__) (__) || ||
|| (__) (__) (__) (__) (__) (__) ||
|/======================================\|
Memasukkan:
6302715408
Keluaran:
|\==============================================================/|
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|| || (__) (__) (__) || (__) || (__) (__) || ||
|| || || || || || || || || || || ||
|| (__) || || || (__) || (__) || || (__) ||
|<==============================================================>|
|| (__) (__) || (__) (__) (__) || (__) || (__) ||
|| || (__) || (__) (__) || || (__) || (__) ||
|| || (__) || || || || || (__) || (__) ||
|| || || || || || || || (__) || || ||
|| || || || || || || || || || || ||
|| || || (__) || || || (__) || (__) || ||
|| (__) || (__) || || (__) (__) || (__) || ||
|| (__) || (__) (__) (__) (__) (__) || (__) || ||
|| (__) (__) (__) (__) (__) (__) (__) || (__) (__) ||
|| (__) (__) (__) (__) (__) (__) (__) (__) (__) (__) ||
|/==============================================================\|
Jawaban:
J,
126124121119116115113105116115112 karakterMengambil input dari keyboard. Contoh:
Trik utama di sini adalah penyalahgunaan tinju J dengan mendefinisikan ulang karakter yang digunakannya. Ini menggunakan parameter global -
9!:7
- untuk melakukan ini. Mungkin ada ruang untuk bermain golf lebih lanjut, tetapi sejujurnya saya hanya senang mendapatkan sesuatu yang berfungsi yang dapat mengimbangi upaya terakhir saya pada pertanyaan ini .Cocok dalam tweet dengan karakter yang tersisa untuk mengatakan 'Gaz made this' :-).
Sunting: 3 karakter penghematan adalah karena meminjam jawaban
2 6$' || (__)'
dari Jesse Millikan .Sunting lebih lanjut: Kehilangan 11 karakter yang menambahkan ruang ekstra di kedua sisi yang tidak saya perhatikan tidak ada.
Penjelasan:
Kode ini ada dalam tiga bagian utama:
1) Pengaturan
Ini sendiri dalam dua bagian.
9!:7'\=/<=>/=\|='
mendefinisikan kembali karakter yang akan digunakan J untuk menampilkan kotak. Tinju J biasanya terlihat seperti ini:tetapi setelah mendefinisikan ulang tampilannya seperti ini:
(s=:[,.~,.)
mendefinisikan kata kerja yang akan saya gunakan beberapa kali kemudian. Ini ternyata menjadi tempat terbaik untuk mendeklarasikannya. Dibutuhkan karakter di sebelah kiri dan array karakter di sebelah kanan dan sandwich array di antara karakter. Sebagai contoh:Final
[
hanya berfungsi untuk memisahkan pengaturan dari bagian selanjutnya.2) Input dan Representasi
".,.1!:1[1
mengambil input dari keyboard dan memisahkannya menjadi satu digit:((i.5)</5|])
menciptakan angka nol dan representasi dari bagian bawah sempoa:|:@(1,.<&5)
menciptakan angka nol dan representasi dari bagian atas sempoa:Kedua bagian ini dikotak bersama menggunakan
;
:Kemudian kotak-kotak ditempatkan satu di atas yang lain untuk membentuk dasar sempoa, memberikan:
3) Output
&.>
berarti apa yang mengikuti akan beroperasi pada kedua kotak pada gilirannya.(,-.)
ini adalah pengait yang akan meniadakan input dan kemudian menambahkannya ke akhir dokumen asli:Ini benar-benar bagian dari representasi, tetapi untuk tujuan golf lebih baik memilikinya di bagian ini. Diterapkan ke input sebelumnya:
[:,.(_6[\' || (__)'){~
Nol dan yang sekarang digunakan untuk memilih string untuk mewakili manik atau tidak adanya:Tapi sekarang, seperti yang ditunjukkan Howard kepada saya, ada satu ruang pendek di kedua sisi manik-manik. Jadi kami menggunakan
s
kata kerja yang telah ditentukan sebelumnya untuk mengapit isi setiap kotak antara dua kolom spasi:Setelah melakukan itu, yang tersisa adalah mengonversinya menjadi string menggunakan
":
sehingga kita dapat memasukkannya di antara dua kolom|
:sumber
Ruby 1.9, 154 karakter
Asumsikan inputnya adalah tidak diakhiri oleh baris baru.
Fakta menyenangkan: Karena cara saya mengubah digit input menjadi angka (
$&.hex
satu byte lebih pendek dari$&.to_i
), sempoa ini benar-benar berfungsi dengan hex digit hinggae
:Untuk
0xf
, manik ketiga secara ajaib muncul di bagian atas.Saat mengizinkan flag tambahan selama permintaan script, ini dapat dipersingkat menjadi 152 byte (kode 149 byte + 3 byte flag invokasi tambahan):
Jalankan dengan
ruby -n suanpan.rb
.sumber
Perl (151 karakter)
(
168163158157156154)Penjelasan
Suntingan
\n
s menjadi karakter baris baru yang sebenarnya. Tidak percaya saya tidak memikirkan itu sebelumnya!sumber
Windows PowerShell, 191
Sejarah:
$l
.%
yang membuat angka dari angka.$r
dan$b
. Dan$a
juga sudah usang. Apa adanya$l
.$OFS
jika saya hanya membutuhkannya sekali.$f
.-join
karena kita benar-benar dapat menggunakan ruang tambahan untuk efek yang baik.sumber
Haskell, 243 karakter
Tidak terlalu pintar. Saya yakin itu bisa dipersingkat entah bagaimana ...
sumber
interact
z x|x=" (__) "|0<1=" || "
.Delphi, 348
Versi ini membangun string untuk menulis sekali saja; Digit ditangani oleh fungsi terpisah yang bekerja melalui
digit modulo m >= value
konstruk (dinegasikan jika nilai <0).Delphi, 565Percobaan pertama :
Ini menggunakan 3 array; satu untuk 7 string yang dapat dilihat, satu untuk garis output dan satu untuk memetakan 7 string menjadi 11 kolom (10 digit dan 1 kolom awal).sumber
GolfScript, 139 karakter
Belum banyak bermain golf, tapi cocok dengan tweet (hanya dengan ASCII). Coba di sini .
sumber
J, 225
Lulus dua tes yang diberikan, harus bekerja hingga setidaknya beberapa ratus digit.
Pertama: Ya, ya, penggalian kuburan. Kedua: Itu sangat memalukan. Baiklah. Saya belum memutuskan apakah akan bermain golf lebih jauh atau meringkuk dalam posisi janin dan menangis. (Atau keduanya!)
Berikut sedikit penjelasan sebagai pengganti program yang lebih pendek:
sumber
C,
277274 karakterAnda tahu, menurut saya kita tidak punya cukup solusi di sini yang benar-benar memanfaatkan prepro C. Sebagian karena
#define
itu sebenarnya memakan sedikit ruang. Tapi tetap saja, ada begitu banyak potensi. Saya merasa perlu untuk mengatasi kekurangan ini.Itu lebih baik.
sumber
Mathematica 281
Contoh
sumber
C, 548
Versi pertama, hanya sedikit bermain golf sejauh ini.
sumber
Scala (489 karakter)
Usaha yang jelek sekali.
sumber
Sclipting , 77 karakter
Bounty mengacu pada tweet , dan Twitter menghitung karakter (bukan byte). :)
Saya sebenarnya menulis ini tahun lalu (ketika tantangan ini diposting), tetapi saya tidak pernah mempostingnya karena saya menemukan Sclipting setelah tantangan ini pertama kali diposting. Jika Anda merasa ini membuatnya tidak memenuhi syarat, saya mengerti.
Penjelasan
sumber
Python,
309301288 karakterVersi ringkas:
Hapus versi:
Perhatikan bahwa untuk pemadatan, variabel diubah namanya menjadi satu huruf, dan pemahaman daftar diubah menjadi generator yang tidak memerlukan tanda kurung tambahan.
sumber