pengantar
Singkat cerita: beberapa hari yang lalu saya secara tidak sengaja mulai merajut kaus kaki dan struktur jahitan yang cukup logis membawa saya pada ide: Mengapa kita tidak hanya ASCII-merajut kaus kaki?
Memasukkan
Input adalah bilangan bulat genap N dalam kisaran [2,30]
.
Keluaran
Keluarannya adalah kaus kaki, jelas.
Struktur
Karena kami hanya akan menggunakan jahitan biasa, Anda hanya akan menggunakan v
untuk jahitan ke bawah dan >
untuk jahitan ke kanan. Biarkan saya menjelaskan struktur lengkap dengan contoh untuk N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- Blok pertama adalah bagian atas. Ia memiliki lebar
N
dan tinggiN*1.5
- Setelah itu tumit dimulai. Anda mengurangi satu
v
per baris dari sisi kanan hingga Anda memilikiN/2
lebar. Kemudian Anda menambahkanN/2
baris dengan lebar diN/2
bawah untuk menyelesaikan rajutan ke bawah. Perhatikan bahwa ini memberikan totalN/2 + 1
baris dengan lebarN/2
bagian pertama:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Sekarang rajutan sisi samping dimulai. Anda mulai dengan baris pertama yang diperkecil, isi
>
sampai Anda memiliki lebarN
dan tambahkan dua lagi. Lanjutkan proses itu termasuk baris pertama denganN/2
lebar - Isi baris di bawah ke level itu dan tambahkan
N*1.5
waktu>
ke sana - Biarkan bagian luar sebagaimana adanya dan tambahkan pada baris di bawah yang pertama dan di atas lase dua lagi
>'s
sampai selesai
bagian kedua:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Aturan
Mengejar baris baru ok.
Anda dapat memilih antara huruf besar atau kecil V
tetapi harus konsisten.
Ini adalah kode-golf sehingga kode terpendek dalam byte menang.
Uji kasus
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
atauV
secara bergantian? Saya akan menganggap untuk saatv
ini adalah satu-satunya yang diizinkan, tetapi memungkinkanV
akan mempengaruhi jumlah byteJawaban:
Pyth - 93 Bytes
Penjelasan:
Anda bisa mencobanya di sini!
sumber
Mathematica, 104 byte
Fungsi tanpa nama mengambil bilangan bulat positif sebagai input dan mengembalikan string (dengan baris baru) Perhatikan bahwa baris baru antara dua baris kode di atas adalah bagian dari kode. Pekerjaan utama dilakukan oleh fungsi
c
, yang definisi ungolfedmembuat daftar daftar, masing-masing terdiri dari beberapa
"v"
s dalam satu baris diikuti oleh beberapa">"
s diikuti oleh baris baru. Untungnya, rentang#3
untuk bagian luarTable
dapat memiliki nama variabel, yang dapat dirujuk dalam ekspresi#1
dan#2
; ini memungkinkan fungsic
dipanggil dengan argumen konstan dan variabel. Sisanya hanyalah perhitungan, dan operator penyambung string""<>
meratakan daftar bersarang yang muncul secara gratis.sumber
Python, 3,5
183177 bytePenjelasan masuk.
Cobalah secara Online!
sumber
n,v=int(input()),'v'
? Maka itu tidak menghemat apa pun.Groovy, 168 byte
Ini adalah penutupan tanpa nama. Pendekatan ini sangat mirip dengan jawaban Python 3.5 saya .
Cobalah secara Online!
sumber
Batch, 279 byte
Catatan: baris kedua berakhir di spasi. Batch memiliki masalah dengan gema
>
dalam variabel jadi saya harus a) menggunakan pengganti b) memanggil subrutin untuk menggemakan string yang dikoreksi. Sebenarnya saya punya tiga subrutin:a
digunakan untuk tumit. Satuv
dihapus setiap kali dan tiga>
s ditambahkan. Dua ekstra>
ditambahkan sehingga subrutin bisa masuk ke dalamb
subrutin.b
digunakan untuk bagian bawah kaki. Dua>
s dihapus setiap kali. Subroutine kemudian jatuh ke dalamc
subroutine.c
mencetak baris kaus kaki saat ini, mengganti karakter placeholder sehingga>
cetak dengan benar.Garis keempat menangani lebar kaki, sedangkan garis kelima menangani panjangnya. Garis ketujuh menangani panjang kaki sementara garis kedelapan menangani setengah bagian atas tinggi kaki dengan menambahkan dua
>>
ke setiap garis setelah mencetaknya. Ini berfungsi untuk ukuran kaus kaki yang merupakan kelipatan 4, dan penyesuaian dibuat untuk ukuran kaus kaki lain sehingga garis terpanjang tidak berulang.sumber
PHP, 229 byte
pendekatan yang cukup malas
mencetak baris baru terkemuka. Jalankan dengan
-nr
.kerusakan
sumber
dc , 269 byte
Baiklah, yah ... ini masif . Itu tidak mudah, saya akan memberi tahu Anda banyak, apa dengan semua referensi register, perbandingan, makro, kurangnya kemampuan manipulasi string, dll. Meskipun demikian, saya senang menyatukan ini, dan hanya itu yang paling penting, bukan ? ;)
Cobalah secara Online!
sumber