プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
探検
プログラミングのお題スレ Part19
■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
622デフォルトの名無しさん
2021/04/20(火) 19:18:30.05ID:4HfXomGv 例ってそれぞれの入力してでどう言う出力なのか答え出さないと例にならんやん?
623蟻人間 ◆T6xkBnTXz7B0
2021/04/20(火) 20:00:19.11ID:fjai9OEL624蟻人間 ◆T6xkBnTXz7B0
2021/04/20(火) 20:07:07.92ID:fjai9OEL 全順序じゃないから、単純なソートアルゴリズムじゃダメみたいだね。
625蟻人間 ◆T6xkBnTXz7B0
2021/04/20(火) 20:14:12.39ID:fjai9OEL626608
2021/04/20(火) 23:18:11.98ID:F5cpVo8A627デフォルトの名無しさん
2021/04/21(水) 00:20:12.53ID:BjBFMDAR628デフォルトの名無しさん
2021/04/21(水) 04:35:47.26ID:BjBFMDAR630デフォルトの名無しさん
2021/04/21(水) 11:28:35.43ID:feIJLTYL 例えば>>821の時は順序の生成元が
E<A, D<B, B<C, B<E
この中で先頭に持ってきて良いものを探す
それはつまり「何かに依存していないもの」
この状態ではA,B,C,Eは何かに依存しているのでダメ
よってこの場合Dしかない
残りA,B,C,Eの順序を決める
その際順序の生成元からD<Xの形は取り除く
つまり
E<A, B<C, B<E
依存していないものはBのみなのでBが2番目
残りA,C,Eで順序の生成元はE<Aのみ
依存してないのはC,Eでどちらがきても良い
‥
数学的には“何かに依存していない”はその“半順序”における“極小元”
そして極小元になり得る必要十分条件がまさに「順序の生成系の中でそれより小さいものがないもの」、すなわち「何かに依存してないもの」とわかる(証明も簡単)
そしてこの作業に於いて順序の生成系にループが有れば、例えばx<y,y<z,z<xのようなものが有ればx,y,zは最後まで取り除かれず、最後には「まだ元は残ってるけど極小元なし」の状態に到達してしまうのでその時点でerror判定して終了すれば良い
E<A, D<B, B<C, B<E
この中で先頭に持ってきて良いものを探す
それはつまり「何かに依存していないもの」
この状態ではA,B,C,Eは何かに依存しているのでダメ
よってこの場合Dしかない
残りA,B,C,Eの順序を決める
その際順序の生成元からD<Xの形は取り除く
つまり
E<A, B<C, B<E
依存していないものはBのみなのでBが2番目
残りA,C,Eで順序の生成元はE<Aのみ
依存してないのはC,Eでどちらがきても良い
‥
数学的には“何かに依存していない”はその“半順序”における“極小元”
そして極小元になり得る必要十分条件がまさに「順序の生成系の中でそれより小さいものがないもの」、すなわち「何かに依存してないもの」とわかる(証明も簡単)
そしてこの作業に於いて順序の生成系にループが有れば、例えばx<y,y<z,z<xのようなものが有ればx,y,zは最後まで取り除かれず、最後には「まだ元は残ってるけど極小元なし」の状態に到達してしまうのでその時点でerror判定して終了すれば良い
632デフォルトの名無しさん
2021/04/21(水) 12:03:04.18ID:v7jA28gl お題が気持ち悪い
単に有向グラフの辺となるものだけ指定すれば良いのに
依存とか書いちゃうから以下みたいな間接依存が許されない雰囲気
AはBに依存
BはCに依存
単に有向グラフの辺となるものだけ指定すれば良いのに
依存とか書いちゃうから以下みたいな間接依存が許されない雰囲気
AはBに依存
BはCに依存
633デフォルトの名無しさん
2021/04/21(水) 19:33:37.67ID:tmGizupL 蟻野郎が順序集合理解してるとも思えない。
634デフォルトの名無しさん
2021/04/21(水) 19:35:00.12ID:/BbfB4Z5635デフォルトの名無しさん
2021/04/21(水) 19:48:52.11ID:Y7fj3JnX 順序集合の定義自体は超簡単じゃね?
順序集合の定理なんか使わないから順序集合なんて言葉を使う必要もないけど
アルゴリズム的には
極大(極小)元の中で名前順の先頭である元を取り出す
を繰り返すだけで良い
取り出せなくなってまだ残っていたらERROR
>>630みたいに無駄に長く説明しなくて良い
順序集合の定理なんか使わないから順序集合なんて言葉を使う必要もないけど
アルゴリズム的には
極大(極小)元の中で名前順の先頭である元を取り出す
を繰り返すだけで良い
取り出せなくなってまだ残っていたらERROR
>>630みたいに無駄に長く説明しなくて良い
636デフォルトの名無しさん
2021/04/21(水) 19:59:05.72ID:tmGizupL 順序集合真面目にやるなら集合と位相について学ぶ必要があるわけで
637デフォルトの名無しさん
2021/04/21(水) 20:12:32.68ID:rPf7kV48 そりゃーC++には半順序がバンバン出てくるから選ばれた人間向けの言語だよ。
638蟻人間 ◆T6xkBnTXz7B0
2021/04/21(水) 22:08:22.58ID:OiYnhzgp >>634
ちゃんと理解して実装したぜ。
https://github.com/katahiromz/OleBow/commit/f65c774b625385e855971adb1275de1fd6ebee0c
循環参照の例がうまくいかないけど。
// :: IBindCtx: IRunningObjectTable
// :: IEnumMoniker: IMoniker
// :: IMoniker: IBindCtx
// :: IMoniker: IEnumMoniker
// :: IRunningObjectTable: IEnumMoniker
// :: IRunningObjectTable: IMoniker
// :: PartitionMoniker: IMoniker
// :: SoapMoniker: IMoniker
ポインタ型とかは後回しでいっかな。
ちゃんと理解して実装したぜ。
https://github.com/katahiromz/OleBow/commit/f65c774b625385e855971adb1275de1fd6ebee0c
循環参照の例がうまくいかないけど。
// :: IBindCtx: IRunningObjectTable
// :: IEnumMoniker: IMoniker
// :: IMoniker: IBindCtx
// :: IMoniker: IEnumMoniker
// :: IRunningObjectTable: IEnumMoniker
// :: IRunningObjectTable: IMoniker
// :: PartitionMoniker: IMoniker
// :: SoapMoniker: IMoniker
ポインタ型とかは後回しでいっかな。
639デフォルトの名無しさん
2021/04/22(木) 06:53:19.23ID:fMSh/hUg 俺ももっと勉強しないとなあ
640デフォルトの名無しさん
2021/04/22(木) 07:08:36.76ID:DXDf8hNh >>620 Ruby
# Array
rule = []
while gets
break unless m = /^\s*(\w)は(\w)?(?:,\s*(\w))*/.match( $_ )
rule << m.to_a[1..] - [nil]
end
solution = []
loop {
free = []
break if rule.delete_if{|a| a.size == 1 && free << a[0] && solution << a[0] }.empty?
free.each{|d| rule.each_index{|i| rule[i] -= [d] } }
}
puts (rule.empty?)? "(#{solution.join(', ')})." : "ERROR"
# Array
rule = []
while gets
break unless m = /^\s*(\w)は(\w)?(?:,\s*(\w))*/.match( $_ )
rule << m.to_a[1..] - [nil]
end
solution = []
loop {
free = []
break if rule.delete_if{|a| a.size == 1 && free << a[0] && solution << a[0] }.empty?
free.each{|d| rule.each_index{|i| rule[i] -= [d] } }
}
puts (rule.empty?)? "(#{solution.join(', ')})." : "ERROR"
641デフォルトの名無しさん
2021/04/22(木) 07:09:10.65ID:DXDf8hNh >>620 Ruby
# Bit演算
rule = []
while gets
break unless m = /^\s*([A-Z])は([A-Z])?(?:,\s*([A-Z]))*/i.match( $_ )
rule << [ m[1].upcase, m.to_a[2..].inject(0){|r,c| (c)? r | (1 << c.upcase.ord - ?A.ord) : r } ]
end
solution = []
loop {
free = []
break if rule.delete_if{|a| a[1] == 0 && free << a[0] && solution << a[0] }.empty?
free.each{|d| rule.each_index{|i| rule[i][1] &= ~ (1 << d.ord - ?A.ord) } }
}
puts (rule.empty?)? "(#{solution.join(', ')})." : "ERROR"
# Bit演算
rule = []
while gets
break unless m = /^\s*([A-Z])は([A-Z])?(?:,\s*([A-Z]))*/i.match( $_ )
rule << [ m[1].upcase, m.to_a[2..].inject(0){|r,c| (c)? r | (1 << c.upcase.ord - ?A.ord) : r } ]
end
solution = []
loop {
free = []
break if rule.delete_if{|a| a[1] == 0 && free << a[0] && solution << a[0] }.empty?
free.each{|d| rule.each_index{|i| rule[i][1] &= ~ (1 << d.ord - ?A.ord) } }
}
puts (rule.empty?)? "(#{solution.join(', ')})." : "ERROR"
642デフォルトの名無しさん
2021/04/22(木) 20:40:45.65ID:euTe4E7l お題
JSONでシリアライズされた未知のm×nの行列が与えられる。
転置行列を返せ。転置行列はシリアライズされていなくてもよい。
例
入力
"[[1,2],[3,4]]"
出力
[[1,3],[2,4]]
JSONでシリアライズされた未知のm×nの行列が与えられる。
転置行列を返せ。転置行列はシリアライズされていなくてもよい。
例
入力
"[[1,2],[3,4]]"
出力
[[1,3],[2,4]]
643デフォルトの名無しさん
2021/04/23(金) 05:15:31.62ID:dol38sZT644デフォルトの名無しさん
2021/04/23(金) 07:10:55.59ID:M88Kc634 当然transpose標準で用意されてる言語はそうなるわなw
645デフォルトの名無しさん
2021/04/23(金) 13:43:38.22ID:Vuss2QH6646蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 15:35:20.99ID:CrWxBL6F お題: コマンドラインで動作するエクセルもどきを作れ。入力テキストの中身に特定の形式の「フィールド」(field: 欄)を埋め込んでおく。今回はフィールドは以下のような形式で表現される。
(1) {{=数式}}
(2) {{フィールド名:文字列}}
(3) {{フィールド名:=数式}}
フィールドは{{ }}で囲んだ文字列で指定される。
数式にはフィールド名を変数とする式を指定できる。フィールド名は半角英数字の組み合わせとする。
式は少なくとも、丸カッコと、整数の四則演算と、整数から文字列への変換と、文字列の連結をサポートすること。
入力テキストのそれぞれのフィールドを評価後の値に置き換えたテキストを出力せよ。フィールドの循環参照や式のエラーがあった場合はその場所に「ERROR」と出力せよ。
その他の仕様についてはエクセルをできる限りまねること。
(1) {{=数式}}
(2) {{フィールド名:文字列}}
(3) {{フィールド名:=数式}}
フィールドは{{ }}で囲んだ文字列で指定される。
数式にはフィールド名を変数とする式を指定できる。フィールド名は半角英数字の組み合わせとする。
式は少なくとも、丸カッコと、整数の四則演算と、整数から文字列への変換と、文字列の連結をサポートすること。
入力テキストのそれぞれのフィールドを評価後の値に置き換えたテキストを出力せよ。フィールドの循環参照や式のエラーがあった場合はその場所に「ERROR」と出力せよ。
その他の仕様についてはエクセルをできる限りまねること。
647蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 15:52:00.73ID:CrWxBL6F >>646 追記。
フィールド名は英字で始まるものとする。
(入力例)
こんにちは、{{NAME:蟻人間}}さん。
今年は{{:=Y}}年です。来年は{{:=Y+1}}年です。
A={{A:=1}}.
B={{B:=2}}.
A+B+4={{=A+B+4}}.
A*B-2={{=A*B-2}}.
日付: {{Y:=2021}}年{{M:=4}}月{{D:=27}}日
{{:="<"&NAME&">"}}
フィールド名は英字で始まるものとする。
(入力例)
こんにちは、{{NAME:蟻人間}}さん。
今年は{{:=Y}}年です。来年は{{:=Y+1}}年です。
A={{A:=1}}.
B={{B:=2}}.
A+B+4={{=A+B+4}}.
A*B-2={{=A*B-2}}.
日付: {{Y:=2021}}年{{M:=4}}月{{D:=27}}日
{{:="<"&NAME&">"}}
648蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 16:21:47.75ID:CrWxBL6F >>647 さらに追記。
{{=数式}}と{{:=数式}}は同じように解釈すること。
{{=数式}}と{{:=数式}}は同じように解釈すること。
649デフォルトの名無しさん
2021/04/27(火) 16:53:41.78ID:B18ZzSzj {{数式}}でいいだろセンスねぇな
650蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 17:02:02.42ID:CrWxBL6F651蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 17:08:35.63ID:CrWxBL6F >>646 お題を書き直します。
お題: コマンドラインで動作するエクセルもどきを作れ。入力テキストの中身に特定の形式の「フィールド」(field: 欄)を埋め込んでおく。今回はフィールドは以下のような形式で表現される。
(1) {{数式}}
(2) {{フィールド名=数式}}
フィールドは{{ }}で囲んだ文字列で指定される。
数式にはフィールド名を変数とする式を指定できる。フィールド名は英字で始まる半角英数字の組み合わせとする。
式は少なくとも、丸カッコと、整数の四則演算と、値の比較と、整数から文字列への変換と、文字列の連結をサポートすること。等号は二文字の==とする。
入力テキストのそれぞれのフィールドを評価後の値に置き換えたテキストを出力せよ。フィールドの循環参照や式のエラーがあった場合はその場所に「ERROR」と出力せよ。
お題: コマンドラインで動作するエクセルもどきを作れ。入力テキストの中身に特定の形式の「フィールド」(field: 欄)を埋め込んでおく。今回はフィールドは以下のような形式で表現される。
(1) {{数式}}
(2) {{フィールド名=数式}}
フィールドは{{ }}で囲んだ文字列で指定される。
数式にはフィールド名を変数とする式を指定できる。フィールド名は英字で始まる半角英数字の組み合わせとする。
式は少なくとも、丸カッコと、整数の四則演算と、値の比較と、整数から文字列への変換と、文字列の連結をサポートすること。等号は二文字の==とする。
入力テキストのそれぞれのフィールドを評価後の値に置き換えたテキストを出力せよ。フィールドの循環参照や式のエラーがあった場合はその場所に「ERROR」と出力せよ。
652蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 17:10:52.46ID:CrWxBL6F >>651
(入力例)
こんにちは、{{NAME=蟻人間}}さん。
今年は{{Y}}年です。来年は{{Y+1}}年です。
A={{A=1}}.
B={{B=2}}.
A+B+4={{A+B+4}}.
A*M-2={{A*M-2}}.
日付: {{Y=2021}}年{{M=4}}月{{D=27}}日
{{"☆ "&NAME&" ☆"}}
(入力例)
こんにちは、{{NAME=蟻人間}}さん。
今年は{{Y}}年です。来年は{{Y+1}}年です。
A={{A=1}}.
B={{B=2}}.
A+B+4={{A+B+4}}.
A*M-2={{A*M-2}}.
日付: {{Y=2021}}年{{M=4}}月{{D=27}}日
{{"☆ "&NAME&" ☆"}}
653デフォルトの名無しさん
2021/04/27(火) 20:20:55.02ID:MrWPWVr1 連投死ねクソ蟻
お前に来年は来ねえよ
お前に来年は来ねえよ
654蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 22:28:29.02ID:CrWxBL6F655蟻人間 ◆T6xkBnTXz7B0
2021/04/27(火) 22:30:28.43ID:CrWxBL6F 人間がボットみたいなことやってたらカバみたいだね。ほんとほんと。
656デフォルトの名無しさん
2021/05/03(月) 17:08:04.28ID:meUcD9ks お題
ファイルパスを入力として受け取り、そのサブパスをすべて出力してください
入力: A/B/B/B
出力:
A
A/B
A/B/B
A/B/B/B
ファイルパスを入力として受け取り、そのサブパスをすべて出力してください
入力: A/B/B/B
出力:
A
A/B
A/B/B
A/B/B/B
657デフォルトの名無しさん
2021/05/03(月) 19:31:00.21ID:vyn1ULyt >>656 Ruby
'A/B/B/B'.gsub(/.+?(?<=\/|$)/).reduce(''){|s, a|p s + a}
# => "A/"
"A/B/"
"A/B/B/"
"A/B/B/B"
'A/B/B/B'.gsub(/.+?(?<=\/|$)/).reduce(''){|s, a|p s + a}
# => "A/"
"A/B/"
"A/B/B/"
"A/B/B/B"
658デフォルトの名無しさん
2021/05/03(月) 20:05:34.50ID:vJY6tWsE >>656
haskell
import Data.List
subPathes p = [ str |
str' <- tail $ inits $ p ++ "/",
last str' == '/',
let str = ( reverse $ inits str' ) !! 1 ]
main = mapM print $ subPathes "A/B/B/B"
haskell
import Data.List
subPathes p = [ str |
str' <- tail $ inits $ p ++ "/",
last str' == '/',
let str = ( reverse $ inits str' ) !! 1 ]
main = mapM print $ subPathes "A/B/B/B"
659デフォルトの名無しさん
2021/05/03(月) 22:24:37.21ID:v5K6mFSj >>656 C
char *str = "A/B/B/B";
int i = 0;
while (str[i]) {
if (str[i] == '/') {
char c[i + 1];
memcpy(c, str, i);
c[i] = 0;
printf("%s\n", c);
}
i++;
}
printf("%s\n", str);
char *str = "A/B/B/B";
int i = 0;
while (str[i]) {
if (str[i] == '/') {
char c[i + 1];
memcpy(c, str, i);
c[i] = 0;
printf("%s\n", c);
}
i++;
}
printf("%s\n", str);
660デフォルトの名無しさん
2021/05/03(月) 22:28:25.61ID:Fl247JAk >>656 Ruby
gets.split( ?/ ).inject( [] ){|r,d| (r << d).tap{|t| puts t * ?/ } }
gets.split( ?/ ).inject( [] ){|r,d| (r << d).tap{|t| puts t * ?/ } }
661デフォルトの名無しさん
2021/05/03(月) 23:35:00.95ID:ED/pHj/W python
import sys
from pathlib import PurePath
for x in PurePath(sys.argv[1]).parents: print(x)
import sys
from pathlib import PurePath
for x in PurePath(sys.argv[1]).parents: print(x)
662デフォルトの名無しさん
2021/05/04(火) 01:17:51.79ID:BGUDbBhh >>656
Kotlin
https://paiza.io/projects/KhmBe1ysOa3PIaPX7xJkDg
最初は再帰でやろうと思ったけど止めて、Kotlin らしく拡張プロパティ作って実現した。
Kotlin
https://paiza.io/projects/KhmBe1ysOa3PIaPX7xJkDg
最初は再帰でやろうと思ったけど止めて、Kotlin らしく拡張プロパティ作って実現した。
663デフォルトの名無しさん
2021/05/04(火) 02:03:51.93ID:BGUDbBhh 文字列をPATHの区切り文字で後ろから検索しないで先頭から検索しても同じと気付いたのでこっそり直した。
664デフォルトの名無しさん
2021/05/04(火) 18:30:10.36ID:0HSekrvc >>656 Ruby
def f(s)
a=s.split("/")
(0..a.size-1).map{|i| a[0..i].join("/")}
end
p f("A/B/B/B")
実行結果
["A", "A/B", "A/B/B", "A/B/B/B"]
def f(s)
a=s.split("/")
(0..a.size-1).map{|i| a[0..i].join("/")}
end
p f("A/B/B/B")
実行結果
["A", "A/B", "A/B/B", "A/B/B/B"]
665デフォルトの名無しさん
2021/05/06(木) 18:06:27.01ID:b7Mkjg0R >>656
Elixir
list = String.split( "a/bc/d", "/" ) # 分割
# 第2引数は、蓄積変数の初期値
%{ list: result } = Enum.reduce( list, %{ list: [ ], word: "" }, fn( str, acc )->
tmp_str = acc.word <> str # 文字だけを連結する。/ は連結しない
acc = %{ acc | list: acc.list ++ [ tmp_str ] } # 連結
acc = %{ acc | word: tmp_str <> "/" } # 連結
acc
end )
IO.inspect result
#=> ["a", "a/bc", "a/bc/d"]
Elixir
list = String.split( "a/bc/d", "/" ) # 分割
# 第2引数は、蓄積変数の初期値
%{ list: result } = Enum.reduce( list, %{ list: [ ], word: "" }, fn( str, acc )->
tmp_str = acc.word <> str # 文字だけを連結する。/ は連結しない
acc = %{ acc | list: acc.list ++ [ tmp_str ] } # 連結
acc = %{ acc | word: tmp_str <> "/" } # 連結
acc
end )
IO.inspect result
#=> ["a", "a/bc", "a/bc/d"]
666デフォルトの名無しさん
2021/05/06(木) 18:47:12.53ID:wT5/oYmn a="ko/koh/oreo/n/eone"
['/'.join(a.split('/')[0:i+1]) for i in range(len(a.split('/')))]
['/'.join(a.split('/')[0:i+1]) for i in range(len(a.split('/')))]
667デフォルトの名無しさん
2021/05/06(木) 20:53:31.79ID:DSX8dnAp ここに練習用のいいファイルあるわ
https://tackle57.base.ec/
https://tackle57.base.ec/
668蟻人間 ◆T6xkBnTXz7B0
2021/05/06(木) 21:10:09.05ID:q2LSo660669デフォルトの名無しさん
2021/05/06(木) 21:37:58.66ID:ajjDZVcw >>667
さりげなく妙に高い値段のソフトの販売サイトに誘導しないように。
さりげなく妙に高い値段のソフトの販売サイトに誘導しないように。
670デフォルトの名無しさん
2021/05/06(木) 21:43:26.28ID:F7n15kLE >>668
答え:お前の存在が間違い
答え:お前の存在が間違い
672デフォルトの名無しさん
2021/05/06(木) 22:23:58.98ID:wWHyWlvf >>668
#include <studio.h>
#include <studio.h>
673行間を読みなさいw
2021/05/07(金) 13:48:08.72ID:H+I+sfZ3 WHEREコマンドはReactOSに既に実装されています。
なので、(あえて作る場合でも)それを基にしてく
ださい(よ、頼むからさ。失礼だと思わないの?)
>コマンドではなく機能です。そして(既に実装されている)
>それは、この目的に対して便利ではありません。
貴方は公開されている(ReactOS実装の?)関数の
コードをパクって、独立したアプリケーションにしたと
いうわけですね。
というのであれば(我々の)メインストリームコードと
同期しているサードパーティコードみたいな感じを
装う必要はありません(はっきり言わせてもらえば
「しないで下さい」)
なので、(あえて作る場合でも)それを基にしてく
ださい(よ、頼むからさ。失礼だと思わないの?)
>コマンドではなく機能です。そして(既に実装されている)
>それは、この目的に対して便利ではありません。
貴方は公開されている(ReactOS実装の?)関数の
コードをパクって、独立したアプリケーションにしたと
いうわけですね。
というのであれば(我々の)メインストリームコードと
同期しているサードパーティコードみたいな感じを
装う必要はありません(はっきり言わせてもらえば
「しないで下さい」)
674デフォルトの名無しさん
2021/05/07(金) 13:57:45.37ID:H+I+sfZ3 システムで色々な箇所で使用される短縮名称
を正式名称と(相互)変換する機能なんて
アルゴリズムとかの題材とかには不適。
泥臭い部分がかなりあるシステム固有の設計
の話になるしたとえコードは公開しているに
せよ部外者の立ち入りは歓迎されないのは
当然。 実情を詳しく知らない外部の人に
任せられる部分じゃなかったりするから。
を正式名称と(相互)変換する機能なんて
アルゴリズムとかの題材とかには不適。
泥臭い部分がかなりあるシステム固有の設計
の話になるしたとえコードは公開しているに
せよ部外者の立ち入りは歓迎されないのは
当然。 実情を詳しく知らない外部の人に
任せられる部分じゃなかったりするから。
675デフォルトの名無しさん
2021/05/07(金) 19:10:13.55ID:FdFZQv1E >>656 JavaScript
"A/B/B/B".replace(/^\/|\/?[^\/]*/g, (_, o, s) => console.log(s.substring(0, o)));
"A/B/B/B".replace(/^\/|\/?[^\/]*/g, (_, o, s) => console.log(s.substring(0, o)));
676Mb
2021/05/07(金) 22:02:57.18ID:P+8SzjSX 読み仮名(ひらがな、カタカナ)から、単純なコード順の整列キーを
生成するルーチンを書く。
単純にコード順で整列すると、「ガレージ」は「カレー」の直後には
こなくて、「か(蚊)」の後ではなく、「ガ(蛾)」の後に
来てしまう。
比較関数を定義しようとすると、順序関係が一意に決まらなくなって
整列ルーチンが止まらなくなる。また、SQL などの整列機能が利用できない。
業務系のシステムだと、企業名だとか個人名だとかの読みで整列する
要求があるので、読みの入力時に整列用のキーを生成しておくのが
吉と思われる。
生成するルーチンを書く。
単純にコード順で整列すると、「ガレージ」は「カレー」の直後には
こなくて、「か(蚊)」の後ではなく、「ガ(蛾)」の後に
来てしまう。
比較関数を定義しようとすると、順序関係が一意に決まらなくなって
整列ルーチンが止まらなくなる。また、SQL などの整列機能が利用できない。
業務系のシステムだと、企業名だとか個人名だとかの読みで整列する
要求があるので、読みの入力時に整列用のキーを生成しておくのが
吉と思われる。
677デフォルトの名無しさん
2021/05/08(土) 01:15:44.80ID:qYTbA2A2 >>651 C++
エクセル使ったことないから挙動が違ってたらごめんね
最後のほうはやっつけで書いたのでバグってるかもしれない
https://wandbox.org/permlink/AfU4a1aLrkxhkErW
エクセル使ったことないから挙動が違ってたらごめんね
最後のほうはやっつけで書いたのでバグってるかもしれない
https://wandbox.org/permlink/AfU4a1aLrkxhkErW
678デフォルトの名無しさん
2021/05/08(土) 05:04:40.43ID:PD8fhCnz680デフォルトの名無しさん
2021/05/08(土) 14:56:47.01ID:bO3UufY6681デフォルトの名無しさん
2021/05/09(日) 21:15:00.81ID:1F2i56L2 お題:
N 人が一列に並んでおり、左から i 人目の人は色 C[i] の服を着ています。
あるチームは次の条件を満たすとき、良いチームであると言います。
- 0 人以上が所属している。
- すべての色 i について、色 i の服を着た人がチームに偶数人所属している。
N 人から "連続する" 0 人以上を選んで良いチームを作るとき、
チームに所属する人の数としてあり得る最大値を求めて下さい。
制約:
1≦N≦10^6
1≦C[i]≦60
入力:
N
C1 C2 ... CN
入力例 1
5
1 2 3 3 1
出力例 1
2
入力例 2
5
1 2 3 4 5
出力例 2
0
N 人が一列に並んでおり、左から i 人目の人は色 C[i] の服を着ています。
あるチームは次の条件を満たすとき、良いチームであると言います。
- 0 人以上が所属している。
- すべての色 i について、色 i の服を着た人がチームに偶数人所属している。
N 人から "連続する" 0 人以上を選んで良いチームを作るとき、
チームに所属する人の数としてあり得る最大値を求めて下さい。
制約:
1≦N≦10^6
1≦C[i]≦60
入力:
N
C1 C2 ... CN
入力例 1
5
1 2 3 3 1
出力例 1
2
入力例 2
5
1 2 3 4 5
出力例 2
0
682デフォルトの名無しさん
2021/05/09(日) 22:47:51.84ID:YYfh4rSr >>681
Haskell
import Data.List
mxLenGoodTeams cs = let
teams = [ take j $ drop i $ cs |
i <- [ 0..( length cs - 1) ],
j <- [ 2 .. ( length cs - i ) ] ]
isGoodTeam team
= all ( even . length ) $ group $ sort $ team
in maximum $ ( 0 : ) $ map length $ filter isGoodTeam teams
main = do
print $ mxLenGoodTeams $ [ 1,2,3,3,1 ]
print $ mxLenGoodTeams $ [ 1,2,3,4,5 ]
Haskell
import Data.List
mxLenGoodTeams cs = let
teams = [ take j $ drop i $ cs |
i <- [ 0..( length cs - 1) ],
j <- [ 2 .. ( length cs - i ) ] ]
isGoodTeam team
= all ( even . length ) $ group $ sort $ team
in maximum $ ( 0 : ) $ map length $ filter isGoodTeam teams
main = do
print $ mxLenGoodTeams $ [ 1,2,3,3,1 ]
print $ mxLenGoodTeams $ [ 1,2,3,4,5 ]
683デフォルトの名無しさん
2021/05/10(月) 00:22:13.18ID:mAsL1Pq+684デフォルトの名無しさん
2021/05/10(月) 01:18:02.63ID:DR29Zbhh685デフォルトの名無しさん
2021/05/10(月) 01:18:51.44ID:DR29Zbhh686デフォルトの名無しさん
2021/05/11(火) 00:16:24.82ID:sq5XRTcM >>681
問題の意味がわからない。
> - すべての色 i について、色 i の服を着た人がチームに偶数人所属している。
とはどういう意味なのか?
「すべての色 i 」とは何か?
「色 i の服を着た人がチームに偶数人所属」というのはどういう意味なのか? 同じ色の服を着た人は存在しないのだよな?
問題の意味がわからない。
> - すべての色 i について、色 i の服を着た人がチームに偶数人所属している。
とはどういう意味なのか?
「すべての色 i 」とは何か?
「色 i の服を着た人がチームに偶数人所属」というのはどういう意味なのか? 同じ色の服を着た人は存在しないのだよな?
687デフォルトの名無しさん
2021/05/11(火) 05:10:59.51ID:TUYWs3v7 毎度ながら日本語も問題作成も入出力例もクッソ下手だとは思うが
おまえはおまえで読解力無さ過ぎ
連続した (1≦10^6)個のデータ
データ内容は 1≦60
データ内容が偶数個となる連続した部分の最大長
1 2 2 3 3 4 4 5 → 2 2 3 3 4 4 → 6
1 2 3 4 2 3 4 5 → 2 3 4 2 3 4 → 6
1 2 3 4 5 2 3 4 → - → 0
1 2 3 3 2 4 5 4 → 2 3 3 2 → 4
1 2 3 2 2 3 2 4 → 2 3 2 2 3 2 → 6
まあ例に関しては俺も人のこと言えない
陥りやすいミスを確認しやすいキラーサンプル的な例がいくつかあればベスト
おまえはおまえで読解力無さ過ぎ
連続した (1≦10^6)個のデータ
データ内容は 1≦60
データ内容が偶数個となる連続した部分の最大長
1 2 2 3 3 4 4 5 → 2 2 3 3 4 4 → 6
1 2 3 4 2 3 4 5 → 2 3 4 2 3 4 → 6
1 2 3 4 5 2 3 4 → - → 0
1 2 3 3 2 4 5 4 → 2 3 3 2 → 4
1 2 3 2 2 3 2 4 → 2 3 2 2 3 2 → 6
まあ例に関しては俺も人のこと言えない
陥りやすいミスを確認しやすいキラーサンプル的な例がいくつかあればベスト
688デフォルトの名無しさん
2021/05/11(火) 20:07:35.50ID:m1fDyeBb 入出力例は不親切だとは思うが
問題文自体は問題ないでしょう
あれが理解できないというのであれば理解できない側の能力に問題がある
問題文自体は問題ないでしょう
あれが理解できないというのであれば理解できない側の能力に問題がある
689デフォルトの名無しさん
2021/05/11(火) 20:11:36.25ID:jkEXfYRr 色C[i]
色i
終了
色i
終了
690デフォルトの名無しさん
2021/05/11(火) 20:21:52.62ID:IH6PME9X 色C[i]は「i番目の人が来ている服の色」
色iは単に色
色iは単に色
691デフォルトの名無しさん
2021/05/11(火) 20:23:51.68ID:PxX+uCNu692デフォルトの名無しさん
2021/05/11(火) 20:27:14.53ID:IH6PME9X693デフォルトの名無しさん
2021/05/11(火) 20:30:24.67ID:AKHuOMpp 別にiが添え字の自然数と宣言しているわけでもなし文法的にも間違ってない
アスペでもない限り理解できる
アスペでもない限り理解できる
694デフォルトの名無しさん
2021/05/11(火) 20:35:40.14ID:jkEXfYRr C[blue]みたいな?
iはインデックスじゃないんだ
iはインデックスじゃないんだ
695デフォルトの名無しさん
2021/05/11(火) 20:38:54.00ID:PxX+uCNu696デフォルトの名無しさん
2021/05/11(火) 20:40:02.84ID:aw7aUPl3 >>695
お、perlおじさんか?
お、perlおじさんか?
697デフォルトの名無しさん
2021/05/11(火) 20:40:22.57ID:PxX+uCNu >>686が嫌味で書いたのか本当にわからなかったのかはわからない
698デフォルトの名無しさん
2021/05/12(水) 10:57:02.98ID:xHZdId+E プログラミング言語が使えても日本語が使えないのでは話が伝わらない。
それだったらプログラミング言語でそのまま書いてくれた方がここのスレでは話が通じる。
それだったらプログラミング言語でそのまま書いてくれた方がここのスレでは話が通じる。
699デフォルトの名無しさん
2021/05/12(水) 12:28:32.10ID:kJR81pbU ・左から100番目の人はC[100]の色の服を着ていると読める
・列を自由に入力して良いのなら、最大値はN以下の偶数となり自明
・列を自由に入力して良いのなら、最大値はN以下の偶数となり自明
700デフォルトの名無しさん
2021/05/12(水) 14:17:43.85ID:Ro8bxiRw まるで競プロだな
701デフォルトの名無しさん
2021/05/12(水) 16:05:32.13ID:ASs2TDTE >>681
出題者です
問題文がわかりずらかったみたいですいません
想定解法書きます (配列はすべて 0-index です)
A[0] = 0
A[i] = A[i - 1] xor (2^(C[i - 1] - 1)) (1≦i≦N)
な配列 A を考えます
ある区間 [L, R) がいいチームであるならば、A[R] xor A[L] = 0 です (累積和と同じ発想です)
両辺に A[R] を xor すると A[L] = A[R] になります
R を全探索しながらあり得る L のうちで一番左側のものを連想配列などで求めることで
N = 10^6 などのケースでも高速に答えを得ることができます
出題者です
問題文がわかりずらかったみたいですいません
想定解法書きます (配列はすべて 0-index です)
A[0] = 0
A[i] = A[i - 1] xor (2^(C[i - 1] - 1)) (1≦i≦N)
な配列 A を考えます
ある区間 [L, R) がいいチームであるならば、A[R] xor A[L] = 0 です (累積和と同じ発想です)
両辺に A[R] を xor すると A[L] = A[R] になります
R を全探索しながらあり得る L のうちで一番左側のものを連想配列などで求めることで
N = 10^6 などのケースでも高速に答えを得ることができます
702デフォルトの名無しさん
2021/05/13(木) 13:08:14.73ID:tJiNVUVY 問題文の他例が二つしかないから分かりにくい
>>687の説明みるまで何が良いチームなのか分かりにくい
>>687の説明みるまで何が良いチームなのか分かりにくい
703デフォルトの名無しさん
2021/05/13(木) 19:07:49.38ID:3W7MB1VC > 一列に並んでおり、左から
左てなんだ?先頭末尾なら分かるが
> 良いチームであると言います
なんだそのモヤる日本語。普通にチームで良いだろ
チームの条件として色が偶数があれば良いんだから
> i 人目の人は色 C[i] の服を着て
あとの制約見るまで一意かと勘違いする。説明でいちいち C[i] と置くのもイミフ
説明をただただややこしくしてるだけ
仕事で仕様の説明でこんな喩え話してきたらキレるわ
左てなんだ?先頭末尾なら分かるが
> 良いチームであると言います
なんだそのモヤる日本語。普通にチームで良いだろ
チームの条件として色が偶数があれば良いんだから
> i 人目の人は色 C[i] の服を着て
あとの制約見るまで一意かと勘違いする。説明でいちいち C[i] と置くのもイミフ
説明をただただややこしくしてるだけ
仕事で仕様の説明でこんな喩え話してきたらキレるわ
704デフォルトの名無しさん
2021/05/13(木) 21:41:53.75ID:B4CYAsif 短気すぎるだろ
705Mb
2021/05/13(木) 21:42:39.21ID:kEXKw6jf >>693
> アスペでもない限り理解できる
「アスペルガー症候群」というのは、昔は「高機能広汎性発達障害」といって、
わりと馬鹿にしたもんでもない。かくいう私も、いわゆる「アスペ」の
一人だ。
ここで問題。日本語の(現代語の)動詞のうち、アルゴリズム的に押さえこめる
動詞(規則活用動詞)"以外の" 動詞はいくつあるか。
なお、「長尾の法則」(頭から見ていって、非・漢字から漢字に変化するところで、
文節は切れる)は使ってよし(「お」とか「ご」とかは名詞につくから、
このさい関係はなし)。
とりあえず六つはあって、サ変とかカ変とかは既知だけど、「そもそも、
どれだけあるのか?」っつー話になると、かなり面倒。
> アスペでもない限り理解できる
「アスペルガー症候群」というのは、昔は「高機能広汎性発達障害」といって、
わりと馬鹿にしたもんでもない。かくいう私も、いわゆる「アスペ」の
一人だ。
ここで問題。日本語の(現代語の)動詞のうち、アルゴリズム的に押さえこめる
動詞(規則活用動詞)"以外の" 動詞はいくつあるか。
なお、「長尾の法則」(頭から見ていって、非・漢字から漢字に変化するところで、
文節は切れる)は使ってよし(「お」とか「ご」とかは名詞につくから、
このさい関係はなし)。
とりあえず六つはあって、サ変とかカ変とかは既知だけど、「そもそも、
どれだけあるのか?」っつー話になると、かなり面倒。
706デフォルトの名無しさん
2021/05/13(木) 21:45:18.19ID:B4CYAsif707デフォルトの名無しさん
2021/05/13(木) 22:16:56.76ID:lZ9C/hi/ お前も短気すぎるw
708デフォルトの名無しさん
2021/05/13(木) 23:36:26.05ID:mWio4uhK さっさとPythonやらせれ
ちょっとでいいから
20年前に覚えたPerlに変わるマクロがいるんじゃああああああ
VBAでいいとかいわない
ちょっとでいいから
20年前に覚えたPerlに変わるマクロがいるんじゃああああああ
VBAでいいとかいわない
709デフォルトの名無しさん
2021/05/14(金) 11:54:50.47ID:l/Mcr9Yu バカの書いた不適切な文書は不和をもたらす
>>681のことな
>>681のことな
710デフォルトの名無しさん
2021/05/14(金) 13:21:20.02ID:23AH7lhZ もうこれからは出題するときは頭に馬鹿には理解できない問題
ってとりあえず書いておけばいいのに
そうすれば荒れることもなくなるだろうから
ってとりあえず書いておけばいいのに
そうすれば荒れることもなくなるだろうから
711デフォルトの名無しさん
2021/05/14(金) 13:38:00.72ID:f3dsViZI 【コミュニティの一生】
面白い人が面白いことをする
↓
面白いから凡人が集まってくる
↓
住み着いた凡人が居場所を守るために主張し始める
↓
面白い人が見切りをつけて居なくなる
↓
残った凡人が面白くないことをする
↓
面白くないので皆居なくなる
面白い人が面白いことをする
↓
面白いから凡人が集まってくる
↓
住み着いた凡人が居場所を守るために主張し始める
↓
面白い人が見切りをつけて居なくなる
↓
残った凡人が面白くないことをする
↓
面白くないので皆居なくなる
712デフォルトの名無しさん
2021/05/14(金) 14:08:14.84ID:4R64iY9Y 問題を作るのは難しいからしゃあない
どんな入力で、求めるのが値なのかアルゴリズムなのかを明示すればいい
どんな入力で、求めるのが値なのかアルゴリズムなのかを明示すればいい
713デフォルトの名無しさん
2021/05/14(金) 15:59:25.59ID:BwDBHw+5 お題: join関数を自作せよ
join関数は第2引数の配列を第1引数の文字列で連結する関数である
func join(sep, array)
s = join(':', ['1', '2', '3'])
puts(s)
# 1:2:3
sepは文字列で、文字列で無かった場合の動作は未定義である
arrayは長さが0以上の配列で要素は文字列である。それ以外の構造は未定義である
join関数は第2引数の配列を第1引数の文字列で連結する関数である
func join(sep, array)
s = join(':', ['1', '2', '3'])
puts(s)
# 1:2:3
sepは文字列で、文字列で無かった場合の動作は未定義である
arrayは長さが0以上の配列で要素は文字列である。それ以外の構造は未定義である
714デフォルトの名無しさん
2021/05/14(金) 16:23:22.95ID:WbiXCFQ1 先に解答例を作ってそこから試験問題作る先生のように
逆にたどって問題作れば分かり易い問題作れるのに
イキって、よーし、ぼくちゃん問題作っちゃるぞー!って、
解答未定のまま問題から作り始めるから今回のようにアフォなことになるんよ
逆にたどって問題作れば分かり易い問題作れるのに
イキって、よーし、ぼくちゃん問題作っちゃるぞー!って、
解答未定のまま問題から作り始めるから今回のようにアフォなことになるんよ
715デフォルトの名無しさん
2021/05/14(金) 16:35:13.82ID:cn5v//cT python
def joint(s,x,y=""):
if len(x) == 1:
print(f"{x[-1]}{y}")
else:
joint(s,x[:-1],f"{s}{x[-1]}{y}"))
def joint(s,x,y=""):
if len(x) == 1:
print(f"{x[-1]}{y}")
else:
joint(s,x[:-1],f"{s}{x[-1]}{y}"))
716デフォルトの名無しさん
2021/05/14(金) 16:45:17.02ID:4R64iY9Y717デフォルトの名無しさん
2021/05/14(金) 19:57:58.55ID:BwDBHw+5718デフォルトの名無しさん
2021/05/14(金) 20:06:49.42ID:m9ewaxml >>713
Haskell
join x = tail . concat . map ( ( x : ) . return )
main = do
print $ join ':' "123"
print $ join ' ' "Hello"
Haskell
join x = tail . concat . map ( ( x : ) . return )
main = do
print $ join ':' "123"
print $ join ' ' "Hello"
719デフォルトの名無しさん
2021/05/14(金) 20:28:04.72ID:DpIMp/DM >>713 Lua
function join(d, a)
local r = a[1]
for i = 2, #a do
r = r .. d .. a[i]
end
return r
end
print(join(":", {"1", "2", "3"}))
実行結果
1:2:3
function join(d, a)
local r = a[1]
for i = 2, #a do
r = r .. d .. a[i]
end
return r
end
print(join(":", {"1", "2", "3"}))
実行結果
1:2:3
720デフォルトの名無しさん
2021/05/14(金) 20:49:04.94ID:SGxg0iSp def join(sep, list)
□return sep.join(list)
□return sep.join(list)
721デフォルトの名無しさん
2021/05/14(金) 21:20:46.78ID:9KJ7FZky722デフォルトの名無しさん
2021/05/14(金) 21:50:11.90ID:G1LerHLY■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★2 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に [ぐれ★]
- 米中電話会談、トランプ氏は「米国側は中国にとっての台湾問題の重要性を理解する」 [1ゲットロボ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 【音楽】「なんでこんなバカが国のトップなの?」 若者に人気のバンド「GEZAN」のマヒトゥ・ザ・ピーポーが高市総理に苦言 [シャチ★]
- 【国際】トランプ氏、来年4月に中国を訪問する招待を受け入れる 習氏も国賓で訪米へ 電話会談 [ぐれ★]
- 専門家「社会不安や不満が高まると、人々は原因を単純化し外集団を脅威として捉えやすくなります」政権批判か?😡 [399259198]
- ーーーーー力が欲しいんかーーーーー?
- 【画像】なんか模型屋さんにいかにもお前らが好んでそうなアキバ系のアニメ?のキャラいたけどこれなに?
- 【高市悲報】来年、習近平主席がアメリカに「国賓」として訪米。どうするんだよ高市・・・アメリカも敵に回すのか? [483862913]
- フィフィ「外国人だろうが日本人だろうが反日は要らんのよ、この国に…自分にとって住みやすい国に行け。」 [856698234]
- (´・ω・`)寂しい男性達
