9-hole mini-golf: Deskripsi
- 9 (sebagian besar cukup mudah) tantangan kode golf dari berbagai kesulitan
- Hukuman karena menggunakan bahasa yang sama lebih dari satu kali
- Semua tantangan tentang tema tertentu (tema ini: Manipulasi Teks)
- Input dan output dapat di mana saja masuk akal (yaitu STDIN dan STDOUT, membaca dari / menulis ke file, argumen fungsi dan nilai pengembalian, dll.) Tetapi TIDAK boleh di-hardcode ke dalam program
- Sangat terinspirasi oleh 9 Hole Challenge dan Text Mechanic
Lubang
Tas kode-golf
Ambil dua string sebagai input.
Keluarkan jumlah karakter string pertama, sambil mengabaikan kemunculan karakter apa pun di string kedua.
Contoh:f("foobarbaz", "ao")
=>5
Pra-teks untuk bermain golf
Ambil dua string sebagai input.
Keluarkan string pertama, dengan setiap baris diawali dengan yang kedua.
Contoh:f("foo\nbar\nbaz", "a")
=>"a foo\na bar\na baz"
Perang tab vs spasi
Ambil strings
, angkan
, dan booleanb
(ditentukan sesuka Anda) sebagai input.
Jikab
benar, outputs
dengan setiap tab dikonversi menjadin
spasi.
Lain, outputs
dengan setiapn
spasi dikonversi ke tab.
Contoh:f("if (x) {\n\tdoStuff();\n}", 4, true)
=>"if (x) {\n[sp][sp][sp][sp]doStuff();\n}"
([sp]
berarti spasi)Pilar golf
Ambil string
s
, angkan
, dan nomor lainm
sebagai input.
Outputs
dalam kolomn
setiap baris danm
karakter per kolom.
Juga memiliki bantalan satu ruang antara kolom.
Contoh:f("this is some placeholder text, foo bar baz...", 3, 5)
=>this aceho foo is so lder bar b me pl text, az...
Surat ramah
Ambil strings
dan angkan
sebagai input.
Keluarkan grupn
huruf yang paling umum dis
.
Jika ada dasi, hasilkan salah satu atau semuanya.
Contoh:f("abcdeabcfghiabc", 3)
=>"abc"
Ambil string sebagai input.Telurorak-arik surat untuk sarapan
Keluarkan string dengan semua kata-katanya diacak (urutan huruf acak) kecuali huruf pertama dan terakhir.
Untuk kesederhanaan, asumsikan bahwa input akan menjadi daftar "kata", spasi dipisahkan (yaitu dalam@$&_():;" foo bar
,@$&_():;"
dianggap sebagai "kata.")
Contoh:f("this is a sentence that will be scrambled")
=>"tihs is a stcneene that wlil be sclamrbed"
ASCIIfy
Ambil string sebagai input.
Jika string hanya berisi angka dan spasi, maka ganti angka dengan karakter ASCII masing-masing (menghapus spasi).
Lain, lakukan sebaliknya (karakter ke angka).
Contoh:f("ASCIIfy challenge")
=>"65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
Contoh 2:f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")
=>"ASCIIfy challenge"
Transformasi mini-mini-markdown
Ambil string sebagai input.
Keluarkan string yang dikonversi dengan mini-markdown, seperti yang digunakan dalam komentar di Stack Exchange.
Ini adalah bahkan versi mini-er: Anda hanya perlu untuk menangani**bold**
,*italics*
dan`code`
.
Anda tidak perlu menangani sarang yang tidak valid, seperti**foo *bar** baz*
. Juga asumsikan bahwa ketika Anda melihat pembatas (*
atau`
), itu akan selalu berarti memformat (yaitute**st**ing
=>te<b>st</b>ing
, danfoo* bar *baz
=>foo<i> bar </i>baz
).
Contoh:f("**foo** *bar **baz*** `qux`")
=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
Hanya karakter terbaik
Ambil strings
, angkan
, dan stringr
sebagai input.
Keluarkann
karakter th dari setiap kata dis
. (0-diindeks, kata-kata dipisahkan spasi).
Jika panjang kata kurang darin
, gunakanr
untuk kata itu.
Contoh:f("this is a test sentence foo bar baz", 2, "-")
=>"i--snorz"
Mencetak gol
Skor Anda adalah jumlah jumlah karakter dari program Anda. Untuk setiap bahasa yang diulang, kalikan dengan 110%. Misalnya, jika Anda memiliki tiga solusi Ruby, dan jumlah karakter total dari semua solusi Anda adalah 1000, skor Anda adalah 1000 * 1.1 * 1.1 = 1210. Bulatkan jika Anda memiliki skor non-integer.
Semoga berhasil!
code-challenge
string
multiple-holes
Gagang pintu
sumber
sumber
_
tidak masalah karena saya menentukan untuk tidak memasukkannya. Saya telah mengedit untuk mengklarifikasi beberapa yang lain.**foo***bar**baz*
?Jawaban:
Nilai: 382 * 1,1 2 = 462
Bahasa cenderung berubah.
1. APL,
84Terima kasih @marinus karena telah memangkas 4 karakter.
Disebut dengan string sebagai argumen kiri dan kanan, mis.
2. Ruby,
3531Terima kasih @DoorknobofSnow untuk mencukur 4 karakter.
3. Python, 48
4. GolfScript, 20
Diasumsikan bahwa argumen ada di tumpukan. Tes online
5. J, 50
Dipanggil dengan string sebagai argumen kiri dan angka sebagai kanan, mis.
6. Ruby, 61
7. GolfScript,
393534Sekali lagi, anggap argumennya ada di stack. Tes online
8. Perl, 98
9. Haskell, 36
sumber
f=->s,r{...}
) alih-alih fungsi. Saya menolak untuk memperbaiki suara sampai selesai, meskipun: PPython - 697 × 1.1 9 ≈ 1644
Astaga, saya sangat suka lambda.
Catatan : 3 dan 5 disalin tanpa malu-malu dari jawaban Volatility , karena saya tidak dapat menemukan alternatif yang lebih baik. Juga, ini dilakukan hanya untuk bersenang-senang .
EDIT : Terima kasih kepada Volatility untuk tipsnya
sumber
int
, karena boolean adalah subkelas dari mereka, dan untuk 7.all([...])
dapat disingkat menjadix.replace(' ','').isdigit()
a
.Nilai 513 * 1,1 5 = 826
Pemukulan yang cukup dengan hukuman bahasa yang sama. Memecahkan sebagian besar ini di Ruby hanya untuk menyelesaikannya secepat mungkin. Mungkin mengubah beberapa bahasa nanti. Menambahkan rekap kecil / penjelasan pada setiap jawaban.
1: Python (46)
Pertama, jawaban yang lebih pendek di Ruby 2.0 (30) yang memberikan penalti lebih banyak dan skor keseluruhan lebih tinggi:
2: Ruby 1.9+ (37)
Mengembalikan setiap baris yang
s
diawali dengant
:3: Ruby 1.9+ (48)
Kembali
s
dengan tab yang digantin
spasi atau sebaliknya, tergantung padab
:4: Ruby 1.9+ (95)
Seseorang tembak aku.
5: Ruby 1.9+ (58)
Mengembalikan karakter paling umum
n
dalams
:6: J (47)
Entah bagaimana teksnya; Tanpa malu-malu mencuri kata demi kata dari marinus :
7: Ruby (57 +1)
Mencetak input ASCIIfied atau de-ASCIIfied. Jalankan dengan
-p
sakelar.8: Sed (87)
Mencetak input yang dikonversi dari markdown (mini) ke HTML:
9 Ruby 1.9+ (37)
Mengembalikan string
n
karakter ke - th dari setiap kata pertama dis
, ataur
:sumber
<b>test** **test2</b>
untuk**test** **test2**
?**foo *bar* baz**
?-
operator kode ruby pertama bekerja dengan enumerator?Bekerja dalam proses
1. Java - 66
2. Java - 64
3. Python - 58
4. Python - 84
5.
6.
7. Befunge 98 - 9
8.
9.
sumber
for(char c:b.toCharArray())
danreplace(c+"","");
danreturn s.length();
(atau sesuatu seperti itu) untuk membuatnya bekerja.