プログラミングのお題スレ Part22 (857レス)
前次1-
抽出解除 レス栞

229: 226 [sage] 2024/02/09(金) 22:33:42.16 ID:JDB9tF7l(1) AAS
>>226
226(1): 225 [sage] 2024/02/06(火) 22:07:13.88 ID:6T/Xuns0(1) AAS
>>206 rust
外部リンク:ideone.com
>>225から若干の修正
・不必要なループ回数を訂正
・二重forを一重に(でもかえって煩雑に)
・まだまだ迷いアリ
 .map(|k| *h.get(k).unwrap())は結局
 .flat_map(|k| h.get(k)).cloned()に置き換え
 こっちのほうが個人的にはスッキリ感アリ

>>206 rust
外部リンク:ideone.com
・上記のmutナシ版
・パフォーマンス的な観点もナシ
すべてruby移植版rust
DでもE見た目派生まとめ

mutあり版
外部リンク:ideone.com // for if return
外部リンク:ideone.com // match find
外部リンク:ideone.com // if let find

mutなし版
外部リンク:ideone.com // for if return
外部リンク:ideone.com // match find
外部リンク:ideone.com // if let find

集合同士の組み合わせに重なりが一個もなかったときに
最後に返す a がポツーンと片隅に居るのが落ち着かなかったので
match/if letで書き直してみたがそれはそれで難があり?
条件部分が奥に入ってしまったのがなんかイヤだったり?
一行目が長くなりすぎる、という理由で二行に分けたり?
やっぱ元のfor if returnのリズムのほうが眼球に入りやすい?
273
(2): デフォルトの名無しさん [sage] 2024/02/22(木) 20:54:45.16 ID:+nyM4OV5(1/2) AAS
>>234
234(27): デフォルトの名無しさん [sage] 2024/02/14(水) 09:32:06.19 ID:JjlrBdlD(1) AAS
お題:数値が入力されるのでその数値に最も近い回分数を出力せよ
回分数とは回分になっている数(負数含まず)のことである
最も近い回分数が2つある場合は2つとも出力せよ

入力 0
出力 0

入力 17
出力 22

入力 100
出力 99
出力 101
ruby
外部リンク:ideone.com
・それっぽい三個の候補から選んでるだけ
294
(1): デフォルトの名無しさん [] 2024/02/28(水) 23:21:09.16 ID:FCtvUtiC(1) AAS
>>282
282(16): ◆QZaw55cn4c [sage] 2024/02/24(土) 14:25:41.40 ID:NZEL8Kud(1) AAS
異なる自然数 a, b (a > b) における a^3 - b^3 を「a, b の三乗差」と呼ぶことにする。
異なる5通りの組(a, b) (c, d) ... (j, k) について三乗差がすべて相等しいとき
その組(a, b)...(j, k) および三乗差自体を求めよ
異なる6通りの組で三乗差が相等しい場合があるかも検討せよ
>>292
292(1): デフォルトの名無しさん [] 2024/02/27(火) 22:30:42.88 ID:BJV11H6M(1) AAS
>>282
下三角行列の各列内の要素は昇順で既に並んでいるのに、>>290は下三角行列の全要素を
ソートして無駄なので、列のマージに変更(要するにマージソートを途中段階から開始)
したら少し速くなった。
外部リンク:ideone.com

n = 10000でも5秒以内に終わった。
外部リンク:ideone.com
とは別の方法で>>290
290(2): デフォルトの名無しさん [] 2024/02/26(月) 22:18:39.21 ID:CjcYgBx5(1) AAS
>>282
>>289と似た手順でC++
外部リンク:ideone.com

Rではソートする前に重複値だけを抽出しているが、C++のunique関数はソート済みデータにしか
使えないので使っていない。
を高速化
外部リンク:ideone.com

1³, 2³, 3³, …, 5000³をD = 5001で割った余りはすべて異なる値になるから、d = a³ − b³を
Dで割った余りはどれか1つの値に偏ることなく均等に分布する。dをDで割った余りによりdを
区分すれば、各区分に入る個数はどれも多すぎないのでソートに時間が余りかからない。
Dの値はconstexpr関数によりコンパイラに計算させている。n = 10000, 15000のときは
それぞれD = 10002, 15009になる。
324: デフォルトの名無しさん [] 2024/04/14(日) 18:36:52.16 ID:MHeAinLP(2/2) AAS
>>321
321(3): デフォルトの名無しさん [] 2024/04/13(土) 23:01:22.75 ID:wFZkrOeZ(1) AAS
>>319
外部リンク:ideone.com
ヘロンが作ったもう1つの式である平方根を加算と除算の繰り返しで求める式も使用。
sqrt関数を呼び出すより実行形式ファイルサイズがほんの少しだけ小さくなる。
さすがですね
337: デフォルトの名無しさん [sage] 2024/05/01(水) 15:39:17.16 ID:hqp8cDbc(1) AAS
>>336
336(1): デフォルトの名無しさん [] 2024/05/01(水) 12:56:47.83 ID:nIC3qyB/(1) AAS
スレ落ちそうなのであげ
嵐を呼び込むために・・・
342: 17 [] 2024/05/02(木) 18:44:04.16 ID:LxBZq7I4(1) AAS
>>340
340(1): デフォルトの名無しさん [] 2024/05/02(木) 16:59:52.63 ID:DPVqLIsI(1) AAS
>>338
お題が出尽くしたってことはあるんじゃないか?
過去のお題拾ってきてそれを投稿すればいいぐらいまでスレが成熟してしまったのでは?
なるほど。それをやるか。
390
(1): デフォルトの名無しさん [] 2024/08/03(土) 22:29:35.16 ID:S2fEkJP0(2/4) AAS
テンプレに書いてなかったしいいやって思っちゃった
ここまで伝わらんもんなのか…
534
(1): デフォルトの名無しさん [] 2025/02/06(木) 22:16:32.16 ID:u6r6iDwj(1) AAS
>>510
510(21): デフォルトの名無しさん [] 2025/01/30(木) 21:27:24.39 ID:te1+SH0T(1) AAS
お題
ソース文字列と検索文字列が入力されます
検索文字列の文字をすべて含むソース文字列の部分文字列のうち
一番短い部分文字列を出力してください

DHBICEJAFG EIC → ICE
FDGJHCBIEA EIC → CBIE
FBHDCIJGEA EIC → CIJGE
JDIBGHCEAF EIC → IBGHCE
JBCIAGDHEF EIC → CIAGDHE
EJFBCAGIHD EIC → EJFBCAGI
IADCGJFBEH EIC → IADCGJFBE
IDFHBJGAEC EIC → IDFHBJGAEC
C++
外部リンク:ideone.com

>>529
529(1): デフォルトの名無しさん [] 2025/02/03(月) 21:15:02.53 ID:swo++26S(1) AAS
>>510
R
外部リンク:ideone.com

C++ (>>524と同じ巨大文字列での繰り返しあり)
外部リンク:ideone.com
からの変更点
・sへのtの文字の出現位置を高速取得(1バイト文字のみに対応)
・sにtの同一文字が3回以上連続して出現する場合に最初と最後以外の位置を省略
558: デフォルトの名無しさん [] 2025/02/11(火) 03:27:04.16 ID:FlAqv/ML(1) AAS
動画再生回数、登録者数、評価数、コメント数

上2桁、下2桁に04、13、40、44、71、74など
(+生年月日、IDの数字など)の組み合わせ

業者による忌み数字、不吉数字の嫌がらせ&精神攻撃がキモすぎ
598: デフォルトの名無しさん [] 2025/02/13(木) 20:12:01.16 ID:3SfOseF2(1/2) AAS
>>594
594(7): デフォルトの名無しさん [sage] 2025/02/13(木) 12:04:43.08 ID:KGk2Z9bM(1) AAS
お題:ランダムな数列から任意の並んでいる二つの数同士を足して、その二つの数の間に挿入せよ。
その新しい数が一桁ならそのまま挿入し二桁なら桁同士を足してその二桁の間に挿入せよ。

< 123456789 3 4
> 1237456789

(3+4=7)

< 123456789 6 7
> 123456143789

(6+7=13 1+3=4)
題意が以下の通りだとして、PowerShell (エラーチェックは省略)

 自然数x, i, j (i + 1 = jを満たす) が与えられる。xの上i桁目の数字をx[i]で表す。
 x[i]とx[j]の和をyとして、

 ・yが1桁のとき、yをx[i]とx[j]の間に挿入せよ
 ・yが2桁のとき、y[1]とy[2]の和をy[1]とy[2]の間に挿入してから、yをx[i]とx[j]の間に挿入せよ

function f($x, $i, $j)
{
  $s = [string]$x
  $y = [int][string]$s[$i - 1] + [int][string]$s[$j - 1]
  if ($y -lt 10) {
    $s.insert($i, $y)
  } else {
    $s.insert($i, 11 * $y)
  }
}

(123456789, 3, 4), (123456789, 6, 7) |% {
  "< $($_[0]) $($_[1]) $($_[2])"
  "> $(f $_[0] $_[1] $_[2])", ""
}

[実行結果]
< 123456789 3 4
> 1237456789

< 123456789 6 7
> 123456143789
618: デフォルトの名無しさん [sage] 2025/02/15(土) 10:40:34.16 ID:+yYMeR0h(1) AAS
>>594 >>608
608(10): デフォルトの名無しさん [sage] 2025/02/14(金) 23:42:29.57 ID:PVqLPxMJ(1) AAS
お題:ランダムな英文字列が与えられる。隣り合う英文字が同じ大文字だった場合、その間にその大文字の小文字を挿入せよ

In < abcDDefGG
Out > abcDdDefGgG
lisp
外部リンク:ideone.com
645
(1): デフォルトの名無しさん [sage] 2025/02/17(月) 20:58:11.16 ID:UxhkW11K(1) AAS
>>640
640(10): デフォルトの名無しさん [sage] 2025/02/17(月) 13:08:08.60 ID:lz3iaMcC(1) AAS
お題:ランダムな数列が与えられる。隣り合う数字が偶数同士の時、あいだに0を。奇数同士の時は1を挿入し、それ以外は何も挿入しない

In < 123346
Out > 12313406
 Rust

fn f(input: &[u8]) -> Vec<u8> {
 input.windows(2).fold(Vec::new(), |mut vec, w| {
  if vec.is_empty() {
   vec.push(w[0]);
  }
  if (w[0] ^ w[1]) & 1 == 0 {
   vec.push(w[0] & 1 + b'0');
  }
  vec.push(w[1]);
  vec
 })
}

fn main() {
 assert_eq!(f(b"123346"), b"12313406");
 assert_eq!(f(b"12333468"), b"123131340608");
}
731: デフォルトの名無しさん [] 2025/04/02(水) 19:51:02.16 ID:7MGV8+qg(1) AAS
俺が言ってるのは5chのプロじゃねえなってことだから
数学は関係ない
783: 警備員[Lv.11] [] 2025/07/28(月) 23:30:37.16 ID:uO5vEij8(1) AAS
>>771
771(22): デフォルトの名無しさん [sage] 2025/07/25(金) 12:30:11.02 ID:CjDQVF2B(1) AAS
【問題】
整数のリストが与えられたとき、そのリストを昇順に安定ソートした時の各要素のインデクス(0開始)を対応させたリストを作成せよ

【例】
入力: 1 100 10 10000 1000
出力: 0 2 1 4 3

入力: 3 1 4 1 5 9 2
出力: 3 0 4 1 5 6 2

入力: 0 1 0 1 0 1 0 1
出力: 0 4 1 5 2 6 3 7

実際に必要になって実装したけどスマートな方法があったら知りたい
>>776
776(1): デフォルトの名無しさん [] 2025/07/26(土) 19:25:22.74 ID:T78ZrTu7(2/2) AAS
>>771
Java 24
外部リンク:text.is
をKotlinに変換してKotlinらしくなるように色々省略しただけのもの。
やはり最初からラムダとか考慮されている言語だと色々省略できて分り易くなるね。
外部リンク:paiza.io
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.691s*