Tantangan
Tantangannya sederhana: cetak ular .
Anda akan mendapatkan panjang ular sebagai input.
Seekor ular panjang 2 terlihat seperti ini:
==(:)-
Ular dengan panjang 7 terlihat seperti ini:
=======(:)-
Dengan kata lain, panjang ular adalah berapa banyak tanda yang sama di depan kepala .
Pemakaian
Katakanlah saya membuat implementasi C ++ dan mengompilasinya ./getsnake
.
Saya bisa menjalankannya seperti ini:
$ ./getsnake 10
==========(:)-
Klarifikasi
- Celah standar tidak diijinkan.
- Anda bisa mendapatkan input dan output dengan cara apa pun yang dapat diterima.
- Anda dapat menganggap semua input yang diberikan adalah bilangan bulat positif.
- Anda dapat menulis fungsi alih-alih program biasa.
code-golf
string
ascii-art
kolmogorov-complexity
Inisialisasi Sabah
sumber
sumber
Jawaban:
Hexagony , 33 byte
Tidak akan menang, tapi tetap keren. Mungkin bisa mendapatkan golf lebih banyak.
Cobalah online!
Golf:
Diformat:
Berwarna (Dibuat menggunakan Hexagony Colorer Timwi )
Penjelasan:
Ulangi, cetak "=" hingga penghitung mencapai 0.
Cetak "("
Cetak ":"
Cetak ")"
Nilai-nilai di atas dihasilkan menggunakan skrip python sederhana. Namun, saya agak kehabisan ruang untuk "-". Jadi, saya harus menggunakan trik yang lebih maju.
Ketika program mencetak ")", nilai sel tidak 41, itu 1065. Hexagony hanya mengubah nilai saat mencetak. Ternyata, (1065 * 1000 + 4)% 256 = 44, hanya satu dari 45, nilai ascii untuk "-". Kemudian, saya hanya menambah, mencetak, dan menyisipkan @ di suatu tempat setelah pencetakan.
sumber
Cinnamon Gum, 7 byte
Cobalah online.
Sudah 6 byte dengan
p
sintaks lama : /Penjelasan
Dekompres ke
p~=~(:)-
,p
panggung kemudian hanya membaca input dan mengulangi=
n kali.sumber
Brian & Chuck , 31 byte
Input dalam bentuk nilai byte , jadi mis. Input
!
memberikan panjang ular 33.Cobalah online!
Sudah lama ...
Penjelasan
Primer Brian & Chuck yang cepat:
,
(input) dan hanya Chuck yang dapat menggunakan.
(output). Selain<
dan>
ada{
dan}
yang memindahkan kepala kaset ke sel nol berikutnya (atau dalam kasus{
ke ujung kiri kaset jika tidak ada sel nol di jalan). Alih-alih[...]
, satu-satunya aliran kontrol?
yang beralih kontrol ke contoh lain jika sel saat ini adalah nol. Instruksi pertama yang dieksekusi pada sel lain adalah yang setelah kondisi. Dan akhirnya,_
hanyalah alias untuk null-byte, untuk kenyamanan.Sekarang kodenya. Brian mulai dengan ini:
Ini membaca input ke sel pertama Chuck, kemudian memindahkan kepala kaset ke kiri dengan
{
(tidak melakukan apa-apa sekarang) dan mengurangi input dengan-
sebelum beralih kontrol untuk Chuck jika nilainya masih nol. Ini memulai loop utama. Chuck kemudian menjalankan bit ini:Ini menggerakkan kepala pita pada Brian sampai akhir, memindahkan dua sel ke kiri
=
dan mencetaknya di depan kepala pita sepenuhnya ke kiri dan mengalihkan kendali kembali ke Brian. Beginilah umumnya loop bekerja dalam B&C.Setelah input dikurangi menjadi nol,
?
kaset Brian tidak akan melakukan apa pun. Kemudian Brian mengeksekusi bagian ini:The
):(=
tidak-ops, sehingga kode yang sebenarnya hanya>}-?
. Kami pindah dari sel nol dengan>
, naik ke_
dengan}
, menurunkannya untuk membuatnya tidak nol dan beralih ke Chuck?
. Kemudian bit terakhir pada Chuck dijalankan:Ini cukup mencetak lima karakter di depan Chuck, yaitu
=(:)-
. Perhatikan bahwa kita perlu mencetak yang lain=
karena loop utama hanya dilakukanN-1
kali untuk inputN
.sumber
V , 8 byte
Cobalah online!
V menggunakan penyandian "Latin1".
Penjelasan:
sumber
Retina , 10 byte
Cobalah online!
Ini adalah penggantian regex sederhana.
Cocok dengan
.+
yang cocok dengan seluruh input, dan kemudian gantikan dengan$*=(;)-
.Ini
$*
adalah fitur unik di Retina: ini adalah operator khusus pengulangan karakter.Sebagai contoh,
5$*x
akan menjadixxxxx
.Dalam hal argumen sebelumnya tidak ada, seluruh kecocokan digunakan sebagai argumen default.
sumber
Python, 21 byte
Ide itu!
sumber
"="*input()+"(:)-"
Haskell, 25 byte
'='<$[1..n]
setara denganreplicate n '='
.sumber
Java 8, 52 byte
Suite uji. (Kompilasi> Jalankan)
Kredit .
cara tradisional,
615453 byte7 byte berkat Kevin Cruijssen.
Terima kasih 1 byte untuk Dom Hastings.
sumber
for(int i=0;i<n;i++)
dapat digunakan untuk golffor(;n>0;n--)
, karena Anda tidak memerlukan input untuk apa pun selain for-loop.for(;n-->0;)
untuk menyimpan byte lain!Jelly , 9 byte
Cobalah online!
sumber
C, 38
Cobalah di ideone.
sumber
f(n){~-printf(n?"=":"=(:)-")||f(~-n);}
.f(n){for(;n;printf(n--?"=":"(:)-"));}
untuk -1.05AB1E,
109 bytePenjelasan
Cobalah online
1 byte disimpan berkat Adnan.
sumber
'=×"ÿ(:)-
untuk 9 byte :). Ini menggunakan interpolasi string.ÿ
ya :)Javascript, 23 byte
sumber
n(3)
dan menerimaUncaught ReferenceError: n is not defined
kesalahan ...x=n=>"=".repeat(n)+"(:)-"; x(7);
x=
dan diubah menjadi 25 karakter?C #, 28 byte
sumber
Python , 24 byte.
input()
mendapat masukan dari pengguna*
, ketika digunakan pada string dan integer, membuat string baru, yang terbuat dari salinan asli. Misalnya:"hello "*3
keluaranhello hello hello
.Dengan mengalikan
=
daninput()
, Anda mendapatkan string=
dengan panjang yang ditentukan pengguna.Menggunakan
+
gabungan dua string, dalam hal ini, tubuh"=…="
kita dengan kepala kita,"(:)-"
untuk membuat ular.print
menampilkan hasilnya.sumber
GolfScript,
1110 byteKalikan "=" dengan input, dan tambahkan head.
-1 terima kasih kepada Leaky Nun
sumber
Mathematica,
2120 byteFungsi anonim. Mengambil angka n sebagai input, dan mengembalikan ular panjang n sebagai output.
"="~Table~#
menghasilkan daftar{"=", "=", ..., "="}
panjang n , dan<>"(:)-"
menggabungkan elemen-elemen daftar dan menambahkan"(:)-"
ke string yang dihasilkan.sumber
"="~Table~#<>"(:)-"&
R,
3227 byteSolusi ini cukup mudah,
rep
fungsi mengulang elemen pertama ("="
)scan()
kali, yang sebenarnya merupakan input pengguna.EDIT :
Jawabannya sedikit lebih pendek, menggunakan
scan()
langsung.Kalau tidak,
untuk ular tanpa cincang ( 34 byte )
sumber
sep=""
yang dibutuhkan di sini, jika tidak ular penampilan Anda seperti yang dilalui kereta api:= = = (:)-
.sep
sebagai catatan samping;)Batch, 68 byte
sumber
CJam,
1311 byteUji di sini.
-2 byte berkat kuartata
sumber
'=*
bukan{'=}*
.Perl 6 ,
16 1512 bytePenjelasan:
Pemakaian:
sumber
JAISBaL , 9 byte
Verbose:
Diuji dengan JAISBaL-0.0.7 (.jar yang dikompilasi baru saja didorong, tetapi sumbernya telah naik pada git untuk sementara waktu)
sumber
#
sebelum nama bahasa untuk membuatnya terlihat seperti orang lain.PowerShell v2 +, 19 byte
Program lengkap. Mengambil input
$args[0]
, menggunakan perkalian string untuk membangun tubuh, kemudian merangkai string untuk menempel di kepala.sumber
"$("="*[int]$args[0])(:)-"
C,
464543bytedisimpan 2 byte berkat owacoder! disimpan 3 byte berkat rici!
Cobalah di Ideone!
sumber
-->
Operator misterius itu menyerang lagi.>0
dan menyimpan dua byte.f(n){while(4-printf("=\0(:)-"+2*!n--));}
Cheddar, 15 byte (tidak bersaing)
Jawaban langsung.
sumber
Sesos , 11 byte
Hexdump:
Cobalah online!
Assembler:
sumber
K, 17 Bytes
Contoh;
Penjelasan;
sumber
-1(
...);
?{(x#"="),"(:)-"}
Perl, 16 + 1 (
-p
bendera) = 17 byteMembutuhkan
-p
flag, jadi jalankan dengan:sumber
Minkolang 0,15 , 12 byte
Coba di sini!
Penjelasan
sumber
Befunge-98, 24 byte
Mengambil input numerik dari pengguna, lalu mencetak ular.
sumber
Matlab / Oktaf, 22 byte
Ini adalah fungsi anonim.
Cobalah di Ideone .
Penjelasan
Asumsikan
n= 5
.1:n
menghasilkan vektor baris[1 2 3 4 5]
.~(1:n)
meniadakan setiap entri, sehingga memberi[0 0 0 0 0]
....+61
menambah61
setiap entri, sehingga memberi[61 61 61 61 61]
.61
adalah nilai karakter ASCII=
.[... '(:)-']
menyatukan itu dengan string'(:)-'
. Ini secara otomatis dikonversi[61 61 61 61 61]
ke string'====='
sebelum penggabungan.sumber