SPESIFIKASI
m
Variabel yang diberikan , buat setiap kombinasi hingga sesuai pesanan n
. Sebagai contoh,
Output dari pemetaan dua variabel ( a
dan b
) sesuai pesanan 1
adalah:
- Sebuah
- b
- ab
Output dari pemetaan dua variabel ( a
dan b
) sesuai pesanan 2
adalah:
- Sebuah
- a 2
- b
- b 2
- ab
- a 2 b
- ab 2
- a 2 b 2
Output dari pemetaan dua variabel ( a
dan b
) sesuai pesanan 3
adalah:
- Sebuah
- a 2
- a 3
- b
- b 2
- b 3
- ab
- a 2 b
- a 3 b
- a 3 b 2
- ab 2
- ab 3
- a 2 b 3
- a 2 b 2
- a 3 b 3
Output dari pemetaan tiga variabel ( a
, b
, dan c
) untuk memesan 1
akan menjadi:
- Sebuah
- b
- c
- ab
- bc
- ac
- abc
Output dari m
variabel pemetaan yang n
akan dipesan adalah:
- dll.
KRITERIA PEMENANG
Keluarkan setiap kombinasi yang mungkin seperti diuraikan di atas. Urutan tidak masalah. Di mana dalam kode Anda Anda mencetak ke layar tidak masalah. Yang penting adalah apa yang muncul di output Anda sudah benar.
code-golf
arithmetic
code-golf
code-golf
string
chemistry
code-golf
code-golf
code-golf
string
code-golf
string
parsing
code-golf
counting
pengguna1873073
sumber
sumber
^
?m
lebih besar dari 26? apakah kita harus mendukung nilai yang setinggi itu?given m variables
menyiratkan daftar variabel akan diberikan. Jika hanya jumlah variabel yang diberikan dan 0,1,2,3..27,28,29 dinaikkan menjadi pangkat ^ 0, ^ 1, ^ 2 dll adalah output yang dapat diterima (seperti yang saya simpulkan dari komentar terakhir Anda) itu membuat segalanya lebih mudah.Jawaban:
Brachylog , 6 byte
Mengambil input sebagai pasangan, berisi daftar variabel dan urutan. Output adalah daftar daftar variabel, di mana kekuatan diwakili oleh variabel yang berulang. (mis. "a²b" adalah ["a", "a", "b"])
Cobalah online!
j₎
bergabung dengan input pertama dengan dirinya sendiri sebanyak yang dinyatakan oleh input kedua.o
memesan daftar yang diperoleh, dan kemudian⊇ᵘ
menemukan semua himpunan bagian yang unik dari daftar yang dipesan itu. Akhirnya, kami menghapus elemen pertama denganb
, karena ini akan selalu menjadi jawaban kosong, yang tidak direnungkan oleh tantangan.sumber
L A T E X, 354 byte
Ketika saya melihat ini, saya tahu itu harus dilakukan dalam Lateks. Persamaan terlihat sangat tajam dan bersih dalam Lateks dan saya tidak tahan menggunakan
^
listrik.Penjelasan
Ada tiga kekuatan utama yang bekerja di sini
\typein
yang memungkinkan kita untuk mengambil input dari baris perintah,intcalc
paket yang memungkinkan kita untuk membuat perhitungan dengan variabel kita, danequation
lingkungan Lateks .Setelah kami memasukkan input, kami memulai satu putaran, kami mengulang
\intcalcPow{\b+1}{\a}
kali, satu kali untuk setiap hasil yang ingin kami cetak. Setiap loop kita memulai suatuequation
lingkungan dan loop melalui alfabet melacak\y
untuk huruf saat ini dan\i
untuk jumlah berjalan saat ini. Jika\i
lebih besar atau sama dengan\a
kita tidak mencetak apa-apa sama sekali (menurut spesifikasi ini tidak sepenuhnya diperlukan namun Lateks akan meluap untuk nilai lebih dari 1 jika kita tidak melakukan ini). Kami kemudian mencetak\y
ke persamaan kami dan menaikkannya ke kekuatanSeluruh kekacauan itu berarti mengambil
\i
digit ke\x
dalam basis\b+1
. Ini memastikan bahwa kekuatan diterjemahkan dengan benar.Contoh output:
Ini adalah output untuk 3, 2
sumber
Mathematica,
5150 byteMengasumsikan "
m
variabel yang diberikan " berarti input pertama adalah daftar variabel.Jika input pertama adalah bilangan bulat, 69 byte
Variabel dalam bentuk
$<integer>
(misalnya$5
)sumber
PowerRange
adalah suatu hal! Saya setuju dengan interpretasi kiriman pertama Anda btwHaskell,
71585453 byteMengembalikan daftar string dan menggunakan format output
"aabbb"
untuk"a^2 b^3"
.Contoh penggunaan:
3 # "ab"
->["b","bb","bbb","a","ab","abb","abbb","aa","aab","aabb","aabbb","aaa","aaab","aaabb","aaabbb"]
. Cobalah online! .Banyak byte yang dihabiskan untuk memformat output. Output yang lebih fleksibel, mis. Pasangan (variabel, daya) ->
[('a',2),('b',3),('c',1)]
untuk"a^2 b^3 c^1"
akan menghemat banyak.Bagaimana itu bekerja
Dengan fleksibilitas maksimum, yaitu format keluaran sebagai pasangan (variabel, daya) dan termasuk semua daya nol (
"a^0 b^0 c^0"
) itu bermuara padaHaskell, 25 byte:
Contoh penggunaan
f 2 "ab"
::Menjatuhkan semua-nol kekuasaan biaya 5 bytes untuk total 30:
f n=tail.mapM((<$>[0..n]).(,))
.sumber
[('a',0),('b',0)]
jangan di output ...a^0 b^0
biaya 5 byte. Saya akan menambahkan catatan lain.Jelly ,
2017 byteTautan diad (fungsi) yang menerima daftar nama variabel * dan urutan maksimal (bilangan bulat) dan mengembalikan daftar di mana setiap entri adalah representasi penuh dari perkalian (mis. Foo 0 bar 3 bof 2 akan menjadi
['bar', 'bar', 'bar', 'bof', 'bof']
.* nama variabel dapat berupa string karakter unik (string menjadi daftar karakter).
Cobalah online! - footer menyebut tautan sebagai angka dua dan kemudian memisahkan daftar daftar yang dihasilkan oleh umpan baris dan setiap entri berdasarkan spasi untuk kemudahan membaca.
Catatan: termasuk 0 pesanan (produk kosong) dequeue
Ḋ
,, dapat dimasukkan di sini...ŒPḊç...
untuk menghindari itu.Bagaimana?
Versi 13 byte yang hanya akan berfungsi untuk string tunggal karakter unik (atau daftar karakter unik):
Cobalah
sumber
JavaScript (proposal ES), 142 byte
Memerlukan browser dengan keduanya
**
danpadStart
dukungan, jadi cobalah Firefox 52 atau Chrome 57.sumber
Mathematica 100 byte
Tentunya ada cara yang lebih efisien untuk mencapai ini!
Dua variabel untuk dipesan 4:
sumber
Bash + sed, 60
Pendekatan berbeda, lebih pendek untuk jawaban saya sebelumnya.
Input sebagai parameter baris perintah -
m
diberikan sebagai daftar nama variabel yang dipisahkan koma, dann
sebagai integer:Cobalah online .
Jawaban sebelumnya:
Bash + coreutils, 91
Selamat datang di neraka eval-escape-brace. Terkadang shell-script benar-benar memberikan alat yang tepat untuk pekerjaan itu. Ini tidak terjadi di sini, tetapi berhasil.
Input sebagai parameter baris perintah -
m
diberikan sebagai daftar nama variabel yang dipisahkan koma, dann
sebagai integer. Keluaran ditulis tangan - mis.a^2
Sebenarnya ditulisaa
. Ini dapat diterima sesuai komentar ini .Mungkin ada cara yang lebih pendek untuk melakukan ini.
Cobalah online .
Penjelasan
printf -vc {%$[$2-1]s}
menugaskan variabelc
ke string seperti{ }
, di mana jumlah spasi adalah urutann
- 1, jadi jikan
= 1, hasilnya adalah{}
, jikan
= 2, hasilnya adalah{ }
, dll.${a[$1]}
digunakanm
sebagai indeks ke arraya
, jadi jikam
3, maka hasilnya adalahc
\{{a..${a[$1]}}${c// /,}\\,}
adalah ekspansi brace multi-bagian:\{
- literal{
{$1}
adalah a adalah perluasan penjepit dari daftarm
, misalnya{a,b,c}
ataua b c
${c// /,}
menggantikan spasi$c
dengan koma, misalnya{,,}
untukn
= 3, yang juga merupakan ekspansi penjepit yang secara efektif mengulangi setiap elemen{a..c}
n
kali\\\,}
- literal,}
m
= "a, b" dann
= 2, ini berkembang menjadi{a,} {a,} {b,} {b,}
printf
menghilangkan ruang untuk memberi{a,}{a,}{b,}{b,}
, yang itu sendiri merupakan perluasan penjepitaabb aab aab aa abb ab ab a abb ab ab a bb b b
printf
menempatkan masing-masing elemen ini pada garisnya sendirisort -u
menghapus duplikattr -d {}
sana untuk menangani kasus ketikan
= 1. Dalam hal ini variabelc
akan{}
yang bukan merupakan ekspansi penjepit, tetapi karakter literal dimasukkan. Thetr
menghapus mereka.eval
s dan\
lolos ditempatkan sangat hati-hati untuk memastikan bahwa semua ekspansi terjadi dalam urutan yang diperlukan.sumber
Röda ,
494846 byteCobalah online!
Saya pikir itu benar. Itu tidak menggunakan pemisah antara variabel dan urutannya. Versi sebelumnya digunakan
!
, tetapi saya menyadari bahwa itu tidak sepenuhnya diperlukan.Dijelaskan:
sumber
Python, 112 byte
Pemakaian:
Keluaran:
Format yang lebih bagus dalam 115 byte :
Output (penggunaan yang sama):
Bahkan lebih bagus dalam 125 byte :
Keluaran:
4 byte terakhir (
[1:]
) semuanya adalah untuk menghapus produk kosong.Ini bekerja di kedua Python 2 dan 3.
sumber
C ++ 14,
146140 byte-6 byte untuk format output yang lebih sederhana.
Lambda yang tidak disebutkan namanya, dengan asumsi input
s
sepertistd::string
dano
sebagaistd::ostream
:Penggunaan dan penjelasan:
Keluaran:
sumber