プログラミングのお題スレ Part22 (863レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
485(20): デフォルトの名無しさん [] 01/22(水)21:35 ID:JtEnwxKE(1)
お題
文字列と長さを入力として受け取り
デカルト積のリストを出力してください
入力:ABC 1
出力:[A, B, C]
入力:ABC 2
出力:[AA, AB, AC, BA, BB, BC, CA, CB, CC]
入力:ABC 3
出力:[AAA, AAB, AAC, ABA, ABB, ABC, ACA, ACB, ACC, BAA, BAB, BAC, BBA, BBB, BBC, BCA, BCB, BCC, CAA, CAB, CAC, CBA, CBB, CBC, CCA, CCB, CCC]
486(1): デフォルトの名無しさん [sage] 01/22(水)22:43 ID:EHGf/TPZ(1/2)
>>485
Rust
fn odai(文字列: &str, 長さ: usize) -> Vec<String> {
use itertools::Itertools;
(0..長さ)
.map(|_| 文字列.chars())
.multi_cartesian_product()
.map(String::from_iter)
.collect()
}
fn main() {
assert_eq!(odai("ABC", 1), ["A", "B", "C"]);
assert_eq!(odai("ABC", 2), ["AA", "AB", "AC", "BA", "BB", "BC", "CA", "CB", "CC"]);
assert_eq!(odai("ABC", 3), ["AAA", "AAB", "AAC", "ABA", "ABB", "ABC", "ACA", "ACB", "ACC", "BAA", "BAB", "BAC", "BBA", "BBB", "BBC", "BCA", "BCB", "BCC", "CAA", "CAB", "CAC", "CBA", "CBB", "CBC", "CCA", "CCB", "CCC"]);
}
487: デフォルトの名無しさん [sage] 01/22(水)23:18 ID:dYX3B7ea(1)
>>485 ruby
https://ideone.com/EA8orq
f = ->(s, n) {:product.to_proc.(*[s.chars]*n).map(&:join)}
488: デフォルトの名無しさん [sage] 01/22(水)23:57 ID:EHGf/TPZ(2/2)
>>485
Rust 今回は積ライブラリを使わない自力版
fn odai(文字列: &str, 長さ: usize) -> Vec<String> {
let chars = 文字列.chars().collect::<Vec<_>>();
let mut state = vec![0; 長さ];
let mut output = Vec::new();
'Loop: loop {
let s = state.iter().map(|i| chars[*i]).collect();
output.push(s);
for index in state.iter_mut().rev() {
*index += 1;
if *index == chars.len() {
*index = 0;
continue;
}
continue 'Loop;
}
return output;
}
}
検証用main()は>>486と同じ
489: デフォルトの名無しさん [] 01/23(木)18:33 ID:hcg9tgUx(1)
>>485
JavaScript
const prod = function* (str, len, buf = [])
{
if (len > 0)
{
for (let i = 0; i < str.length; i++)
{
buf.push(str[i]);
yield* prod(str, len - 1, buf);
buf.pop();
}
}
else
{
yield buf.join("");
}
};
for (let n = 1; n < 4; n++)
{
console.log([...prod("ABC", n)]);
}
490: デフォルトの名無しさん [sage] 01/23(木)20:05 ID:naue5Hlh(1)
>>485 ocaml
https://ideone.com/hEQ0UI
>>485 octave
https://ideone.com/Hga7TO
491: 9 [sage] 01/24(金)01:44 ID:p08ruAfw(1)
>>485 Perl5
for $n (1..3) {
@cp = @s = qw(A B C);
while(--$n) { @cp = map{ $p = $_; map{ "$p$_" } @s } @cp }
print "@cp\n";
}
※見易くするためインデントは全角スペースに置換してあります
実行結果
~ $ perl 22_485_CartesianProd.pl
A B C
AA AB AC BA BB BC CA CB CC
AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA BAB BAC BBA BBB BBC BCA BCB BCC CAA CAB CAC CBA CBB CBC CCA CCB CCC
493(1): デフォルトの名無しさん [sage] 01/24(金)20:04 ID:kDOvSp0D(1)
>>485 dart
https://ideone.com/nZXS5G
>>485 rust
https://ideone.com/07rym1
496: デフォルトの名無しさん [sage] 01/25(土)21:23 ID:KM9w0vp0(1)
>>485 c
https://ideone.com/7DAmou
・バッファに取る版
>>485 c
https://ideone.com/irBE3p
・バッファに取らない版
・表示するだけ
497: デフォルトの名無しさん [] 01/26(日)14:07 ID:nBBaggrk(1)
>>485
Java
https://paiza.io/projects/W5rymKHMXkZgp2ID0-tfMg
498: 493 [sage] 01/26(日)15:22 ID:dl7YvN1C(1)
>>485 dart
https://ideone.com/WtkLVE
・若干の簡略化
>>485 rust
https://ideone.com/VXyvY2
・若干の簡略化?
499: デフォルトの名無しさん [sage] 01/27(月)00:00 ID:/Jqezixy(1)
>>485 java
https://ideone.com/H7Pti7
505: デフォルトの名無しさん [sage] 01/27(月)21:30 ID:l9HsQRRu(1)
>>485 lisp
https://ideone.com/Hiqt3o
>>500 lisp
https://ideone.com/eRqGSp
550: 警備員[Lv.19] [] 02/09(日)03:18 ID:Y8d2noVo(1/2)
>>485
Kotlin
https://paiza.io/projects/RtyGxT2PXZScHW6eucI5ng
553: デフォルトの名無しさん [] 02/09(日)21:29 ID:do9MXosP(1/3)
>>485
R
https://ideone.com/wuW5oV
557: デフォルトの名無しさん [] 02/10(月)21:24 ID:KgR1Tipz(1)
>>485
C# (IEnumerableとして列挙)
https://ideone.com/UBY8bl
835(1): デフォルトの名無しさん [sage] 09/08(月)23:02 ID:4SI/cFAg(1/2)
>>485 scheme (chicken 4.13)
https://ideone.com/feYtNB
>>500 scheme (chicken 4.13)
https://ideone.com/Svhv1y
836(1): 835 [sage] 09/08(月)23:33 ID:4SI/cFAg(2/2)
>>485 scheme (chicken 4.13)
https://ideone.com/ejvKat
・(product . lists)
・(product xs . rest) が >>835
839(1): 836 [sage] 09/10(水)22:49 ID:NV1RL9MH(1)
>>485 scheme (chicken 4.13)
https://ideone.com/g8wtFG
・デカルト積の解釈を(勝手に)変更
840(1): 839 [sage] 09/10(水)23:35 ID:6JfM8ZLf(1)
>>485 scheme (chicken 4.13)
https://ideone.com/A6K3XL
・(cons y x)して最後にreverseする
・(list x y)して最後にflattenするのが >>839
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s