プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part21
https://mevius.5ch.net/test/read.cgi/tech/1668333636/
探検
プログラミングのお題スレ Part22
1デフォルトの名無しさん
2023/08/03(木) 13:52:13.20ID:/xW45k0z4929
2025/01/24(金) 17:38:14.24ID:cg1ZmS3G >>464 Perl5
for (<DATA>) {
chomp;
print "$_ → ", (/^(A((AB)?|(?1))B)+$/g ? 'true' : 'false'), "\n";
}
__DATA__
A
B
AB
ABB
AAB
AABB
ABAABBAAABBB
ABC
AABABB
※見易くするためにインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_464_AB_rec_rex.pl
→ false
A → false
B → false
AB → true
ABB → false
AAB → false
AABB → true
ABAABBAAABBB → true
ABC → false
AABABB → false
for (<DATA>) {
chomp;
print "$_ → ", (/^(A((AB)?|(?1))B)+$/g ? 'true' : 'false'), "\n";
}
__DATA__
A
B
AB
ABB
AAB
AABB
ABAABBAAABBB
ABC
AABABB
※見易くするためにインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_464_AB_rec_rex.pl
→ false
A → false
B → false
AB → true
ABB → false
AAB → false
AABB → true
ABAABBAAABBB → true
ABC → false
AABABB → false
493デフォルトの名無しさん
2025/01/24(金) 20:04:46.59ID:kDOvSp0D495デフォルトの名無しさん
2025/01/25(土) 03:04:24.02ID:Z97MpHAu どんまい
496デフォルトの名無しさん
2025/01/25(土) 21:23:47.57ID:KM9w0vp0497デフォルトの名無しさん
2025/01/26(日) 14:07:38.91ID:nBBaggrk498493
2025/01/26(日) 15:22:46.05ID:dl7YvN1C499デフォルトの名無しさん
2025/01/27(月) 00:00:51.14ID:/Jqezixy500デフォルトの名無しさん
2025/01/27(月) 09:16:22.69ID:rqFJtGlJ お題
入力された文字列から重複する文字を抽出してください
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
入力された文字列から重複する文字を抽出してください
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
5019
2025/01/27(月) 17:15:59.64ID:cwZgX9Gy Perl5
for (qw{T CG ATA CGGA ATGAT GTTGCA CCCCGGG ACTGCGAG ATCAGAATA TGCCATGACA}) {
%h = (); $h{$_}++ for split '';
print "$_ → ", (grep{1 < $h{$_}} keys %h), "\n";
}
※見易くするためインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_500_dupe_char.pl
T →
CG →
ATA → A
CGGA → G
ATGAT → TA
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → GAC
ATCAGAATA → TA
TGCCATGACA → TGAC
for (qw{T CG ATA CGGA ATGAT GTTGCA CCCCGGG ACTGCGAG ATCAGAATA TGCCATGACA}) {
%h = (); $h{$_}++ for split '';
print "$_ → ", (grep{1 < $h{$_}} keys %h), "\n";
}
※見易くするためインデントを全角スペースに置換してあります
実行結果
~ $ perl 22_500_dupe_char.pl
T →
CG →
ATA → A
CGGA → G
ATGAT → TA
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → GAC
ATCAGAATA → TA
TGCCATGACA → TGAC
5029
2025/01/27(月) 21:20:12.94ID:cwZgX9Gy5039
2025/01/27(月) 21:22:36.75ID:cwZgX9Gy CopilotのURLをコピペしても他の人に内容を見せることはできなかったワ…orz
504デフォルトの名無しさん
2025/01/27(月) 21:24:28.42ID:LHxZVLOG >>500 octave
https://ideone.com/eLcVPC
function s = f(s)
[~, ia] = unique(s);
s(ia) = [];
if 1 < length(s)
[~, ia] = unique(s, 'first');
s = s(sort(ia));
end
end
>>500 ruby
https://try.ruby-lang.org/playground/#code=f+%3D+-%3Es+%7Bs.chars.tally.select+%7B1+%3C+_2%7D.keys.join%7D%0Ass+%3D+%3C%3CEOS.lines(chomp%3A+true)%0AT%0ACG%0AATA%0ACGGA%0AATGAT%0AGTTGCA%0ACCCCGGG%0AACTGCGAG%0AATCAGAATA%0ATGCCATGACA%0AEOS%0Aputs+ss.map+%7B%7Cs%7C+%22%23%7Bs%7D+-%3E+%23%7Bf.(s)%7D%22%7D&engine=cruby-3.3.0
https://ideone.com/9E5Z9a
f = ->s {s.chars.tally.select {1 < _2}.keys.join}
https://ideone.com/eLcVPC
function s = f(s)
[~, ia] = unique(s);
s(ia) = [];
if 1 < length(s)
[~, ia] = unique(s, 'first');
s = s(sort(ia));
end
end
>>500 ruby
https://try.ruby-lang.org/playground/#code=f+%3D+-%3Es+%7Bs.chars.tally.select+%7B1+%3C+_2%7D.keys.join%7D%0Ass+%3D+%3C%3CEOS.lines(chomp%3A+true)%0AT%0ACG%0AATA%0ACGGA%0AATGAT%0AGTTGCA%0ACCCCGGG%0AACTGCGAG%0AATCAGAATA%0ATGCCATGACA%0AEOS%0Aputs+ss.map+%7B%7Cs%7C+%22%23%7Bs%7D+-%3E+%23%7Bf.(s)%7D%22%7D&engine=cruby-3.3.0
https://ideone.com/9E5Z9a
f = ->s {s.chars.tally.select {1 < _2}.keys.join}
505デフォルトの名無しさん
2025/01/27(月) 21:30:57.80ID:l9HsQRRu506デフォルトの名無しさん
2025/01/28(火) 21:18:03.62ID:oNqYbqge507デフォルトの名無しさん
2025/01/29(水) 01:00:49.19ID:4mvV5Tkg508デフォルトの名無しさん
2025/01/29(水) 01:49:29.44ID:PQfpjql4 >>500
REM 重複チェック.bat
ruby -x "%~f0"
exit
#~
#!ruby
while 1
print "> "
a=$stdin.gets.chomp.split("")
exit if a==[]
puts a.select{|e| a.count(e)>1}.uniq.join
end
REM 重複チェック.bat
ruby -x "%~f0"
exit
#~
#!ruby
while 1
print "> "
a=$stdin.gets.chomp.split("")
exit if a==[]
puts a.select{|e| a.count(e)>1}.uniq.join
end
509デフォルトの名無しさん
2025/01/29(水) 21:56:05.24ID:GDFS0NvX510デフォルトの名無しさん
2025/01/30(木) 21:27:24.39ID:te1+SH0T お題
ソース文字列と検索文字列が入力されます
検索文字列の文字をすべて含むソース文字列の部分文字列のうち
一番短い部分文字列を出力してください
DHBICEJAFG EIC → ICE
FDGJHCBIEA EIC → CBIE
FBHDCIJGEA EIC → CIJGE
JDIBGHCEAF EIC → IBGHCE
JBCIAGDHEF EIC → CIAGDHE
EJFBCAGIHD EIC → EJFBCAGI
IADCGJFBEH EIC → IADCGJFBE
IDFHBJGAEC EIC → IDFHBJGAEC
ソース文字列と検索文字列が入力されます
検索文字列の文字をすべて含むソース文字列の部分文字列のうち
一番短い部分文字列を出力してください
DHBICEJAFG EIC → ICE
FDGJHCBIEA EIC → CBIE
FBHDCIJGEA EIC → CIJGE
JDIBGHCEAF EIC → IBGHCE
JBCIAGDHEF EIC → CIAGDHE
EJFBCAGIHD EIC → EJFBCAGI
IADCGJFBEH EIC → IADCGJFBE
IDFHBJGAEC EIC → IDFHBJGAEC
511506
2025/01/30(木) 21:43:26.41ID:ID2xuR+0512デフォルトの名無しさん
2025/01/30(木) 22:47:12.58ID:3iB+73MI 高速文字列解析の世界に似た問題のアルゴリズム(ウェーブレット木)が沢山ありました
513デフォルトの名無しさん
2025/01/31(金) 00:36:51.89ID:MBodgIXJ514デフォルトの名無しさん
2025/01/31(金) 13:46:22.55ID:+tPQNmsr このスレでいいのかわからんのだけど
Rust勉強中なんだがメモリ安全性の恩恵を受けやすいなんかしらかのプログラムを書こうと思ってるんだがなにかいいお題はあるか?
言語処理系は大体作ってるのでそれ以外で頼む
Rust勉強中なんだがメモリ安全性の恩恵を受けやすいなんかしらかのプログラムを書こうと思ってるんだがなにかいいお題はあるか?
言語処理系は大体作ってるのでそれ以外で頼む
515デフォルトの名無しさん
2025/01/31(金) 15:33:43.41ID:b4vq2KMj う~んこの嫌われムーブはあのおじさんか
このスレでは自重して欲しいな
このスレでは自重して欲しいな
516デフォルトの名無しさん
2025/01/31(金) 16:14:43.64ID:fZW/Grtl >>514 へのお題
次の操作ができる循環リンクリストを作成してください
・空のリストへの挿入
・冒頭の挿入
・最後に挿入
・指定された位置への挿入
・最初のノードを削除する
・最後のノードを削除する
・任意の位置からノードを削除する
次の操作ができる循環リンクリストを作成してください
・空のリストへの挿入
・冒頭の挿入
・最後に挿入
・指定された位置への挿入
・最初のノードを削除する
・最後のノードを削除する
・任意の位置からノードを削除する
517デフォルトの名無しさん
2025/01/31(金) 21:55:55.86ID:mLWOFznj >>514
Rustはメモリのデータ競合もデータ参照競合も全てコンパイルエラーにしてくれるから間違えようがないね
他の普通の言語だと実行して問題発生に気付いて調査して頑張ってようやく競合が原因だと判明して間違えていたことがわかるから開発効率の悪さとして差が現れるけど
Rustは実行前にその種のミスのデバッグまで全て終えてしまう感じ
Rustはメモリのデータ競合もデータ参照競合も全てコンパイルエラーにしてくれるから間違えようがないね
他の普通の言語だと実行して問題発生に気付いて調査して頑張ってようやく競合が原因だと判明して間違えていたことがわかるから開発効率の悪さとして差が現れるけど
Rustは実行前にその種のミスのデバッグまで全て終えてしまう感じ
518デフォルトの名無しさん
2025/01/31(金) 22:10:00.47ID:4ClqIqkw 普通は問題発生前に気がつく
519デフォルトの名無しさん
2025/01/31(金) 22:17:10.46ID:bHXxdIdo520デフォルトの名無しさん
2025/01/31(金) 22:38:00.61ID:3jAIz2ps >>518
グローバル変数を排他制御せずに使ってしまっていたりするミスなどよく見かけるような
一般的にも巨大なコードになったり複数人で共通認識なかったりで見逃しミスは必ず出てくる
そしてタイミング次第によって稀にバグが起こるパターンとか負荷が高くなって起きてバグ発覚とか
グローバル変数を排他制御せずに使ってしまっていたりするミスなどよく見かけるような
一般的にも巨大なコードになったり複数人で共通認識なかったりで見逃しミスは必ず出てくる
そしてタイミング次第によって稀にバグが起こるパターンとか負荷が高くなって起きてバグ発覚とか
521デフォルトの名無しさん
2025/01/31(金) 23:44:08.10ID:mLWOFznj 全て自分で出来る気付くミスらない
って自己過信な人がセキュリティホールを招いてるからね
自動的にサポートしてくれる言語を使うのが安全で開発効率もいいよ
って自己過信な人がセキュリティホールを招いてるからね
自動的にサポートしてくれる言語を使うのが安全で開発効率もいいよ
522デフォルトの名無しさん
2025/02/01(土) 00:00:30.73ID:pgp85i6o ちゃんとルールを守って運転すれば
事故も起きないし、違反で捕まらない
それと同じ
事故も起きないし、違反で捕まらない
それと同じ
523デフォルトの名無しさん
2025/02/01(土) 00:26:30.15ID:cvjWKAds524519
2025/02/01(土) 17:22:30.12ID:/Ur4AoNp525デフォルトの名無しさん
2025/02/01(土) 22:42:58.39ID:1BfoGXYb >>516
横からだがその仕様ならベクタをリングバッファとして使った両端キューで十分だな
多くの実用例でもこの方が速いことが知られている
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();
横からだがその仕様ならベクタをリングバッファとして使った両端キューで十分だな
多くの実用例でもこの方が速いことが知られている
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();
526デフォルトの名無しさん
2025/02/01(土) 22:57:16.48ID:FwGLv5NU ズルしてどうするんよ…
527デフォルトの名無しさん
2025/02/01(土) 23:00:12.86ID:FwGLv5NU Rustのメモリ安全性を確認するためにプログラム書きたいんでしょ、だったら循環リストをフルスクラッチするしかないよね
528デフォルトの名無しさん
2025/02/02(日) 19:41:14.89ID:NpAQnhYs リンクリストならindex番目の操作(挿入or切除)は
index番目で分解して操作して合体するだけなのでこれで動くよ
use std::collections::LinkedList;
trait LinkedListExt<T> {
fn insert_at(&mut self, index: usize, value: T);
fn remove_at(&mut self, index: usize) -> Option<T>;
}
impl<T> LinkedListExt<T> for LinkedList<T> {
fn insert_at(&mut self, index: usize, value: T) {
let mut tail = self.split_off(index);
self.push_back(value);
self.append(&mut tail);
}
fn remove_at(&mut self, index: usize) -> Option<T> {
let mut tail = self.split_off(index);
let value = tail.pop_front();
self.append(&mut tail);
value
}
}
index番目で分解して操作して合体するだけなのでこれで動くよ
use std::collections::LinkedList;
trait LinkedListExt<T> {
fn insert_at(&mut self, index: usize, value: T);
fn remove_at(&mut self, index: usize) -> Option<T>;
}
impl<T> LinkedListExt<T> for LinkedList<T> {
fn insert_at(&mut self, index: usize, value: T) {
let mut tail = self.split_off(index);
self.push_back(value);
self.append(&mut tail);
}
fn remove_at(&mut self, index: usize) -> Option<T> {
let mut tail = self.split_off(index);
let value = tail.pop_front();
self.append(&mut tail);
value
}
}
529デフォルトの名無しさん
2025/02/03(月) 21:15:02.53ID:swo++26S530デフォルトの名無しさん
2025/02/03(月) 22:57:52.37ID:VF4m0iMh >>510 c
https://ideone.com/L4xIAy
・f_529 は529さんのパクり
・f_strcspn_chr は strchr してから strcspn すると単純ながら若干の速度向上
https://ideone.com/L4xIAy
・f_529 は529さんのパクり
・f_strcspn_chr は strchr してから strcspn すると単純ながら若干の速度向上
531530
2025/02/04(火) 21:13:55.63ID:k8XtEdoq532531
2025/02/05(水) 20:39:11.49ID:mFRiRIqM533532
2025/02/05(水) 23:28:39.35ID:mFRiRIqM534デフォルトの名無しさん
2025/02/06(木) 22:16:32.16ID:u6r6iDwj >>510
C++
https://ideone.com/ywT3qw
>>529からの変更点
・sへのtの文字の出現位置を高速取得(1バイト文字のみに対応)
・sにtの同一文字が3回以上連続して出現する場合に最初と最後以外の位置を省略
C++
https://ideone.com/ywT3qw
>>529からの変更点
・sへのtの文字の出現位置を高速取得(1バイト文字のみに対応)
・sにtの同一文字が3回以上連続して出現する場合に最初と最後以外の位置を省略
535デフォルトの名無しさん
2025/02/07(金) 19:14:17.64ID:UF6GKvr5 >>500
Wolfram Language
str = "ATGAT"
>> Out[1]= ATGAT
duplicates = str // Characters \
(* { A, T, G, A, T } *) \
// Counts \
(* <| A -> 2, T -> 2, G -> 1 |> *) \
// Select[Function[ 1 < # ]] \
(* <| A -> 2, T -> 2 |> *) \
// Keys \
(* { A, T } *) \
// StringJoin (* "AT" *)
>> Out[2]= AT
Wolfram Language
str = "ATGAT"
>> Out[1]= ATGAT
duplicates = str // Characters \
(* { A, T, G, A, T } *) \
// Counts \
(* <| A -> 2, T -> 2, G -> 1 |> *) \
// Select[Function[ 1 < # ]] \
(* <| A -> 2, T -> 2 |> *) \
// Keys \
(* { A, T } *) \
// StringJoin (* "AT" *)
>> Out[2]= AT
536デフォルトの名無しさん
2025/02/07(金) 21:12:13.92ID:n3kvQb3T テス
5379
2025/02/07(金) 21:20:22.98ID:dMuAEB5V538デフォルトの名無しさん
2025/02/07(金) 22:53:14.41ID:ovhX7KXo5399
2025/02/07(金) 23:00:25.46ID:dMuAEB5V >>537
しくった、これ一番短い範囲ではなく間違って一番長い範囲を検出してる。
サンプルデータではたまたま同じ解になるようで、間違いを見落としてしまった。
それから、一番長い(短いにすべきだったが)範囲の検索にわざわざ候補listをsortして[0]番目を
取得しているが無駄だし規模が大きくなると効率よくない
時間あったら直しますわ〜
しくった、これ一番短い範囲ではなく間違って一番長い範囲を検出してる。
サンプルデータではたまたま同じ解になるようで、間違いを見落としてしまった。
それから、一番長い(短いにすべきだったが)範囲の検索にわざわざ候補listをsortして[0]番目を
取得しているが無駄だし規模が大きくなると効率よくない
時間あったら直しますわ〜
542538
2025/02/07(金) 23:08:45.80ID:ovhX7KXo543デフォルトの名無しさん
2025/02/07(金) 23:41:05.56ID:qBbgMoXu >>500
PowerShell
"T", "CG", "ATA", "CGGA", "ATGAT", "GTTGCA", "CCCCGGG", "ACTGCGAG ", "ATCAGAATA", "TGCCATGACA" |% {
"$_ → $(-join ([char[]]$_ | group -case |% {$_.name[$_.count -le 1]}))"
}
[実行結果]
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
PowerShell
"T", "CG", "ATA", "CGGA", "ATGAT", "GTTGCA", "CCCCGGG", "ACTGCGAG ", "ATCAGAATA", "TGCCATGACA" |% {
"$_ → $(-join ([char[]]$_ | group -case |% {$_.name[$_.count -le 1]}))"
}
[実行結果]
T →
CG →
ATA → A
CGGA → G
ATGAT → AT
GTTGCA → GT
CCCCGGG → CG
ACTGCGAG → ACG
ATCAGAATA → AT
TGCCATGACA → TGCA
5449
2025/02/08(土) 00:22:55.52ID:vma3KbbM >>510 Perl5、>>537 の修正版
https://ideone.com/klqLux
修正点
・>>537では間違って一番長い範囲を検出していたが、一番短い範囲に修正した。(サンプルデータではそれらの解はたまたま一致)
・パターンが3文字であることに依存する定数「2(=3 -1 )」をハードコードしている箇所があったので、パターン文字数次第で処理するように修正
・検出した候補文字列リストのうち一番短い物の検索のためにわざわざ候補リスト全体をsortするのをやめて
reduceによって長さが一番短い文字列を検索するように修正
List::Utils は言語処理系にデフォルトで付属のコアモジュール、
List::MoreUtils はCPANのオプションノジュールだがideoneのperlにはインスコされていたので使っちゃいましたテヘペロ
なお、候補文字列リストを作らず、ループの最内ifの中で一番短い文字列だけを記録していく様に記述すれば
大規模問題で若干効率が良くなるだろうけど、
まあいいや、もういいや。
https://ideone.com/klqLux
修正点
・>>537では間違って一番長い範囲を検出していたが、一番短い範囲に修正した。(サンプルデータではそれらの解はたまたま一致)
・パターンが3文字であることに依存する定数「2(=3 -1 )」をハードコードしている箇所があったので、パターン文字数次第で処理するように修正
・検出した候補文字列リストのうち一番短い物の検索のためにわざわざ候補リスト全体をsortするのをやめて
reduceによって長さが一番短い文字列を検索するように修正
List::Utils は言語処理系にデフォルトで付属のコアモジュール、
List::MoreUtils はCPANのオプションノジュールだがideoneのperlにはインスコされていたので使っちゃいましたテヘペロ
なお、候補文字列リストを作らず、ループの最内ifの中で一番短い文字列だけを記録していく様に記述すれば
大規模問題で若干効率が良くなるだろうけど、
まあいいや、もういいや。
546デフォルトの名無しさん
2025/02/08(土) 08:27:20.39ID:7bAG/IVE >>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
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
5479
2025/02/08(土) 17:50:15.20ID:HpUe4TZQ >>510 Perl5、>>544 をもう一回だけ改良
https://ideone.com/YkuK1w
改良点:
・検出された範囲の候補を一通りリストに蓄えて、あとでその中から最短のものを探す方式を止めて、
範囲を検索するループ内のifでその時点までの最短な範囲の判定と記録を行うようにした。
・CPANモジュールList::MoreUtilsのminmaxを使わない。
・コアモジュールList::Utilはminだけ使う。reduceは使わない。
なんだかPerlのコードらしい感じが減って、ベタな感じのコードになってしまいました
https://ideone.com/YkuK1w
改良点:
・検出された範囲の候補を一通りリストに蓄えて、あとでその中から最短のものを探す方式を止めて、
範囲を検索するループ内のifでその時点までの最短な範囲の判定と記録を行うようにした。
・CPANモジュールList::MoreUtilsのminmaxを使わない。
・コアモジュールList::Utilはminだけ使う。reduceは使わない。
なんだかPerlのコードらしい感じが減って、ベタな感じのコードになってしまいました
548デフォルトの名無しさん
2025/02/08(土) 19:59:09.70ID:EDI8nVtP549デフォルトの名無しさん
2025/02/08(土) 20:02:06.41ID:EDI8nVtP >>510
C++
https://ideone.com/TluWQi
>>548では検索文字列が短くて高速化されたか分かりにくかったので、長くして529, 534, 548の
実行時間を比較してみると、効果が顕著に現れた。
C++
https://ideone.com/TluWQi
>>548では検索文字列が短くて高速化されたか分かりにくかったので、長くして529, 534, 548の
実行時間を比較してみると、効果が顕著に現れた。
550 警備員[Lv.19]
2025/02/09(日) 03:18:28.07ID:Y8d2noVo551 警備員[Lv.19]
2025/02/09(日) 03:56:54.57ID:Y8d2noVo552デフォルトの名無しさん
2025/02/09(日) 12:47:59.38ID:uN83pfj6 >>510 c
https://ideone.com/D2AZMK
・両端に着目し、両端のみを更新しつつ調べていく(が、これといってパっとせず)
・f_both_ends はあくまで元の文字列s上を調べていく
・f_both_ends_v2 は「次」「隣」にアクセスしやすくした構造の上を調べていく
・あと実行時間の値ははげしくブレブレなので参考程度にとどめておいてね
https://ideone.com/D2AZMK
・両端に着目し、両端のみを更新しつつ調べていく(が、これといってパっとせず)
・f_both_ends はあくまで元の文字列s上を調べていく
・f_both_ends_v2 は「次」「隣」にアクセスしやすくした構造の上を調べていく
・あと実行時間の値ははげしくブレブレなので参考程度にとどめておいてね
553デフォルトの名無しさん
2025/02/09(日) 21:29:55.65ID:do9MXosP554デフォルトの名無しさん
2025/02/09(日) 21:31:24.58ID:do9MXosP555デフォルトの名無しさん
2025/02/09(日) 21:35:08.87ID:do9MXosP556 警備員[Lv.19]
2025/02/10(月) 13:21:24.86ID:g+w4FSG9557デフォルトの名無しさん
2025/02/10(月) 21:24:31.20ID:KgR1Tipz558デフォルトの名無しさん
2025/02/11(火) 03:27:04.16ID:FlAqv/ML 動画再生回数、登録者数、評価数、コメント数
上2桁、下2桁に04、13、40、44、71、74など
(+生年月日、IDの数字など)の組み合わせ
業者による忌み数字、不吉数字の嫌がらせ&精神攻撃がキモすぎ
上2桁、下2桁に04、13、40、44、71、74など
(+生年月日、IDの数字など)の組み合わせ
業者による忌み数字、不吉数字の嫌がらせ&精神攻撃がキモすぎ
559 警備員[Lv.20]
2025/02/11(火) 05:48:25.27ID:Y4Uu1QjJ それはお題なのか?それともただの誤爆か?
560デフォルトの名無しさん
2025/02/11(火) 06:03:36.08ID:h8gYOd9x 糖質でしょ
忌み数字不吉数字とか意味不明なこと言ってるし,それを業者が特定個人を狙って表示する意味も分からんし
忌み数字不吉数字とか意味不明なこと言ってるし,それを業者が特定個人を狙って表示する意味も分からんし
561デフォルトの名無しさん
2025/02/11(火) 10:54:21.93ID:E5oVpL7o お題
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
数列が入力されます
ニ番目に小さい数を出力してください
入力:4, 5, 1, 7, 1, 2, 8, 9, 2, 7
出力:2
562デフォルトの名無しさん
2025/02/11(火) 11:46:37.94ID:A5/Zs5AB こんちゃ
質問いいでしょうけ
プルダウン(ポップアップ)をUIとしてだすとして
見えている項目名と、実際にパラミータとして出す値を変えたい時はどうしたらよか
質問いいでしょうけ
プルダウン(ポップアップ)をUIとしてだすとして
見えている項目名と、実際にパラミータとして出す値を変えたい時はどうしたらよか
5639
2025/02/11(火) 14:53:15.78ID:mMj2PIa8 >>561 Perl5
$h{$_} = $_ for 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
@s = sort keys %h;
print "$s[1]\n";
実行結果
~ $ perl 22_561_second.pl
2
Perl5.26以降に付属のList::Utilにはuniq関数があるのでそれを使えば:
use List::Util qw(uniq);
@s = uniq sort 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
print "$s[1]\n";
$h{$_} = $_ for 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
@s = sort keys %h;
print "$s[1]\n";
実行結果
~ $ perl 22_561_second.pl
2
Perl5.26以降に付属のList::Utilにはuniq関数があるのでそれを使えば:
use List::Util qw(uniq);
@s = uniq sort 4, 5, 1, 7, 1, 2, 8, 9, 2, 7;
print "$s[1]\n";
564 警備員[Lv.20]
2025/02/11(火) 16:33:48.19ID:Y4Uu1QjJ >>562
環境や言語やフレームワークを書いて限定しないと色々な環境や言語やフレームワークでの答えが適当に沢山湧いて出て来る可能性あるぞ。
しかも分からない所は適当に解釈してだ。なぜならここはお題スレだから。
環境や言語やフレームワークを書いて限定しないと色々な環境や言語やフレームワークでの答えが適当に沢山湧いて出て来る可能性あるぞ。
しかも分からない所は適当に解釈してだ。なぜならここはお題スレだから。
565デフォルトの名無しさん
2025/02/11(火) 16:37:12.05ID:WPoAkGuN566デフォルトの名無しさん
2025/02/11(火) 16:40:21.13ID:gFwXvlnz567デフォルトの名無しさん
2025/02/11(火) 17:43:14.68ID:7RexIvi8568デフォルトの名無しさん
2025/02/11(火) 17:48:30.95ID:7RexIvi8569デフォルトの名無しさん
2025/02/11(火) 18:19:05.70ID:7RexIvi8570デフォルトの名無しさん
2025/02/11(火) 20:45:09.89ID:hMHygfcC571デフォルトの名無しさん
2025/02/11(火) 23:21:03.54ID:Vzh5cLYk 数列が入力されるので
整数の数列だけでなく浮動小数点数の数列にも対応してくださいね
ニ番目に小さい数がない時
例えば同じ数しか存在しない時や数列の長さが1の時には
解がないことを返してくださいね
例えばその時にMAX値が返ってきたら失格ですよ
整数の数列だけでなく浮動小数点数の数列にも対応してくださいね
ニ番目に小さい数がない時
例えば同じ数しか存在しない時や数列の長さが1の時には
解がないことを返してくださいね
例えばその時にMAX値が返ってきたら失格ですよ
572565
2025/02/11(火) 23:28:05.14ID:qmej6t155739
2025/02/11(火) 23:36:31.53ID:yxel6cu3 先に言えよって、感じw
574デフォルトの名無しさん
2025/02/11(火) 23:48:25.56ID:E5oVpL7o575デフォルトの名無しさん
2025/02/11(火) 23:50:12.69ID:HwVbkmdb 小数対応はともかく
max値を返してしまう人はプログラマ失格かな
あとsortを使ってしまう人は計算量を知らない初心者
max値を返してしまう人はプログラマ失格かな
あとsortを使ってしまう人は計算量を知らない初心者
576デフォルトの名無しさん
2025/02/11(火) 23:53:59.73ID:E5oVpL7o そういうこだわりはアスペルガーにしか思えないな、どうでも良いじゃないですかそんなこと
577デフォルトの名無しさん
2025/02/11(火) 23:56:29.96ID:E5oVpL7o こだわりは自分の胸のうちに留めていただきたい、他人に求めたら回答の幅を狭めるだけ、多様性のある回答こそ美しい
578デフォルトの名無しさん
2025/02/11(火) 23:57:23.71ID:HwVbkmdb579デフォルトの名無しさん
2025/02/11(火) 23:59:56.87ID:E5oVpL7o だからそういう、こうじゃないとダメだという態度がアスペルガー仕草なんだってばよ、君が思うのは勝手だが他人に求めるものじゃない
580デフォルトの名無しさん
2025/02/12(水) 00:01:10.34ID:hk2aQo3G プログラミングはもっと自由なものなんだよ、思ったとおりにかけば良い
5819
2025/02/12(水) 00:03:23.15ID:yw0CaA/O そういう条件は回答を見て思いついた後から言わず先に書くべきでは?
そうでなければ、与えられた短い文とテストデータから、
処理対象データの範囲や要求仕様を読み手が色々解釈しても仕方ないだろ。
後からいろいろ言って批判なんてでもってのほかだと思うが。
そうでなければ、与えられた短い文とテストデータから、
処理対象データの範囲や要求仕様を読み手が色々解釈しても仕方ないだろ。
後からいろいろ言って批判なんてでもってのほかだと思うが。
5829
2025/02/12(水) 00:05:30.21ID:yw0CaA/O 出来たもの見て実はこういう条件がありましたってケチつけるのはクソクライアントと一緒だな
583デフォルトの名無しさん
2025/02/12(水) 00:13:52.34ID:SJ0T1N6w ざっと見たけどmax()を返してるのはC++の人だけで他は皆まともだ
普段からまともなコード書いてるかどうかバレてしまうから自由が面白い
普段からまともなコード書いてるかどうかバレてしまうから自由が面白い
584デフォルトの名無しさん
2025/02/12(水) 00:18:10.68ID:hk2aQo3G 好きにしたら良いんやで吉田松陰もそんなこと言ってた気がする
585デフォルトの名無しさん
2025/02/12(水) 00:20:24.72ID:hk2aQo3G まともとかバレるとかそういう当て擦りの嫌味ったらしい言い方どこで身につけてきたのあんた、母ちゃんは悲しいよ
586デフォルトの名無しさん
2025/02/12(水) 00:22:24.96ID:Qtl/TEf65879
2025/02/12(水) 00:28:30.94ID:yw0CaA/O 「データが二個未満の場合にはnilを返す。」とか書いとくべき。
でもそういう細かい条件をちまちま指定した窮屈な課題は、つまんなくて回答を造る意欲が減るんだよな。
シンプルで純な課題に対してどういうエレガントでエッセンシャルな回答があるか考えるのが楽しいのであって、
細かいいろんな条件を守る周辺コードで固めるような作業はつまんないから趣味の世界ではやりたくないな
でもそういう細かい条件をちまちま指定した窮屈な課題は、つまんなくて回答を造る意欲が減るんだよな。
シンプルで純な課題に対してどういうエレガントでエッセンシャルな回答があるか考えるのが楽しいのであって、
細かいいろんな条件を守る周辺コードで固めるような作業はつまんないから趣味の世界ではやりたくないな
588デフォルトの名無しさん
2025/02/12(水) 00:31:16.47ID:1WuTe288 普段はプログラム載せるだけだけど、みんな意外と饒舌なんだなw
5899
2025/02/12(水) 00:33:57.88ID:yw0CaA/O ここはある意味、回答のコードでもって語るスレだからな
590デフォルトの名無しさん
2025/02/12(水) 00:35:35.77ID:kQv2EDFI お題にそんな指定ないのに
みんなnilなどを返してるからこのスレの住人たちはセンスいいな
みんなnilなどを返してるからこのスレの住人たちはセンスいいな
591デフォルトの名無しさん
2025/02/12(水) 19:12:16.26ID:FZJ50oR3 >>561 lisp (sbcl)
https://ideone.com/Bct7bC
>>561 lisp (clisp)
https://ideone.com/yqfmzh
clispだと何故かsort版の方が速い
https://ideone.com/Bct7bC
>>561 lisp (clisp)
https://ideone.com/yqfmzh
clispだと何故かsort版の方が速い
592デフォルトの名無しさん
2025/02/12(水) 20:45:54.96ID:JML0DDovレスを投稿する
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「高市さん負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 [樽悶★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★10 [ぐれ★]
- 【為替】対ドルで157円台、対ユーロ181円台に下落 財政悪化を警戒 [蚤の市★]
- トランプ氏「台湾侵攻すれば北京爆撃」“過激予告発言”報道がXで再燃「高市氏の1億倍やばい」 [七波羅探題★]
- フィフィ、中国の“日本産水産物輸入停止”措置に私見「中国依存しないとやっていけない企業は考えを改めて」 [Anonymous★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【高市外交】日本の局長が有能だったとの事。わざと困り顔で頭を下げる写真を撮らせ、中国内で好印象も、世界は中国の態度を非難という構図 [219241683]
- 【悲報】倉田真由美「なんで高市は子供がいる家庭に2万円給付するの?子供がいる家庭ばかり優遇するのおかしくね?」 [802034645]
- 関係者「高市首相は円安のデメリットをいまひとつ、わかっていないようだ」 [435756605]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 【悲報】新潟県消滅のお知らせ🧸
