Dalam salah satu proyek kami di tempat kerja, kami baru-baru ini menemukan metode yang sangat besar untuk menghasilkan string 6 karakter dari alfabet 15 karakter. Beberapa dari kita mengklaim "Saya yakin kita bisa mendapatkannya dalam satu baris" yang memulai permainan internal kecil kode golf.
Tugas Anda adalah mengalahkan kami, yang saya yakin tidak akan butuh waktu lama!
Algoritma asli menggunakan alfabet 0-9A-E, tetapi kami telah bereksperimen dengan huruf lain. Karena itu ada tiga subtugas.
- Hasilkan a
6
string karakter secara acak memilih dari15
alfabet karakter hardcod sewenang-wenang sepertiABC123!@TPOI098
. (Ini hanya contoh, dan harus disesuaikan tanpa mempengaruhi jumlah byte.) - Hasilkan a
6
string karakter secara acak dari15
alfabet karakter0123456789ABCDE
. - Hasilkan a
6
string karakter secara acak memilih dari15
alfabet karakter pilihan Anda (hanya karakter yang dapat dicetak).
Setiap karakter harus memiliki kesempatan yang sama untuk seleksi dan pengulangan harus dimungkinkan.
Yang terbaik yang dapat kami kelola untuk masing-masing subtugas adalah:
- "ABC123! @ TPOI098" -
24 bytes
- "0123456789ABCDE" -
21 bytes
- Alfabet khusus -
13 bytes
Skor Anda adalah jumlah byte dalam setiap solusi subtugas. yaitu skor kami saat ini 58.
Kami telah mencoba menggunakan antara lain, CJam dan Ruby. Aslinya ada di C #. Gunakan bahasa apa pun yang Anda suka, tetapi kami akan tertarik untuk melihat solusi dalam bahasa ini khususnya
sumber
Jawaban:
Jelly , 38 byte
TryItOnline link A , B , dan C .
A :
ABC123!@£POI098
, 22 bytes(Memikirkan kompresi untuk mengurangi yang ini)
B :
0123456789ABCDE
, 8 byte:C :
123456789ABCDEF
(pilihan), 8 byte:Bagaimana?
sumber
CJam (23 + 14 + 10 = 47 byte)
Alfabet sewenang-wenang: 23 byte ( demo online )
Alfabet heksadesimal: 14 byte ( demo online )
Alfabet khusus:,
ABCDEFGHIJKLMNO
10 byte ( demo online )Pembedahan
Heksadesimal adalah yang menarik:
Keenam karakter dibiarkan di tumpukan dan dicetak secara otomatis.
sumber
AbHb
brilian. Saya memikirkan pendekatan umum_9>7*+
itu tetapi terlalu lama.Perl, 46 + 26 + 26 = 98 byte
Banyak kredit jatuh ke @Dom Hastings untuk menghemat 13 byte!
3 program ini cukup identik, kecuali untuk alfabet yang berubah.
Alfabet hardcode (
ABC123!@)POI098
dalam contoh ini) -> 46 byte:say map{substr"ABC123!@)POI098",15*rand,1}1..6
Alfabet tetap
0123456789ABCDE
-> 26 byte:printf"%X",rand 15for 1..6
Alfabet khusus
0123456789ABCDE
dalam kasus itu -> 26 byte:printf"%X",rand 15for 1..6
Anda bisa memasukkan semuanya ke dalam file untuk menjalankannya:
(
say "";
hanya ada di sini untuk meningkatkan format output)sumber
say
:say map{("ABC123!@)POI098"=~/./g)[rand 15]}1..6
andsay map{(A..O)[rand 15]}1..6
. Untuk yang kedua Anda dapat menggunakanprintf
:printf"%X",rand 15for 1..6
untuk menyimpan 11 lebih dari semua! Saya yakin Ton dapat menyarankan beberapa sihir misterius untuk menabung lebih banyak juga!substr
menyimpan yang lain:say map{substr"ABC123!@)POI098",15*rand,1}1..6
printf"%X"
,substr..rand
danmap
, itu hanya sedikit kurang jelas, jadi saya membiarkan orang menikmati perl sihir tanpa spoiler! : DR, 33 + 43 + 59 = 135 byte
Alfabet hard-code sewenang-wenang (ubah string untuk mengubah abjad):
Alfabet dari
[0-9A-E]
:Alfabet yang ditentukan pengguna dari stdin:
Semua case mencetak kata output ke stdout.
sumber
JavaScript (ES6),
167166164163 byteDisimpan 1 byte berkat Neil
Disimpan 2 byte berkat ETHproduk yang
disimpan 1 byte berkat premek.v
Hardcoded:
"ABC123!@TPOI098"
(58 bytes)Diperbaiki:
"0123456789ABCDE"
(5857 byte)Khusus:
"()+.1=>?M[afhnt"
(514948 byte)sumber
(n=6)=>n?f(n-1)+("ABCDE"[n=Math.random()*15|0]||n-5):''
menghemat satu byte.1/8+Math
is great :).1+JSON
lebih baik;)JSON+f
([object JSON](n
=>" (JNOS[]bcejnot"
)JavaScript (ES6), 184 byte
Alfabet khusus: 66 byte
0-9A-E: 63 byte
0-9a-e: 55 byte
(Kurangi 6 byte jika keacakan berdasarkan tanggal diizinkan.)
sumber
**
:_=>((Math.random()+1)*15**6|0).toString(15).slice(1)
f=
dalam hitungan byteq, 42 byte
SEBUAH
19 byte
B
14 byte
C
9 byte
(menggunakan lima belas huruf alfabet pertama)
sumber
Julia (36 + 26 + 21 = 83)
sumber
CJam, 48 byte
Alfabet sewenang-wenang, 23 byte:
Cobalah online!
Hex digit, 15 byte:
Cobalah online!
Alfabet
ABCDEFGHIJKLMNO
, 10 byte:Cobalah online!
sumber
~c
alih-alih'A+
mengembalikan sesuatu yang dapat dicetak secara teknis.Ruby 47 + 37 + 31 = 115
Hardcoded: "ABC123! @ TPOI098" (47)
Diperbaiki: "0123456789ABCDE" (37)
Kustom: "ABCDEFGHIJKLMNO" (31)
sumber
05AB1E , 43 byte
Alfabet arbitrry (
ABC123!@TPOI098
), 23 byte Cobalah onlineAlfabet hampir heksadesimal (
0123456789ABCDE
), 10 byte Cobalah secara onlineAlfabet khusus (
abcdefghijklmno
), 10 byte Cobalah onlinesumber
Python 2, 70 + 70 + 64 = 204 byte
Sayangnya, contoh kedua lebih mudah dengan metode pertama daripada sesuatu seperti
choice([randint(48,57)),choice(65,69)])
sumber
from random import*
? Saya pikir Anda dapat menggunakanimport random
danrandom.choice
setidaknya dalam dua contoh pertama.import random random.choice
adalah 27 tetapifrom random import* choice
26, jugaimport random as r r.choice
27format(randrange(8**8),'X')
, saya pikir.F
Vitsy, 27 +
2422 +1310 =646259 byte# 1:
Cobalah online!
# 2:
Cobalah online!
# 3:
Di mana karakter yang tersedia adalah:
Cobalah online!
sumber
J, 24 + 24 +
1810 = 58 byte8 byte disimpan berkat mil!
Ya, string kedua tidak mudah kompresibel dalam J:
Jika alfabet heks huruf kecil baik-baik saja, maka ada
,hfd?6#15
untuk 9 byte, seperti yang dicatat @miles.Bagaimanapun,
?6#15
adalah 6 angka acak antara 0 dan 15;{~
adalah take-from.u:
mengonversi angka menjadi karakter. Contoh terakhir mengkodekanABCDEFGHIJKLMNOP
.Bonus: kasus umum
{~6?@##
kira-kira:sumber
hfd
yang mengkonversi ke h ex f rom d ecimal. Anda bisa mendapatkan solusi 9 byte menggunakan,hfd?6#15
. Kasus terakhir, hanya untuk memiliki sesuatu yang mudah dibaca, menggunakan alfabet dari'A'
untuk solusi 10 byteu:65+?6#15
, membuat total 24 + 9 + 10 = 45.PHP, 46 + 36 + 35 = 117 byte
Hardcoded (46 byte)
(47 byte)Heksadesimal (huruf kecil) (36 byte)
Untuk huruf besar, 46 byte dengan versi Hardcoded.
Ubahsuaian (AO) (35 byte)
sumber
Scala, 154 byte
Alfabet hardcode (54 byte):
Alfabet heksa (54 byte):
Alfabet khusus
ABCDEFGHIJKLMNO
(47 byte):Penjelasan:
'A'to'O'
menciptakan urutan 15 karakter, A hingga Osumber
Pip , 42 byte
Alfabet hardcode, 22 byte:
Hex digit, 11 byte:
15 huruf kecil pertama, 9 byte:
Penjelasan
Ketiga program dimulai dengan
L6O
: loop 6 kali dan output ekspresi yang diberikan.RC"..."
: Pilihan acak karakter dari string yang dikodekan kerasRR15TB16
: RandRange (15), dikonversi ke Base 16z@RR15
: huruf kecilz
, diindeks dengan RandRange (15)Cobalah online!
sumber
Skript / skQuery , 108 byte
Hardcoded (43 byte):
0123456789ABCDE (34 byte):
Pilihan (31 byte):
sumber
`
ke kiri?Jolf, 26 + 14 + 13 = 51 byte
Alfabet khusus, 24 byte. Coba di sini!
Alfabet 0-9A-E, 14 byte. Coba di sini!
lp^0wά
adalahlp
(0-Z) diiris (l
) dari0
ke15
(wά
).Alfabet 1-9A-F, 13 byte. Coba di sini!
lp^1ά
sama dengan di atas, kecuali dari1
ke16
.Metode umum:
Upaya lain (menggunakan kompresi string):
sumber
PowerShell v2 +, 45 + 44 + 37 = 126 byte
Memperbaiki alfabet, 45 byte
Alfabet hampir heksadesimal, 44 byte
Alfabet khusus (A ke O), 37 byte
Semua ini mengikuti pola yang sama - loop dari
0
ke5
, setiap iterasi memilihRandom
karakter atau nilai ASCII, casting itu sebagaichar
-array jika perlu, dan-join
memasukkannya bersama-sama ke dalam string. String itu ditinggalkan di pipeline, dan output tersirat.Contohnya
sumber
Pyke, 35 byte
Alfabet arbiter, 20 byte
Coba di sini!
Alfabet hex, 8 byte
Coba di sini!
Alfabet khusus, 7 byte
Coba di sini!
Alfabet yang dipilih:
abcdefghijklmno
sumber