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

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
37: デフォルトの名無しさん [sage] 2023/08/11(金) 22:35:55.39 ID:H5Y2+fuz(1) AAS
>>35
35(1): デフォルトの名無しさん [] 2023/08/11(金) 17:25:08.27 ID:I5t9Gg6x(1) AAS
遅延評価は馴染みない人にはわからんからしょうがない
遅延評価は色んな言語にあるよ
その対象や動作は各言語や各機能によって様々で
PromiseやFutureのような非同期に遅延評価されるものもあるけど
今回のお題だとC#のLINQメソッドチェーンによる遅延評価やRubyのlazy指定などが有効だね
>>15
15(2): デフォルトの名無しさん [sage] 2023/08/08(火) 19:36:27.56 ID:ODiXw46s(1) AAS
>>3
Rust

use std::collections::HashSet;
use std::io::{self, BufRead, BufReader};

fn main() {
 match BufReader::new(io::stdin())
  .lines()
  .map(Result::unwrap)
  .filter(|line| {
   line.bytes()
    .filter(|b| matches!(b, b'A'..=b'Z'| b'a'..=b'z'))
    .collect::<HashSet<_>>()
    .len()
    .eq(&26)
  })
  .min_by_key(String::len)
 {
  Some(shortest) => println!("{shortest}"),
  None => eprintln!("ERROR: no matched lines"),
 }
}
のRustのイテレータメソッドチェーンも遅延評価されるから何万行の入力が来てもメモリを消費せずに済むね
44: 9 [sage] 2023/08/16(水) 13:42:58.39 ID:vjpqg3x7(2/2) AAS
>>43
43(2): 9 [sage] 2023/08/16(水) 13:32:44.58 ID:vjpqg3x7(1/2) AAS
>>40 bash、curl および GraphicsMagick の convert コマンドを使用。動作確認したOSはUbuntu 20.04LTS。数百枚のjpegからgifへのconvertには多少時間がかかります。
オプション -h または --highres を指定すると 2048x2048、オプション無しあるいは -l または --lowreso を指定すると 512x512、なおボーナスはスイス銀行の秘密口座に。
※見易くするためインデントは全角スペースに置換してあります。8月16日23時まで取得するようにしているがまだ無い将来の画像は含まない。

res='512x512' # default
OPT=`getopt -o hl -l highreso,lowreso -- "$@"`
eval set -- "$OPT"
while true; do
 case "$1" in
  -h | --highreso)
   res='2048x2048'
   shift ;;
  -l | --lowreso)
   res='512x512'
   shift ;;
  --)
   shift
   break ;;
 esac
done
dir=$(mktemp -d TmpDir.XXXXXX)
for d in $(seq -w 01 16); do
 for h in $(seq -w 0 23); do
  dh="$d$h"
  file="HMW92308${dh}.globe.1.jpg"
  url="外部リンク:agora.ex.nii.ac.jp
  echo $url; curl -f -s -R -o "$dir/$file" $url
 done
done
#set -x
time convert $(ls $dir/*.jpg) TyphoonAime${res}.gif
ls -o TyphoonAime${res}.gif
typo orz
-h または --highres

-h または --highreso
62: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2023/08/21(月) 15:10:32.39 ID:GU1DZq8L(1) AAS
>>57
57(1): 17 [] 2023/08/20(日) 23:07:16.25 ID:pbHEs6OP(2/2) AAS
>>55
800Wの電熱線で加熱するとどれだけの量の水がどのぐらいの時間で1度上がるか、など、基本的な事が分からない。
中学校の物理で習うはずなんだけどなあ。忘れたか。
外部リンク:chuugakurika.com
100: デフォルトの名無しさん [] 2023/09/27(水) 20:48:13.39 ID:hJUMqAFS(1) AAS
>>97
97(2): デフォルトの名無しさん [sage] 2023/09/27(水) 11:02:54.03 ID:Jpj1XONB(1) AAS
お題:日本語の文章が入力されるので「、」をカンマに、「。」を改行に変換せよ
R
外部リンク:ideone.com
140: デフォルトの名無しさん [] 2023/10/21(土) 23:03:24.39 ID:x0YGunAE(1) AAS
>>139
139(1): デフォルトの名無しさん [sage] 2023/10/21(土) 04:08:56.28 ID:TaroWUwV(1) AAS
お題:文字列「せんだ」「みつを」「ナハナハ」がランダムに100行入力される。せんだ、みつを、ナハナハが順番に入力されたときに1と一行出力せよ
C#
外部リンク:paiza.io
199: デフォルトの名無しさん [] 2024/01/21(日) 17:06:46.39 ID:BpmEGVkv(1) AAS
>>187
187(17): デフォルトの名無しさん [] 2024/01/16(火) 00:33:05.98 ID:n8j0XaXx(1) AAS
お題:時刻の文字列が与えられる。その時刻から1秒後の時刻を出力せよ。


入力:00:00:00
出力:00:00:01
入力:23:59:59
出力:00:00:00
c++
2chスレ:tech
305: デフォルトの名無しさん [] 2024/03/09(土) 23:59:51.39 ID:C74EWG6S(2/2) AAS
>>304
304(6): デフォルトの名無しさん [sage] 2024/03/09(土) 22:47:01.30 ID:v99WCN19(1) AAS
お題

460円 580円 600円 の3種類の商品があります
これらを組み合わせて合計10個買ったら5360円になりました
組み合わせを求めるプログラムを書いてください

ちなみに答えの一つは
・600円×2
・580円×4
・460円×4
だそうです

2chスレ:cigaret
面倒なのでRで全探索
外部リンク:ideone.com
326: デフォルトの名無しさん [sage] 2024/04/15(月) 22:06:46.39 ID:MxMoolaJ(1) AAS
>>325
325(1): デフォルトの名無しさん [] 2024/04/15(月) 21:01:04.41 ID:dSNEYg5r(1) AAS
>>322
p < 0 のとき(= 三角形を作れない場合)は浮動小数点数の特性に関係なく無限ループになる。
sqrt(p) と同様にNANを返すには、if (p < 0) return 0 / (p - p); を追加すれば良い。

p > 0 のときは無限ループにならないはず。以下が検証プログラム。
外部リンク:ideone.com

x = sqrt(p), y = p / x とすると、浮動小数点数の特性により x == y とならない場合は存在する。
このとき、xとyの仮数部を整数と見なした値(以降では「仮数整数」と呼ぶ)の差は1なので、
z = (x + y) / 2 はxとyのうち仮数整数が偶数の方に一致する。zを新たなxとして代入しyとzを
再計算すれば、今度はxの仮数整数が偶数なのでzはxに必ず一致し、>>321の収束判定条件が成立する。

具体例で見ると、p = 2 のときはxの仮数整数が奇数なので x != z となるが、zを新たなxとして代入し
再計算すれば x == z が成立する。桁上がりが起こる p = 3.9999999999999996 のときも、同様に
再計算で x == z が成立する。p = 3 のときはxの仮数整数が偶数なので x == z が成立し再計算は不要。
解説ありがとう
俺には理解できないレベルだと分かりましたw
俺なら収束の自信が無くてDBL_EPSILONを使った判定と
ループ回数上限を組み合わせて実装しそうだ
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
525: デフォルトの名無しさん [sage] 2025/02/01(土) 22:42:58.39 ID:1BfoGXYb(1) AAS
>>516
516(2): デフォルトの名無しさん [] 2025/01/31(金) 16:14:43.64 ID:fZW/Grtl(1) AAS
>>514 へのお題

次の操作ができる循環リンクリストを作成してください

・空のリストへの挿入
・冒頭の挿入
・最後に挿入
・指定された位置への挿入
・最初のノードを削除する
・最後のノードを削除する
・任意の位置からノードを削除する
横からだがその仕様ならベクタをリングバッファとして使った両端キューで十分だな
多くの実用例でもこの方が速いことが知られている

use std::collections::VecDeque;
// 空のキュー
let mut deque: VecDeque<T> = VecDeque::new();
// 先頭に挿入
deque.push_front(t);
// 最後に挿入
deque.push_back(t);
// 指定位置に挿入
deque.insert(index, t);
// 先頭を削除して得る
let first: Option<T> = deque.pop_front();
// 最後を削除して得る
let last: Option<T> = deque.pop_back();
// 指定位置を削除して得る
let element: Option<T> = deque.pop_back();
546: デフォルトの名無しさん [] 2025/02/08(土) 08:27:20.39 ID:7bAG/IVE(1) AAS
>>510
Wolfram Language

s = "DHBICEJAFG"
>> Out[1]= DHBICEJAFG
pattern = "EIC"
>> Out[2]= EIC

shortestMatch = \
(* 全通りの部分文字列を生成する *) \
ReplaceList[ Characters[ s ], {___, x__, ___} -> {x} ] \
(* 短い順、先頭に近い順に並べる *) \
// Sort \
(* 検索文字列の文字を全て含むものを選ぶ *) \
// Select[ ContainAll[ Characters[ pattern ] ] ] \
(* 1つ目を文字列として返す *) \
// Extract[ 1 ] // StringJoin
>> Out[3]= ICE
601: デフォルトの名無しさん [sage] 2025/02/13(木) 20:45:01.39 ID:KiG3F5Wd(1) AAS
>>561
561(15): デフォルトの名無しさん [] 2025/02/11(火) 10:54:21.93 ID:E5oVpL7o(1/5) AAS
お題
数列が入力されます
ニ番目に小さい数を出力してください

入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
c
外部リンク:ideone.com

>>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)
ruby
外部リンク:ideone.com
622
(1): デフォルトの名無しさん [sage] 2025/02/15(土) 21:52:48.39 ID:qa0m30Tb(1/4) AAS
>>621
621(3): デフォルトの名無しさん [] 2025/02/15(土) 21:06:37.89 ID:rssRTGdz(3/9) AAS
>>561
C++
外部リンク:ideone.com
C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、
ポインタ参照化して移植した。

外部リンク:ideone.com
593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と
違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。

──
¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない
最大値をundefined代わりに使ってはいけないと指摘があったのにまだ使っているのかいな
そのコードで入力数列がこうだった場合
vector<int> a = {IntMax - 1, IntMax};
2番目に小さい数として正解のintMaxを返さなければならない
812
(5): デフォルトの名無しさん [] 2025/08/21(木) 23:15:48.39 ID:0KQ1xtxb(1) AAS
>>799
799(20): デフォルトの名無しさん [sage] 2025/08/16(土) 01:44:59.97 ID:VU+jlz0U(1/2) AAS
【問題A】
1~9を1つずつ使用して表される9桁の数Anは全部で9!(=362880)個存在する。
整数n(1≦n≦362880)が与えられたとき、n番目に小さいAnを求めよ。

(例)
 1 → 123456789
 2 → 123456798
 3 → 123456879
 123456 → 416589732
 234567 → 684753219
 362880 → 987654321

【問題B】
1~4を3つずつ使用して表される12桁の数Bnは全部で12!/(3!)^4(=369600)個存在する。
整数n(1≦n≦369600)が与えられたとき、n番目に小さいBnを求めよ。

(例)
 1 → 111222333444
 2 → 111222334344
 3 → 111222334434
 123456 → 222331434114
 234567 → 324424331112
 369600 → 444333222111

※求める数値は文字列または各桁の数の配列による表現も可能とする(123⇔"123"⇔[1,2,3])
の逆変換プログラム
R
外部リンク:ideone.com
C++
外部リンク:ideone.com

問題A, 問題Bとは違って、順列に出現するユニークな整数は1〜nの連番でなくても良いし、
出現回数はすべて同じでなくても良い。例えば、入力は [3, 1, 4, 1, 5, 9] でも良い
(ユニークな整数は1, 3, 4, 5, 9で、出現回数は1が2回、その他が1回)。
813: デフォルトの名無しさん [] 2025/08/22(金) 01:14:43.39 ID:6LYRfbyj(1) AAS
>>799
Java
外部リンク:paiza.io
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.049s