Misi Anda, jika Anda memilih untuk menerimanya, adalah dengan memasukkan serangkaian pasangan titik yang membentuk grafik, seperti ini:
A, BC, AB, AA, DA, EF, GC, G
Anda kemudian harus mengeluarkan visualisasi ASCII dari grafik.
Misalnya, A,B C,A C,D
bisa:
A-----------------B
\
\
C---------D
Sunting: Sesuai komentar, berikut adalah beberapa batasan input:
- setiap node memiliki paling banyak 5 koneksi (+20 jika Anda dapat menangani lebih banyak)
- grafiknya adalah planar, yaitu tidak ada garis silang (+200 jika Anda dapat menangani satu crossover!)
- paling banyak ada 16 node (+20 jika Anda dapat menangani lebih banyak)
Skor Anda adalah 999 - (panjang kode Anda) + (bonus apa pun) .
Mulai mesin Anda :)
code-golf
ascii-art
graphical-output
Soham Chowdhury
sumber
sumber
code-golf
,,code-challenge
atau apa? Dan apa kriteria / kriteria yang menang?code-golf
/ 10charJawaban:
Python 3, 168 karakter, Skor = 999- 168 + 240 = 1071
Persingkat jawaban Keith Randalls sangat singkat .
Dalam Python 3,
print
adalah fungsi, dan karenanya dapat disingkatp=print
. Menghemat3 * (4 - 1) - 8 = 1
karakter.Dalam Python 3,
input
digunakan sebagai penggantiraw_input
, menyimpan 4 karakter.Alih-alih
' '*len(V)
Anda dapat menggunakan' '*80
(atau yang serupa). Ini mengarah pada peningkatan jumlah ruang gerak, tetapi siapa yang peduli ... jika itu menyelamatkan 4 karakter lainnya!Sekarang menjadi menarik: Alih-alih string, gunakan daftar! Ini membuat pembaruan menjadi
S
lebih mudah, tetapi agak mempersulit pencetakan. Saya akan memanggil daftarT
jadi saya tidak akan bingung dengan stringS
dari marinus.Mari kita mulai dengan mengubah simpul menjadi daftar, bukan string yang dipisahkan ruang, yang menyimpan 4 karakter. Baris output
T
harus menjadi daftar (T=[' ']*40
), yang biayanya 2 karakter.Pencetakan baris saat ini
T
menjadi 5 karakter lagi: saya perlu kurung untuk menggabungkan daftar string dengan benar, saya perlu dua-
karakter (karena x dan y hanya sekitar setengah besar sekarang), dan aku butuh*
untuk membuatprint
fungsi take elemen daftar sebagai argumen yang terpisah dan mencetaknya dipisahkan dengan spasi (dan bukan sebagai daftar!). (Langkah ini sulit .)Baris saat ini dapat diperbarui dengan sederhana
T[x]=T[y]="|"
alih-alihS=S[:x]+'|'+S[x+1:y]+'|'+S[y+1:]
, yang menyimpan 19 karakter.Untuk mencetak
T
lagi, dan untuk pencetakan titik terakhir dari simpul, tanda bintang diperlukan, yang harganya 2 karakter.Dan ketika saya sedang mengetik ini, saya melihat bahwa tidak ada salahnya memiliki simpul tak terlihat yang tidak terhubung (
' '
). Ini memungkinkan untuk membuat set simpul lebih pendek, menghemat 4 karakter lebih banyak.Secara keseluruhan, penghematannya adalah
1 + 4 + 4 + 4 - 2 - 5 + 19 - 2 + 4 = 27
.Contoh yang menunjukkan efek 9 .: input
A,B A,C
mengarah ke outputsumber
''.join()
sampah yang membuatnya lebih lama. Saya tidak tahu*T
benda itu ada di python3. Golf berikutnya ...APL (
171166162 karakter, semua bonus: 999 -171166162 + 20 + 20 + 200 =106810731077)Ini adalah program APL golf terpanjang yang saya tulis sejauh ini. Ini mungkin sedikit curang, tetapi tidak ada dalam pertanyaan yang benar-benar melarang ini. Apa yang saya lakukan adalah meletakkan semua node pada garis vertikal dan menggambar grafik sebagai diagram busur. Ini jelas masih berupa grafik.
Saya masih butuh beberapa jam.
Node harus berupa huruf besar tunggal, sehingga mendukung maksimum 26 node. Ia dapat menangani garis yang dilintasi, dan setiap node dapat memiliki koneksi sebanyak yang akan ditangani oleh layar.
Contoh output:
sumber
Python, 195 karakter, skor = 999 - 195 + 20 + 200 + 20 = 1044
Setiap tepi mendapat satu baris. S adalah string dengan koneksi vertikal yang perlu kita pertahankan saat kita membuat grafik.
Berikut beberapa contoh input / output:
dan dicuri dari marinus:
sumber