Cobalah untuk membuat animasi gunting seni ASCII sederhana!
Tantangan
Semua input akan berupa bilangan bulat -31 hingga 31.
Outputnya akan berupa animasi (Untuk dikeluarkan di suatu tempat , selama frame sebelumnya diganti. GIF diperbolehkan.), Dipisahkan oleh (kurang-lebih) 1 seperempat detik.
Jika input ( n
) positif:
- Animasi harus dimulai dengan
8<
, AKA membuka gunting. - Bingkai selanjutnya adalah
8=
. Ini menunjukkan gunting "memotong". - Tanda hubung (tanda potong) ditambahkan di belakang gunting, dan animasi berulang sampai ada
n
tanda hubung.
Jika input negatif:
- Gunting mulai terbuka dan menghadap ke kiri (Seperti ini
>8
:), dengann
spasi di depannya. - Gunting menutup dan tetap menghadap ke kiri (
=8
). - Gunting dibuka kembali, saat ruang dihapus, dan tanda hubung ditambahkan di belakang gunting.
Jika inputnya nol:
- Keluarkan hanya pembukaan dan penutupan gunting, untuk 10 frame. Mereka dapat menghadapi kedua arah, selama itu konsisten.
Ini adalah kode-golf , jadi pengiriman terpendek dalam byte akan menang. (Bahkan jika entri Anda jelas tidak akan menang karena semacam "bahasa golf" yang baru, kami masih ingin melihatnya.)
Pesan kesalahan diperbolehkan, selama pesan kesalahan itu sendiri tidak mengganggu animasi.
Contoh Pasang Input dan Output:
(Saya memisahkan frame untuk kejelasan, tetapi harus ada sekitar 0,25 detik antara setiap frame)
Input: 1
Output:
8<
8=
-8<
Input: 2
Output:
8<
8=
-8<
-8=
--8<
Input: 5
Output:
8<
8=
-8<
-8=
--8<
--8=
---8<
---8=
----8<
----8=
-----8<
Input: 0
Output:
8<
8=
8<
8=
8<
8=
8<
8=
8<
8=
Input: -2
Output:
>8
=8
>8-
=8-
>8--
Input: -3
Output:
>8
=8
>8-
=8-
>8--
=8--
>8---
Nikmati!
Jawaban:
SOGL V0.12 , 53 byte
Coba Di Sini!
sumber
MATL ,
595857 byteCobalah di MATL Online! Atau lihat contoh jalankan dari kompiler offline:
sumber
JavaScript (ES2017) + HTML, 165 + 10 byte
-16 byte oleh @Shaggy
Cobalah di cuplikan di bawah ini:
sumber
alert
masing-masing "bingkai" mungkin tidak mematuhi spesifikasi, Anda mungkin ingin mendapatkan klarifikasi tentang hal itu.)alert
karena persyaratannya adalah bahwa frame datang pada interval ~ 0.25s, yangalert
tidak akan mendukung tanpa input pengguna lebih lanjut.TI-BASIC, 173 byte
Memiliki 0 input berakhir dalam bingkai yang berbeda dari yang lain adalah hambatan yang sangat menarik!
Karena TI-BASIC tidak suka string kosong, ini mempertahankan setidaknya satu karakter dummy di sebelah kiri gunting, yang pertama adalah ruang terus-menerus; untuk menghindari penghitungan ini sebagai bagian dari ruang n untuk input negatif, program ini mulai mencetak dari kolom paling kanan dari baris pertama, kemudian membungkus sisa string ke bawah untuk memulai bidang animasi yang sebenarnya di sana, segar dari kolom pertama.
Beberapa catatan untuk perangkat eksotis: Ukuran kode TI-BASIC diukur dalam token, bukan karakter. Untuk perbandingan lintas-kalkulator yang konsisten, kami biasanya mengabaikan jumlah byte yang berurusan dengan panjang header (misalnya, kami mengurangi 8 dari PROGRAM: SCISSORS). Selain itu, untuk rutinitas yang sepenuhnya berperilaku baik di layar awal (yang sebagian besar tidak memiliki struktur kontrol), kami juga menghilangkan ukuran program kosong untuk "menghemat" pada 9 byte juga. Program ini khususnya tidak dapat diketik di layar beranda, sehingga kebebasan tidak akan diambil.
sumber
Oktaf ,
190186 byteCobalah online! (catatan:
clc
tidak berfungsi di TIO, jadi hanya semua frame animasi yang dihasilkan secara berurutan). Terima kasih atas @LuisMendo karena membuat saya mengetahui fungsie(...)
di Octave, yang setara denganexp(1)*ones(...)
.Ternyata tugas inline hanya mengembalikan entri array yang diubah, bukan seluruh array. Ini berarti bahwa konstruksi seperti
q(k(i+1)+=s)
tidak dimungkinkan, jadi programnya hampir seperti MATLAB. Bahkan, entri MATLAB hanya sedikit lebih lama,MATLAB,
198195 bytesumber
+ones
dengan yang lebih buruk+~e
. Juga, dalam Oktaf dan Matlab, ganti[i i+1]
dengani:i+1
.e(...)
seperti itu? Saya tidak berpikir saya pernah merasakan perlunya matriks m-by-ne
. Membuat golf bagus.Bersih , 294 byte
Cobalah online!
Perhatikan bahwa ini tidak berfungsi pada TIO, tautannya hanya untuk tujuan presentasi.
Hasil Anda dapat bervariasi jika Anda memiliki
CLOCK_PER_TICK
konstanta selain1000
, standar untuk x86 Windows Clean.sumber
Python 2 , 170 byte
Cobalah online!
sumber
(approximately) 1 quarter of a second
; mengapa tidak menggunakan waktu tidur.2
detik dan menyimpan byte?Ruby, 169 byte
Cukup banyak penjelasan sendiri ketika Anda menggali, setidaknya menurut pendapat saya. Program harus dijalankan di komputer dengan perintah / alias cls.
Cobalah online! (Harus menimpa metode system (), hanya untuk skrip ini, karena keterbatasan yang disebutkan di atas.)
Saya memang mencoba menggunakannya
Tapi itu hanya mencetak karakter yang tidak terlihat, ada yang tahu kenapa
sumber