プログラミングのお題スレ Part22 (859レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
485(20): デフォルトの名無しさん [] 2025/01/22(水) 21:35:12.82 ID:JtEnwxKE(1) AAS
お題
文字列と長さを入力として受け取り
デカルト積のリストを出力してください
入力: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] 2025/01/22(水) 22:43:43.59 ID:EHGf/TPZ(1/2) AAS
>>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] 2025/01/22(水) 23:18:53.24 ID:dYX3B7ea(1) AAS
>>485 ruby
外部リンク:ideone.com
f = ->(s, n) {:product.to_proc.(*[s.chars]*n).map(&:join)}
488: デフォルトの名無しさん [sage] 2025/01/22(水) 23:57:13.34 ID:EHGf/TPZ(2/2) AAS
>>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: デフォルトの名無しさん [] 2025/01/23(木) 18:33:06.01 ID:hcg9tgUx(1) AAS
>>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] 2025/01/23(木) 20:05:23.84 ID:naue5Hlh(1) AAS
>>485 ocaml
外部リンク:ideone.com
>>485 octave
外部リンク:ideone.com
491: 9 [sage] 2025/01/24(金) 01:44:22.46 ID:p08ruAfw(1) AAS
>>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] 2025/01/24(金) 20:04:46.59 ID:kDOvSp0D(1) AAS
>>485 dart
外部リンク:ideone.com
>>485 rust
外部リンク:ideone.com
496: デフォルトの名無しさん [sage] 2025/01/25(土) 21:23:47.57 ID:KM9w0vp0(1) AAS
>>485 c
外部リンク:ideone.com
・バッファに取る版
>>485 c
外部リンク:ideone.com
・バッファに取らない版
・表示するだけ
497: デフォルトの名無しさん [] 2025/01/26(日) 14:07:38.91 ID:nBBaggrk(1) AAS
>>485
Java
外部リンク:paiza.io
498: 493 [sage] 2025/01/26(日) 15:22:46.05 ID:dl7YvN1C(1) AAS
>>485 dart
外部リンク:ideone.com
・若干の簡略化
>>485 rust
外部リンク:ideone.com
・若干の簡略化?
499: デフォルトの名無しさん [sage] 2025/01/27(月) 00:00:51.14 ID:/Jqezixy(1) AAS
>>485 java
外部リンク:ideone.com
505: デフォルトの名無しさん [sage] 2025/01/27(月) 21:30:57.80 ID:l9HsQRRu(1) AAS
>>485 lisp
外部リンク:ideone.com
>>500500(11): デフォルトの名無しさん [] 2025/01/27(月) 09:16:22.69 ID:rqFJtGlJ(1) AAS
お題
入力された文字列から重複する文字を抽出してください
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
lisp
外部リンク:ideone.com
550: 警備員[Lv.19] [] 2025/02/09(日) 03:18:28.07 ID:Y8d2noVo(1/2) AAS
>>485
Kotlin
外部リンク:paiza.io
553: デフォルトの名無しさん [] 2025/02/09(日) 21:29:55.65 ID:do9MXosP(1/3) AAS
>>485
R
外部リンク:ideone.com
557: デフォルトの名無しさん [] 2025/02/10(月) 21:24:31.20 ID:KgR1Tipz(1) AAS
>>485
C# (IEnumerableとして列挙)
外部リンク:ideone.com
835(1): デフォルトの名無しさん [sage] 2025/09/08(月) 23:02:49.14 ID:4SI/cFAg(1/2) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
>>500 scheme (chicken 4.13)
外部リンク:ideone.com
836(1): 835 [sage] 2025/09/08(月) 23:33:25.73 ID:4SI/cFAg(2/2) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・(product . lists)
・(product xs . rest) が >>835
839(1): 836 [sage] 2025/09/10(水) 22:49:33.81 ID:NV1RL9MH(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・デカルト積の解釈を(勝手に)変更
840(1): 839 [sage] 2025/09/10(水) 23:35:38.95 ID:6JfM8ZLf(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・(cons y x)して最後にreverseする
・(list x y)して最後にflattenするのが >>839
841: 840 [sage] 2025/09/11(木) 23:05:23.09 ID:WPUXbxYH(1) AAS
>>485 scheme (chicken 4.13)
外部リンク:ideone.com
・reverse回数減らした版
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.045s