Banyak dari Anda mungkin telah berinteraksi dengan orang-orang dari Rusia di internet pada suatu saat, dan sebagian dari Anda mungkin telah memperhatikan metode yang sedikit aneh dalam mengekspresikan diri mereka.
misalnya удали игру нуб)))
di mana )))
ditambahkan untuk penekanan pada pernyataan sebelumnya, saya telah bekerja pada teori bahwa rasio )
's ke seluruh string secara langsung sebanding dengan jumlah penekanan tersirat, namun saya seringkali merasa sulit untuk menghitung rasio on the fly, karena saya juga mencoba untuk mengatasi berbagai penyalahgunaan, jadi saya ingin kode sesingkat mungkin untuk membantu saya menghitung apa yang seharusnya dihasilkan string, untuk nilai antusiasme antara 0 dan 500%, mengingat yang asli , string tidak antusias, ini akan sangat membantu penelitian saya karena saya tidak perlu mengetikkan skrip besar setiap kali saya ingin menguji hipotesis saya.
Jadi, tantangannya:
menulis program atau fungsi lengkap, yang, menyediakan dua argumen, string dengan panjang yang tidak diketahui, dan angka, dalam format bilangan bulat (antara 0 dan 500) atau dalam format desimal (antara 0 dan 5, dengan 2 titik akurasi) akan
- kembali / menampilkan string asli, akhiran dengan sejumlah
)
's - angka akan dihitung sebagai rasio dari jumlah input dengan panjang string.
- jadi jika jumlah 200, atau 2,00 diberikan, 200% dari string harus suffixed sebagai
)
's - jumlah tanda kurung dibulatkan ke dalam situasi desimal tidak masalah.
- diperlukan skrip untuk mendukung karakter ASCII yang Dapat Dicetak.
- hanya perlu mendukung satu format nomor input, pilihan Anda.
Contoh:
"codegolf" 125 = codegolf))))))))))
"codegolf" 75 = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99 = hi!)))))))))))))))
Kode contoh (PowerShell) (dengan input desimal):
Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
$StrLen = $InputStr.Length
$SuffixCount = $StrLen * $Ratio
$Suffix = [string]::New(")",$SuffixCount)
return $InputStr + $Suffix
}
Get-RussianString "codegolf" 0.5
codegolf))))
Ini adalah kode-golf sehingga kode terpendek menang!
)
untuk penekanan seperti!
? Apakah ini masalah pengodean?!
s, tapi mereka mengetiknya apa adanya, itu tidak super umum, tapi itu cukup ikon.)
adalah pengurangan emotikon:)
. Ini digunakan sangat umum di kalangan anak muda sejauh yang saya tahu.)
bukan penekanan, itu hanya smiley. Sejauh yang saya tahu, lebih sulit untuk mengetik:
ketika menggunakan tata letak keyboard Rusia, karena itu mereka tersenyum tanpa mata.:
di tata letak Rusia (ЙЦУКЕН) seperti halnya mengetik^
di QWERTY. Tapi memang, itu)
adalah versi pengurangan:)
. Jauh lebih mudah untuk menekan dan menahan Shift-0 daripada berulang kali tombol alternatif.Jawaban:
Jelly , 7 byte
Cobalah online!
Menggunakan format desimal.
Bagaimana?
sumber
Perl 6, 21 byte
sumber
Gangguan umum,
595250Tanda kurung? Saya masuk
Detail
Memformat string kontrol
~a
: argumen print cantik (di sini string yang diberikan)~v@{...~}
: blok iterasi, terbatas pada iterasi V, di mana V diambil sebagai argumen, yaitu(* ...)
ungkapan. Iterasi seharusnya diulang pada daftar, tetapi ketika Anda menambahkan@
pengubah, daftar adalah daftar argumen yang tersisa untuk fungsi format. Harus ada setidaknya satu elemen dalam daftar iterasi (jika tidak kita keluar, mengabaikan V). Itu sebabnya ada argumen tambahan untuk memformat (0).Karena tidak ada elemen dalam daftar yang dikonsumsi oleh format, loop tidak terbatas tetapi untungnya, itu juga dibatasi oleh V, alias jumlah tanda kurung yang akan dicetak.
Sunting: terima kasih kepada Michael Vehrs untuk menunjukkan bahwa tidak perlu membulatkan argumen numerik (pertanyaannya memungkinkan untuk memotong / membulatkan apa pun yang kita inginkan, sehingga perilaku default berfungsi di sini).
sumber
format
menerima argumen desimal kev
. Mungkin Common Lisp juga melakukannya?format
accepts ...", karena Skema standarformat
tidak mendukung~r
; dan Guileformat
mengikuti contoh Common Lisp.JavaScript ES6,
383130 bytesumber
s=>n=>s+')'.repeat(s.length*n)
(nanti akan disebut sepertif("hi!")(4.99)
)Python 2 , 29 byte
s dalam string, p adalah persentase (integer).
Cobalah online!
sumber
05AB1E ,
98 byteCobalah online!
Berfungsi untuk integer dan desimal, urutan argumen:
f(String, Double)
sumber
ï
dilakukan secara implisit untuk×
dengan argumen float.Python, 30 byte
Menggunakan input desimal.
Cobalah online!
sumber
Pyth, 8 byte
Tes Online! Mengambil rasio kegembiraan terlebih dahulu, kemudian string yang harus diminati.
Penjelasan:
sumber
PowerShell , 33 byte
Cobalah online!
Mendukung format desimal.
sumber
R,
624642 byteFungsi anonim yang mengambil string
a
dan desimaln
, mencetak output ke stdout.sumber
Pyth, 9 byte
Membawa dua baris input: string dan rasio (desimal).
Cobalah di pyth.herokuapp.com
Penjelasan
A
menunjukkan argumen pertama suatu fungsi, argumenB
keduanya.sumber
TI-Basic, 33 byte
Mengambil input desimal.
sumber
Perl 5, 29 byte
(Angka adalah arg pertama, string adalah yang kedua.)
Cobalah online!
sumber
CJam , 9 byte
Cobalah online!
Masukkan string pada baris pertama, rasio penekanan pada rentang 0 hingga 5 pada baris kedua.
Penjelasan
sumber
MATL,
11108 byteSolusi ini menggunakan bentuk desimal dari input kedua
Cobalah online!
Penjelasan
sumber
sB ~, 17 byte
Dijelaskan:
Kurung ditutup secara otomatis
Inilah output dari kompiler, jika Anda tertarik:
Versi kompiler ini ditulis pada 1/27/2017 pukul 11:12 siang, yang mungkin beberapa menit setelah pertanyaan ini diposting. Jadi, inilah versi yang bekerja pada versi kompiler tertua, yang ditulis satu jam sebelumnya:
iS$,N?S$;')'*(N*l(S$))
(22 byte)sumber
PostgreSQL, 102 byte
Detail
Menggunakan format input integer.
Ini cukup kanan-bantalan string input dengan parens keluar ke panjang target.
Dipanggil dengan
sumber
Bash + coreutils, 45 byte
Cobalah online!
Input integer.
sumber
echo $1`jot -b \) -s '' $[${#1}*$2/100]`
40 byte :) coba sajaGroovy, 27 byte
Solusi mudah
Program uji:
sumber
Rebol, 39 byte
sumber
Clojure, 40 byte
Solusi yang cukup membosankan:
Hanya mengurangi
str
fungsi pada daftar tanda kurung tutup dengan string sebagai parameter awal.Lihat online: https://ideone.com/5jEgWS
Solusi yang tidak terlalu membosankan (64 byte):
Mengkonversi string input ke simbol (untuk menyingkirkan tanda kutip) dan berulang kali berlaku fungsi
list
di atasnya menghasilkan urutan yang tak terbatas seperti ini:(a (a) ((a)) (((a))) ... )
. Mengambilnth
elemen mengubahnya menjadi string dan mengganti semua tanda kurung buka dengan apa-apa.Lihat online: https://ideone.com/C8JmaU
sumber
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")
1 byte lebih sedikit (yay). Saya ingin melakukan comp tetapi tidak bisa mendapatkannya di bawah 70 byte.")"
ke\)
untuk menyimpan byte.SimpleTemplate, 92 byte
Mengambil string sebagai parameter pertama dan "rasio" sebagai parameter kedua.
Rasio antara 0 dan 5, dengan 2 tempat desimal.
Seperti yang Anda lihat, ini tidak optimal.
2 di
{echo}
sana dapat dikurangi menjadi 1.Karena bug di kompiler, kode ini tidak dapat dikurangi lebih jauh.
Tidak Disatukan:
Jika tidak ada bug, kode akan terlihat seperti ini, 86 byte:
sumber
C # Interactive,
7767 byteInteraktif C # itu manis.
sumber
using System;
atau sepenuhnya memenuhi syaratMath
. Juga, tidak yakin apakah Anda dapat melakukannya secara interaktif, tetapi Anda dapat mengkompilasi ke aFunc<string, Func<int, string>>
untuk menyimpan byte yaitus=>p=>s+new...
Math.Round
hanya melakukan panggilan keint
seharusnyaFloor
dan OP mengatakan salahFloor
atauCeiling
baikSmileBASIC, 29 byte
sumber
3*4.99
=14.97
, hanya14
atau15
akan diterima sebagai jawaban, versi 29 byte seharusnya berfungsi dengan baik, maaf!Gol> <> (Golfish), 17 byte
Coba di sini .
Baris teratas membaca karakter (
i
) hingga menemukan baris baru (ASCII 10,a
), lalu turun (v
).Kemudian kita membuang satu karakter (baris baru) dengan
~
, mendorong panjang tumpukan (l
), membaca float (I
), mengalikan keduanya, dan berulang kali (R
) mendorong karakter ")" yang berkali-kali. Akhirnya, balikkan tumpukan (r
), keluarkan dan hentikan (H
).sumber
PHP, 50 byte
mengambil string dan angka desimal sebagai argumen baris perintah; memotong padding. Jalankan dengan
-r
;kerusakan
sumber
Ruby, 25 byte
Saya menggunakan lambdas . Program pengujian akan menjadi seperti:
sumber
Clojure, 68 byte
Fungsi anonim yang menerima input desimal.
Secara harfiah program Lisp pertama yang pernah saya tulis! Saya sudah bersenang-senang.
sumber
#(...)
, dan Anda dapat menyingkirkannyaprint
(karena pengembalian fungsi harus dapat diterima). Anda dapat mengubahreduce
keapply
untukstr
fungsi, dan Anda dapat mengubah")"
ke\)
, yang melakukan hal yang sama. Jadi, kode akhir harus:#(str %(apply str(repeat(*(count %)%2)\)))))
.(#(...) "codegolf" 125)
harus menambahkan 125 persen dari panjang "codegolf" bukannya 125 kali panjang "codegolf". Jadi, program tetapnya#(str %(apply str(repeat(*(count %)%2 1/100)\))))
adalah:, yaitu 49 byte.C ++ 14, 43 byte
Sebagai lambda tanpa nama yang memodifikasi inputnya, asumsi
s
serupa denganstd::string
(memiliki.append(int,char)
dan dengan asumsip
tipe floating point:Pemakaian:
sumber
Haskell , 37 byte
Cobalah online! Pemakaian:
"codegolf" ! 125
Versi yang menggunakan angka desimal: (41 byte)
Cobalah online! Pemakaian:
"codegolf" ! 1.25
sumber