Dalam tantangan ini, Anda harus mengambil dua angka (dipisahkan oleh spasi) sebagai input dan output segitiga kanan ASCII, terdiri dari x
s.
Angka pertama adalah lebar dan tinggi segitiga yang harus Anda hasilkan. Angka kedua adalah sudut mana sudut kanan berada. Sudut diberi nomor 1 hingga 4, mulai dari kiri atas dan menggunakan urutan pembacaan bahasa Inggris:
1 2
3 4
Misalnya (input dan output segitiga masing-masing):
INPUT | 3 1 | 3 2 | 3 3 | 3 4
------+-----+-----+-----+----
OUT- | xxx | xxx | x | x
PUT | xx | xx | xx | xx
| x | x | xxx | xxx
Output program Anda harus cocok dengan contoh-contoh ini persis untuk input masing-masing.
Masukan akan selalu valid: angka pertama adalah bilangan bulat ≥1, dan angka kedua adalah 1, 2, 3, atau 4.
Ini adalah kode-golf ; kode terpendek (dalam jumlah karakter) menang.
code-golf
geometry
generation
Gagang pintu
sumber
sumber
(⍎⍵⌷'functions')
bagian sebelum memutuskan bagaimana menafsirkan seluruh pernyataan? Pertimbangkan misalnya1+(⍵⌷'12+')|40
. Bahkan tidak akan tahu apakah|
itu monadik atau diad sebelum mengambil⍎
bagian yang diapit itu. Keseluruhan sintaksis abstrak berubah tergantung pada evaluasi.1+(⍎⍵⌷'12+')|40
... tidak akan membiarkan saya mengedit.f ← { [ }
tidak memberikan kesalahan!f 1÷0
memberi ... kesalahan domain ! (karena pembagian dengan nol). Hanya ketika Anda memanggil fungsi sepertif 123
Anda mendapatkan kesalahan sintaks . Lihatlah: imgur.com/jtmdi4BRuby,
11611510996Saya akan mulai dengan solusi saya sendiri.
Saya hanya tahu bahwa saya akan dikalahkan oleh solusi GolfScript 30 karakter hampir secara instan: P
Terima kasih kepada minitech karena telah memangkas 19 karakter (wow)!
sumber
==0
, Anda bisa menggunakan<1
.?x*x
menyimpan karakter lain. Juga,puts i[1]%2<1?t.rjust(s):t}
akan melakukan triknya, bukan??
? Apakah itu perlu? Juga, saya pikir Anda dapat melakukan hal yang sama denganr=
.1?
sebagai token tunggal, dan ruang tambahan karena jika tidak mem-parsing sebagai?t
(yang setara dengan't'
). Bagaimana Anda mengusulkan restrukturisasir
bagian?GolfScript (
3433 karakter)Sayang sekali bahwa sudut-sudutnya tidak dinomori secara rotasi, karena itu akan memungkinkan pendekatan yang lebih elegan dalam membangun satu array dan kemudian memutarnya
n
berkali - kali:sumber
C # - 195
Diformat:
sumber
Skrip golf,
39 3635 karakterlive demo: http://golfscript.apphb.com/?c=OyczIDInCn5cOnkseycgJyoneCd5Kit5PC0xIDIkPyV9JS0xQDI%2BPyVuKgo%3D
Sayang sekali itu bukan 30 karakter seperti yang diminta
sumber
1${-1%}*
dengan-1 2$?%
dan\2>{-1%}*
dengan\2>-1\?%
akan memberi Anda 2 karakter.-1 2
dapat ditulis0~2
~(\:y,{{>'x '=}+y,%0~2$?%}%\2&(%n*
Mathematica 122 (104?)
Di bawah interpretasi liberal "output", yang berikut (104 karakter) akan berfungsi.
Jika input dalam bentuk daftar diizinkan, berikut ini (75 karakter) sudah cukup:
sumber
J,
595542383736 karakterJika diizinkan memiliki input di akhir program:
Jika tidak (untuk 3 karakter tambahan):
Pemakaian:
atau
Saya pikir ini bisa sedikit lebih pendek karena sebagian besar karakter adalah tanda kurung dan topi agar tetap dalam gaya implisit.
Sunting
Menggunakan gerund dan kata kerja agenda telah memotong beberapa karakter, tetapi masih ada terlalu banyak batasan di sana untuk keinginan saya.
Sunting 2
Itu sedikit lebih seperti itu. Membuang agenda untuk daftar berapa banyak rotasi yang diperlukan menghilangkan sebagian besar tanda kurung tambahan dan beberapa tutup.
Sunting 3
Singkirkan tutup asing dan sepasang kurung dalam proses. Perlu menemukan cara pengkodean jumlah rotasi yang lebih murah.
Sunting 4 Gunakan awalan alih-alih suffix untuk memotong karakter. Mengaktifkan cara berbeda untuk membuat daftar yang tidak menyimpan karakter apa pun. Bersetubuh.
Sunting 5
Menggunakan rumus untuk memotong karakter lain. Masih merasa bit ini bisa lebih pendek.
sumber
Python 106 Karakter
sumber
Python 3, 91
Berdasarkan jawaban Abhijit.
Dimodifikasi pembuatan string output untuk menghindari jumlah string dan jelek
1
dirange
. Python 3 menghilangkanraw_
inraw_input
, tetapi membuat perlu digunakan//
untuk integer divison dan untuk menambahkan paranthesprint
, sehingga hanya menyimpan satu karakter.sumber
Kitten , 140
Tidak Disatukan:
Bukti bahwa saya perlu menerapkan overloading dan menyempurnakan perpustakaan standar.
sumber