プログラミングのお題スレです。
【出題と回答例】
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
112デフォルトの名無しさん
2020/12/18(金) 19:01:11.88ID:Dh0d5aQR お題: ランダムに生成されるバイナリツリーがある
ツリーのルートから見て最も左にあるノードと最も右にあるノードの位置を出力せよ
位置はツリーのルートが原点とする
x座標は原点から左に進むとマイナスになり、右に進むとプラスになる
y座標は原点から下に進むとプラスになるものとする
生成されるツリーは原点から下に向かって伸びていくものとする
生成されるツリーの最大の高さは8とする
出力例は↓のようになる
l = -3, 4
r = 5, 7
ツリーのルートから見て最も左にあるノードと最も右にあるノードの位置を出力せよ
位置はツリーのルートが原点とする
x座標は原点から左に進むとマイナスになり、右に進むとプラスになる
y座標は原点から下に進むとプラスになるものとする
生成されるツリーは原点から下に向かって伸びていくものとする
生成されるツリーの最大の高さは8とする
出力例は↓のようになる
l = -3, 4
r = 5, 7
113デフォルトの名無しさん
2020/12/18(金) 21:17:47.26ID:lt1DqoeP114デフォルトの名無しさん
2020/12/18(金) 22:39:29.15ID:Dh0d5aQR >>113
そういう感じ
そういう感じ
115デフォルトの名無しさん
2020/12/18(金) 22:55:15.81ID:Dh0d5aQR >>113
あとツリーの最大の横幅は原点から左右に8ずつで
あとツリーの最大の横幅は原点から左右に8ずつで
116デフォルトの名無しさん
2020/12/19(土) 09:08:43.96ID:Hvq3yNww >>103 J
a =: /:~ ',' & cutopen @ >cutopen stdin ''
f =: >@{. , ','&,@>@{:
smoutput f"1 a #~ ~: {. "1 a
a =: /:~ ',' & cutopen @ >cutopen stdin ''
f =: >@{. , ','&,@>@{:
smoutput f"1 a #~ ~: {. "1 a
117デフォルトの名無しさん
2020/12/19(土) 09:49:26.96ID:x1EY5aRu Jニキひさびさ
1189
2020/12/19(土) 14:32:22.06ID:gCQF7SSG >>103 Perl5
@a = qw{c,e b,c c,f b,d a,b c,g};
$h{(/(\w)/)[0]} //= $_ for @a;
print "$_\n" for map{$h{$_}} sort keys %h;
実行結果
~ $ perl 19_103.pl
a,b
b,c
c,e
@a = qw{c,e b,c c,f b,d a,b c,g};
$h{(/(\w)/)[0]} //= $_ for @a;
print "$_\n" for map{$h{$_}} sort keys %h;
実行結果
~ $ perl 19_103.pl
a,b
b,c
c,e
119デフォルトの名無しさん
2020/12/19(土) 18:39:10.13ID:gcxM+qzh120デフォルトの名無しさん
2020/12/19(土) 20:00:26.12ID:gcxM+qzh12189
2020/12/20(日) 03:24:48.64ID:zjFPqMXn >>89
https://ideone.com/lQvahn
投稿があった、O(√)以外の方法もあるみたいなので、両方を載せておこう。
他方は、O(N)解法の最後の方の同じ数をまとめて計算するやり方。
O(√)解法より確実に計算量が多い。
https://ideone.com/lQvahn
投稿があった、O(√)以外の方法もあるみたいなので、両方を載せておこう。
他方は、O(N)解法の最後の方の同じ数をまとめて計算するやり方。
O(√)解法より確実に計算量が多い。
122デフォルトの名無しさん
2020/12/20(日) 14:30:37.82ID:ocWFq0h7 >>98
Kotlin 及び Kotlin script
target_char の場合
fun wrap(text: String, target_char: Char, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_char.toString(), "$tag_left$target_char$tag_right")
target_str の場合
fun wrap(text: String, target_str: String, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_str, "$tag_left$target_str$tag_right")
要するに Java の String クラスの replace() 使ってるので、肝心な部分は何も考えてない。
tag_left, tag_right はデフォルト値として '<', '>' を指定しているので呼び出す側で指定しなければこれになる。
もう少しだけ Kotlin らしくするとしたら拡張関数にするぐらいかな。
fun String.wrap(target_str: String, tag_left: Char = '<', tag_right: Char = '>') = replace(target_str, "$tag_left$target_str$tag_right")
これで String クラスのメソッドになるので "abcabc".wrap("bc") が "a<bc>a<bc>" を返すようになる。
Kotlin 及び Kotlin script
target_char の場合
fun wrap(text: String, target_char: Char, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_char.toString(), "$tag_left$target_char$tag_right")
target_str の場合
fun wrap(text: String, target_str: String, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_str, "$tag_left$target_str$tag_right")
要するに Java の String クラスの replace() 使ってるので、肝心な部分は何も考えてない。
tag_left, tag_right はデフォルト値として '<', '>' を指定しているので呼び出す側で指定しなければこれになる。
もう少しだけ Kotlin らしくするとしたら拡張関数にするぐらいかな。
fun String.wrap(target_str: String, tag_left: Char = '<', tag_right: Char = '>') = replace(target_str, "$tag_left$target_str$tag_right")
これで String クラスのメソッドになるので "abcabc".wrap("bc") が "a<bc>a<bc>" を返すようになる。
123デフォルトの名無しさん
2020/12/20(日) 17:39:53.62ID:ocWFq0h7124デフォルトの名無しさん
2020/12/20(日) 18:33:53.02ID:1LcS4Wc6 >>98 JavaScript
const wrap = (text, target_str, tag_left='<', tag_right='>') => text.replace(RegExp(target_str, 'g'), tag_left + target_str + tag_right);
const wrap = (text, target_str, tag_left='<', tag_right='>') => text.replace(RegExp(target_str, 'g'), tag_left + target_str + tag_right);
125デフォルトの名無しさん
2020/12/21(月) 19:30:10.34ID:Mnipwtco126デフォルトの名無しさん
2020/12/23(水) 21:01:46.74ID:IGuwyxwv [お題] 和が2021の倍数
2021000以下の素数を昇順に並べた数列がある。
[2, 3, 5, ..., 2020979, 2020999] 項目数:150399
この数列より 空でない連続する部分列を P とする。
(全てのPの選び方はNCR(150399+1, 2) = 約113億通りある)
Pの和が2021の倍数となるのは何通りあるか。
[8081,8087] [3361, 3371, 3373] [2011, 2017, 2027, 2029] 等が該当するP
※無駄に素数を乱数代わりに使った、一発正解問題
※実行時間は素数生成を含めて、3秒以内
2021000以下の素数を昇順に並べた数列がある。
[2, 3, 5, ..., 2020979, 2020999] 項目数:150399
この数列より 空でない連続する部分列を P とする。
(全てのPの選び方はNCR(150399+1, 2) = 約113億通りある)
Pの和が2021の倍数となるのは何通りあるか。
[8081,8087] [3361, 3371, 3373] [2011, 2017, 2027, 2029] 等が該当するP
※無駄に素数を乱数代わりに使った、一発正解問題
※実行時間は素数生成を含めて、3秒以内
127デフォルトの名無しさん
2020/12/23(水) 23:02:15.25ID:PQyv7tz0128デフォルトの名無しさん
2020/12/23(水) 23:12:10.85ID:zWDUqRJW129デフォルトの名無しさん
2020/12/26(土) 03:16:19.16ID:4qx7gBot130デフォルトの名無しさん
2020/12/28(月) 03:25:00.14ID:S5vNYbFH131デフォルトの名無しさん
2020/12/29(火) 19:09:26.95ID:v9CXwjD7 >>103
Kotlin script
pair.csv にその入力を入れておいてから実行する。
以下は kotlinc コマンドで REPL にして直接入力して実行した時のコピー
>>> java.io.File("pair.csv").bufferedReader().lineSequence().map { it.split(',') }.sortedBy { it[0] }.fold(mutableListOf<List<String>>()) { a, c -> if (a.size == 0 || a[a.lastIndex][0] != c[0]) a.add(c); a }.forEach { println(it) }
[a, b]
[b, c]
[c, e]
>>>
2列目については考慮していないので sortBy が中でやっているソートのアルゴリズムが変われば変わるかも知れない。
Kotlin script
pair.csv にその入力を入れておいてから実行する。
以下は kotlinc コマンドで REPL にして直接入力して実行した時のコピー
>>> java.io.File("pair.csv").bufferedReader().lineSequence().map { it.split(',') }.sortedBy { it[0] }.fold(mutableListOf<List<String>>()) { a, c -> if (a.size == 0 || a[a.lastIndex][0] != c[0]) a.add(c); a }.forEach { println(it) }
[a, b]
[b, c]
[c, e]
>>>
2列目については考慮していないので sortBy が中でやっているソートのアルゴリズムが変われば変わるかも知れない。
132デフォルトの名無しさん
2020/12/29(火) 19:20:00.18ID:v9CXwjD7 a[a.lastIndex][0] の部分は a.last().first() と書いても同じだった。
この方が a.lastIndex 呼ばない分だけ無駄が少ないかも知れない。
(でもコンパイラが中で適当に最適化して同じになるかも知れないのでどうでも良いかな?)
この方が a.lastIndex 呼ばない分だけ無駄が少ないかも知れない。
(でもコンパイラが中で適当に最適化して同じになるかも知れないのでどうでも良いかな?)
133蟻人間 ◆T6xkBnTXz7B0
2020/12/29(火) 19:38:06.80ID:akpvTOL3 お題: 半径dの円にぴったり内接する正n角形を描画せよ。
134デフォルトの名無しさん
2020/12/29(火) 20:28:59.04ID:0LWFOCUq ぴったり内接とは?
ぴったりじゃない内接を教えてください
ぴったりじゃない内接を教えてください
135デフォルトの名無しさん
2020/12/29(火) 20:34:46.26ID:bi9fPEgs ぴったり内接ってなんだよって言おうとしたらすでに言われててくっそワロタ
136デフォルトの名無しさん
2020/12/29(火) 20:53:58.41ID:2gsaGKLd 量子化誤差を最小化した演算を求めているのでは?
我々は実数を扱えないので。
我々は実数を扱えないので。
137デフォルトの名無しさん
2020/12/29(火) 21:00:08.04ID:2gsaGKLd n角形をなす線分が円の外側に飛び出さないよう注意を与えているのかもしれない。
実数を扱えない以上、注意する必要が有る。
ということを示唆するのかも。
実数を扱えない以上、注意する必要が有る。
ということを示唆するのかも。
138デフォルトの名無しさん
2020/12/29(火) 21:24:43.03ID:0mXsQANw >>133
processing
void setup(){
size(400, 400);
float d=200;
float r=d/2;
int n=7;
PVector c = new PVector(width/2, height/2);
ArrayList<PVector> p = new ArrayList<PVector>();
for(int i=0; i<n+1; i++){
float theta = (TWO_PI*i)/n;
PVector t = new PVector(r*cos(theta),r*sin(theta));
t.add(c);
p.add(new PVector(t.x, t.y));
}
ellipse(c.x, c.y, d, d);
for(int i=0, j=1; i<n+1; i++, j++, j%=n){
line(p.get(i).x, p.get(i).y, p.get(j).x, p.get(j).y);
}
}
processing
void setup(){
size(400, 400);
float d=200;
float r=d/2;
int n=7;
PVector c = new PVector(width/2, height/2);
ArrayList<PVector> p = new ArrayList<PVector>();
for(int i=0; i<n+1; i++){
float theta = (TWO_PI*i)/n;
PVector t = new PVector(r*cos(theta),r*sin(theta));
t.add(c);
p.add(new PVector(t.x, t.y));
}
ellipse(c.x, c.y, d, d);
for(int i=0, j=1; i<n+1; i++, j++, j%=n){
line(p.get(i).x, p.get(i).y, p.get(j).x, p.get(j).y);
}
}
139デフォルトの名無しさん
2020/12/29(火) 21:27:39.14ID:0mXsQANw140デフォルトの名無しさん
2020/12/30(水) 13:44:24.04ID:tmlECeYE [お題] MarkdownのParagraph/BlockQuoteをパースしHTMLを生成してください
入出力例(1)
paragraph
> block quoted paragraph
↑入力 / ↓出力
<p>paragraph</p>
<blockquote>
<p>block quoted paragraph</p>
</blockquote>
入出力例(2)
> hoge
> > nested piyo1
> > nested piyo2
> fuga
↑入力 / ↓出力
<blockquote>
<p>hoge</p>
<blockquote>
<p>nested piyo1</p>
<p>nested piyo2</p>
</blockquote>
<p>fuga</p>
</blockquote>
入出力例(1)
paragraph
> block quoted paragraph
↑入力 / ↓出力
<p>paragraph</p>
<blockquote>
<p>block quoted paragraph</p>
</blockquote>
入出力例(2)
> hoge
> > nested piyo1
> > nested piyo2
> fuga
↑入力 / ↓出力
<blockquote>
<p>hoge</p>
<blockquote>
<p>nested piyo1</p>
<p>nested piyo2</p>
</blockquote>
<p>fuga</p>
</blockquote>
141デフォルトの名無しさん
2020/12/30(水) 17:24:14.94ID:yfdsF4Me quote に入れるのは"> "の繰り返しのみで桶?
142デフォルトの名無しさん
2020/12/30(水) 20:26:27.99ID:nFum3l+K143デフォルトの名無しさん
2020/12/30(水) 21:20:22.80ID:YQYWYr/5 お題
文字列を数値文字参照に変換してください
入力: 𝚙𝚛𝚘𝚐𝚛𝚊𝚖𝚖𝚒𝚗𝚐 𝚌𝚑𝚊𝚕𝚕𝚎𝚗𝚐𝚎𝚜
出力: 𝚙𝚛𝚘𝚐𝚛𝚊𝚖𝚖𝚒𝚗𝚐 𝚌𝚑𝚊𝚕𝚕𝚎𝚗𝚐𝚎𝚜
文字列を数値文字参照に変換してください
入力: 𝚙𝚛𝚘𝚐𝚛𝚊𝚖𝚖𝚒𝚗𝚐 𝚌𝚑𝚊𝚕𝚕𝚎𝚗𝚐𝚎𝚜
出力: 𝚙𝚛𝚘𝚐𝚛𝚊𝚖𝚖𝚒𝚗𝚐 𝚌𝚑𝚊𝚕𝚕𝚎𝚗𝚐𝚎𝚜
144デフォルトの名無しさん
2020/12/30(水) 21:32:08.73ID:EIqnK2Zk 呪いか?
145デフォルトの名無しさん
2020/12/30(水) 21:48:07.53ID:YQYWYr/5146デフォルトの名無しさん
2020/12/30(水) 21:49:19.71ID:p/cFtMuj147デフォルトの名無しさん
2020/12/30(水) 21:58:00.23ID:p/cFtMuj148デフォルトの名無しさん
2020/12/30(水) 22:36:28.16ID:p/cFtMuj >>146は不正なUnicode文字列の入力を考慮していませんでした
高位サロゲートが低位サロゲートを伴わず単独で現れていると、その直後の文字が抜け落ちます
つまり
"<\ud83c>" → "<�>" ではなく
"<\ud83c>" → "<�" になってしまう
修正版: https://ideone.com/bz8cMe
高位サロゲートが低位サロゲートを伴わず単独で現れていると、その直後の文字が抜け落ちます
つまり
"<\ud83c>" → "<�>" ではなく
"<\ud83c>" → "<�" になってしまう
修正版: https://ideone.com/bz8cMe
149デフォルトの名無しさん
2020/12/31(木) 01:13:45.28ID:pjMyqahK すごいどうでもいいことなんだけど、
ArrayListってどういうデータ構造なの?
ArrayなのそれともListなの?
おじさんわからないよ。。
ArrayListってどういうデータ構造なの?
ArrayなのそれともListなの?
おじさんわからないよ。。
150デフォルトの名無しさん
2020/12/31(木) 12:16:39.07ID:RvVxXqDc >>149
お題
array listを実装してください
次の要項を満たしてください
・add, removeができること
・サイズが可変であること
・序数で要素にアクセスできること
・要素へのアクセスの計算量はO(1)もしくはO(log n)であること
お題
array listを実装してください
次の要項を満たしてください
・add, removeができること
・サイズが可変であること
・序数で要素にアクセスできること
・要素へのアクセスの計算量はO(1)もしくはO(log n)であること
151デフォルトの名無しさん
2020/12/31(木) 15:29:53.91ID:wqjSMEXG >>150
add, remove は任意箇所の挿入と一要素削除で桶?
add, remove は任意箇所の挿入と一要素削除で桶?
152デフォルトの名無しさん
2020/12/31(木) 19:05:54.91ID:aMBMdmtQ153デフォルトの名無しさん
2020/12/31(木) 21:07:25.40ID:pjMyqahK >>150
それがArrayListの要件? ありがとう
それがArrayListの要件? ありがとう
154デフォルトの名無しさん
2020/12/31(木) 21:26:18.83ID:RvVxXqDc >>153
実装して
実装して
155デフォルトの名無しさん
2021/01/01(金) 13:09:20.23ID:8TPOGttB156デフォルトの名無しさん
2021/01/01(金) 13:38:10.37ID:8TPOGttB157デフォルトの名無しさん
2021/01/01(金) 14:38:54.78ID:8TPOGttB158デフォルトの名無しさん
2021/01/02(土) 03:34:41.82ID:1MFl5wrQ159デフォルトの名無しさん
2021/01/02(土) 15:11:50.57ID:gpIsEKdn >>150
この問題の要件は
>・要素へのアクセスの計算量はO(1)もしくはO(log n)であること
だけでいいのかな?
コレだけでいいならデータの更新時に常に深さが±1の二分木に納直せば必ず参照の計算量はO(log(n))になるし、毎回ソートして格納し直せば参照の(indexによる)計算量はO(1)になる希ガス
データの更新時の制限は全くないでいいのかな?
この問題の要件は
>・要素へのアクセスの計算量はO(1)もしくはO(log n)であること
だけでいいのかな?
コレだけでいいならデータの更新時に常に深さが±1の二分木に納直せば必ず参照の計算量はO(log(n))になるし、毎回ソートして格納し直せば参照の(indexによる)計算量はO(1)になる希ガス
データの更新時の制限は全くないでいいのかな?
160デフォルトの名無しさん
2021/01/02(土) 21:54:03.91ID:YfZD//vW メモリが安くなったとはいえ
やはりメモリの制限は必要では?
無尽蔵にあるわけではないので
やはりメモリの制限は必要では?
無尽蔵にあるわけではないので
161蟻人間 ◆T6xkBnTXz7B0
2021/01/04(月) 22:40:39.15ID:RRkyDjZk お題: 四方に広がる無限のサイズの方眼紙があって、1マス1マスに一個のアラビア数字を一度だけ記入できる。
方眼紙に記録したデータの一部は「仮想画面」に出力できる。
マス(x, y)に数字dを記入することを「P(x, y, d)」と表すことにする(x, yは任意の整数)。
(a) 3桁の自然数が2つ与えられる。その足し算の筆算を実演するアルゴリズムを出力するプログラムを書け。
(b) 任意の自然数が2つ与えられる。(以下略)
方眼紙に記録したデータの一部は「仮想画面」に出力できる。
マス(x, y)に数字dを記入することを「P(x, y, d)」と表すことにする(x, yは任意の整数)。
(a) 3桁の自然数が2つ与えられる。その足し算の筆算を実演するアルゴリズムを出力するプログラムを書け。
(b) 任意の自然数が2つ与えられる。(以下略)
162蟻人間 ◆T6xkBnTXz7B0
2021/01/04(月) 22:51:58.92ID:RRkyDjZk 補記。
マス(x, y)にある数字を「P(x, y)」と表すことにする。マス(x, y)に数字がなければP(x, y)==0とする。
また、マス(x, y)に数字がなければE(x, y)==1とし、数字があればE(x, y)==0とする。
マス(x, y)にある数字を「P(x, y)」と表すことにする。マス(x, y)に数字がなければP(x, y)==0とする。
また、マス(x, y)に数字がなければE(x, y)==1とし、数字があればE(x, y)==0とする。
163デフォルトの名無しさん
2021/01/05(火) 22:28:39.68ID:JVpboZJX お題: ランダムな数列を生成せよ
数列の長さは4 <= len <= 20とし、これもランダムとする
数列の長さは4 <= len <= 20とし、これもランダムとする
164デフォルトの名無しさん
2021/01/05(火) 22:36:13.47ID:3bhht3A2165デフォルトの名無しさん
2021/01/06(水) 10:45:40.05ID:0+tWp1dI >>163 js
const rand = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a
const range = (n) => [...Array(n).keys()]
range(rand(4, 20)).map(Math.random)
const rand = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a
const range = (n) => [...Array(n).keys()]
range(rand(4, 20)).map(Math.random)
166デフォルトの名無しさん
2021/01/06(水) 10:46:52.82ID:0+tWp1dI ruby 3 はどのくらい変わったの
167デフォルトの名無しさん
2021/01/06(水) 14:12:34.77ID:0ypUbOKE >>163
Kotlin または Kotlin script
以下は kotlinc コマンドで REPL で実行した時のコピー。
(先頭の >>> はプロンプト)
>>> (1..(4..20).random()).map { kotlin.random.Random.nextInt() }
res0: kotlin.collections.List<kotlin.Int> = [1712097059, 2034192723, -1232228362, 634194098, 1788814029, -1878195330, -2043751487, 933285281, 1116738696, -934057871, -1657983454, -1761832713, -1836302098, -902578867, -1306790359, 1824207694, 386095401, -389307033, 380242891, -2028767653]
>>>
実行結果は何処にも出力しようとしてしていないが REPL なので自動で出力されている。
Kotlin または Kotlin script
以下は kotlinc コマンドで REPL で実行した時のコピー。
(先頭の >>> はプロンプト)
>>> (1..(4..20).random()).map { kotlin.random.Random.nextInt() }
res0: kotlin.collections.List<kotlin.Int> = [1712097059, 2034192723, -1232228362, 634194098, 1788814029, -1878195330, -2043751487, 933285281, 1116738696, -934057871, -1657983454, -1761832713, -1836302098, -902578867, -1306790359, 1824207694, 386095401, -389307033, 380242891, -2028767653]
>>>
実行結果は何処にも出力しようとしてしていないが REPL なので自動で出力されている。
168デフォルトの名無しさん
2021/01/06(水) 19:38:44.63ID:ySlgJWsk >>163 Ruby
# こんな意味だと解釈した
puts ( '%020b' % rand(1<<20) )[ 0, 4+rand(17) ] # ( 2進) '0000'-'00000000000000000000'..'1111'-'11111111111111111111'
puts ( '%020d' % rand(1e20) )[ 0, 4+rand(17) ] # (10進) '0000'-'00000000000000000000'..'9999'-'99999999999999999999'
# こんな意味だと解釈した
puts ( '%020b' % rand(1<<20) )[ 0, 4+rand(17) ] # ( 2進) '0000'-'00000000000000000000'..'1111'-'11111111111111111111'
puts ( '%020d' % rand(1e20) )[ 0, 4+rand(17) ] # (10進) '0000'-'00000000000000000000'..'9999'-'99999999999999999999'
169デフォルトの名無しさん
2021/01/06(水) 23:58:46.35ID:N14y+/j1 お題
アルファベットの開始の文字、アルファベットの終了の文字を
入力としてうけとり下記のように文字列を出力してください
入力: a,k
出力:
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
アルファベットの開始の文字、アルファベットの終了の文字を
入力としてうけとり下記のように文字列を出力してください
入力: a,k
出力:
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
170デフォルトの名無しさん
2021/01/07(木) 00:11:25.06ID:bv7Qweso 意味不明な途中省く
sh & perl5
echo "a,k" | perl -lane 'm/(\w),(\w)/; print ($1..$2)'
abcdefghijk
sh & perl5
echo "a,k" | perl -lane 'm/(\w),(\w)/; print ($1..$2)'
abcdefghijk
171デフォルトの名無しさん
2021/01/07(木) 00:20:29.22ID:iqGL0Mlk 省いちゃダメなの!
172デフォルトの名無しさん
2021/01/07(木) 00:29:54.66ID:Vd9hikpg >>169
Haskell
import Data.List
consecutiveAlph a z = tail $ inits $ [ a .. z ]
main = mapM_ putStrLn $ consecutiveAlph 'a' 'k'
----
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
Haskell
import Data.List
consecutiveAlph a z = tail $ inits $ [ a .. z ]
main = mapM_ putStrLn $ consecutiveAlph 'a' 'k'
----
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
173(u_・y)
2021/01/07(木) 00:56:12.00ID:oTn3YI8v174デフォルトの名無しさん
2021/01/07(木) 02:01:24.63ID:GGtjVNVk >>169 Common Lisp
https://ideone.com/yWJWQf
参考:
CLHS: Section 13.1.6 Ordering of Characters
http://www.lispworks.com/documentation/HyperSpec/Body/13_af.htm
https://ideone.com/yWJWQf
参考:
CLHS: Section 13.1.6 Ordering of Characters
http://www.lispworks.com/documentation/HyperSpec/Body/13_af.htm
1759
2021/01/07(木) 02:13:26.61ID:t9BUPUyy >>169 Perl5
@a = split',', <>;
print($a[0]..$_, "\n") for $a[0]..$a[1];
実行結果
~ $ echo 'a,k' | perl 19_169_a,k.pl
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
@a = split',', <>;
print($a[0]..$_, "\n") for $a[0]..$a[1];
実行結果
~ $ echo 'a,k' | perl 19_169_a,k.pl
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
1769
2021/01/07(木) 02:17:47.93ID:t9BUPUyy つか、これでよかったわ
@a = eval <>;
print($a[0]..$_, "\n") for $a[0]..$a[1];
@a = eval <>;
print($a[0]..$_, "\n") for $a[0]..$a[1];
177デフォルトの名無しさん
2021/01/07(木) 11:50:26.21ID:oTn3YI8v お題
オセロのようなルールでひっくり返しを行う処理を実装せよ
変数のイメージ
0 = 置かれてない場所
1 = 黒
2 = 白
3 = 今のターンで置いた黒
入力:01202113112120
出力:01202222222120
オセロのようなルールでひっくり返しを行う処理を実装せよ
変数のイメージ
0 = 置かれてない場所
1 = 黒
2 = 白
3 = 今のターンで置いた黒
入力:01202113112120
出力:01202222222120
178デフォルトの名無しさん
2021/01/07(木) 11:52:33.15ID:oTn3YI8v ちょい訂正
3 = 今のターンで置いた白だった
3 = 今のターンで置いた白だった
179デフォルトの名無しさん
2021/01/07(木) 12:05:34.54ID:TYHzopEy180デフォルトの名無しさん
2021/01/07(木) 12:06:14.88ID:TYHzopEy あ、1=3=黒なのね
失礼しました
失礼しました
181デフォルトの名無しさん
2021/01/07(木) 12:32:35.52ID:TYHzopEy >>177
haskell
twosTurn x = let
( pre, ( '3' : post ) ) = span (/='3') x
revOne y = let
( pre02 , post02 ) = span ( == '1' ) $ y ++ "0"
twos = zipWith const ( repeat '2' ) pre02
in if ( head post02) == '0'
then y
else take ( length y ) ( twos ++ post02 )
revOne' = reverse . revOne . reverse
in ( revOne' pre ) ++ "2" ++ ( revOne post )
sample = "01202113112120"
main = print $ twosTurn sample
haskell
twosTurn x = let
( pre, ( '3' : post ) ) = span (/='3') x
revOne y = let
( pre02 , post02 ) = span ( == '1' ) $ y ++ "0"
twos = zipWith const ( repeat '2' ) pre02
in if ( head post02) == '0'
then y
else take ( length y ) ( twos ++ post02 )
revOne' = reverse . revOne . reverse
in ( revOne' pre ) ++ "2" ++ ( revOne post )
sample = "01202113112120"
main = print $ twosTurn sample
182デフォルトの名無しさん
2021/01/07(木) 12:50:45.25ID:sEmeEMut >>177 Ruby
board = '01202113112120'
puts board
puts board.sub( /2(1*)3(1*)2/ ){ "2#{'2'* ($1.size)}2#{'2' * $2.size}2" }
board = '01202113112120'
puts board
puts board.sub( /2(1*)3(1*)2/ ){ "2#{'2'* ($1.size)}2#{'2' * $2.size}2" }
183182
2021/01/07(木) 13:05:54.80ID:sEmeEMut >>182 は間違いでした
board = '01202113112120'
puts board
puts board.sub( /2(1*)3/ ){ "2#{'2'* ($1.size)}3" }.sub( /3(1*)2/ ){ "3#{'2'* ($1.size)}2" }.tr( '3', '2' )
board = '01202113112120'
puts board
puts board.sub( /2(1*)3/ ){ "2#{'2'* ($1.size)}3" }.sub( /3(1*)2/ ){ "3#{'2'* ($1.size)}2" }.tr( '3', '2' )
184デフォルトの名無しさん
2021/01/07(木) 20:21:05.95ID:n2K5l1bF 仕様を出来るだけ簡潔にしたかったんだろうけどやり過ぎてモヤる
下位から
第1bit 駒有無
第2 駒種別
第3 now flag
として
0:駒無し
1:白, 3:黒
5:白now, 7:黒now
と置いてnowの結果を出力の方が良くね
下位から
第1bit 駒有無
第2 駒種別
第3 now flag
として
0:駒無し
1:白, 3:黒
5:白now, 7:黒now
と置いてnowの結果を出力の方が良くね
185デフォルトの名無しさん
2021/01/07(木) 21:58:01.92ID:pRSWPdMl この問題の本命は、オセロを作るっていうお題にしたつもりじゃないからw
スレに居る人はオセロくらい作ったことある人しかいないと思っているし
ゲームのアルゴリズムの一端を文字列処理として見るのも可能っていう点な
スレに居る人はオセロくらい作ったことある人しかいないと思っているし
ゲームのアルゴリズムの一端を文字列処理として見るのも可能っていう点な
186デフォルトの名無しさん
2021/01/08(金) 02:42:54.86ID:pELUdJTO >>184
お前がそういうお題を新たに出せば良い。
お前がそういうお題を新たに出せば良い。
187デフォルトの名無しさん
2021/01/08(金) 07:57:49.81ID:AIrixKby >>184 Ruby
board = [0b000,0b011,0b001,0b000,0b001,0b011,0b011,0b101,0b011,0b011,0b001,0b011,0b001,0b000].pack('C*')
if board["\x05"]
board = board.sub( /\01(\03*)\x05/ ){ "\01#{"\01"* ($1.size)}\x05" }.sub( /\x05(\x03*)\x01/ ){ "\x05#{"\x01"* ($1.size)}\x01" }.tr( "\x05", "\x01" )
else
board = board.sub( /\03(\01*)\x07/ ){ "\03#{"\03"* ($1.size)}\x07" }.sub( /\x07(\x01*)\x03/ ){ "\x07#{"\x03"* ($1.size)}\x03" }.tr( "\x07", "\x03" )
end
puts board.unpack('C*').map{|b| '0b%03b' % b.ord }.join(',')
#=>0b000,0b011,0b001,0b000,0b001,0b001,0b001,0b001,0b001,0b001,0b001,0b011,0b001,0b000
board = [0b000,0b011,0b001,0b000,0b001,0b011,0b011,0b101,0b011,0b011,0b001,0b011,0b001,0b000].pack('C*')
if board["\x05"]
board = board.sub( /\01(\03*)\x05/ ){ "\01#{"\01"* ($1.size)}\x05" }.sub( /\x05(\x03*)\x01/ ){ "\x05#{"\x01"* ($1.size)}\x01" }.tr( "\x05", "\x01" )
else
board = board.sub( /\03(\01*)\x07/ ){ "\03#{"\03"* ($1.size)}\x07" }.sub( /\x07(\x01*)\x03/ ){ "\x07#{"\x03"* ($1.size)}\x03" }.tr( "\x07", "\x03" )
end
puts board.unpack('C*').map{|b| '0b%03b' % b.ord }.join(',')
#=>0b000,0b011,0b001,0b000,0b001,0b001,0b001,0b001,0b001,0b001,0b001,0b011,0b001,0b000
188デフォルトの名無しさん
2021/01/08(金) 21:29:33.72ID:Uhe1x+T1189デフォルトの名無しさん
2021/01/09(土) 02:47:05.51ID:yzrxyAxR190デフォルトの名無しさん
2021/01/09(土) 03:00:30.54ID:yzrxyAxR >>169
Perl5
コマンドラインからこんな風に入力して実行する。(実際に試した shell は bash)
perl -ne 'chomp;@d=split/,/;print join("\n", map { join("", $d[0]..$_) } $d[0]..$d[1])."\n";'
Perl5
コマンドラインからこんな風に入力して実行する。(実際に試した shell は bash)
perl -ne 'chomp;@d=split/,/;print join("\n", map { join("", $d[0]..$_) } $d[0]..$d[1])."\n";'
191デフォルトの名無しさん
2021/01/09(土) 03:18:08.87ID:yzrxyAxR192デフォルトの名無しさん
2021/01/09(土) 08:04:43.95ID:7SSQ0Zys193デフォルトの名無しさん
2021/01/09(土) 20:59:35.76ID:71nzX3jh194デフォルトの名無しさん
2021/01/09(土) 21:04:47.77ID:71nzX3jh195デフォルトの名無しさん
2021/01/09(土) 21:40:06.97ID:71nzX3jh196デフォルトの名無しさん
2021/01/09(土) 23:28:46.26ID:MPKG4kVI お題
N個の時系列データが与えられる。i番目のデータはa_iである
i=1〜Nについて、以下の条件を満たすx_iを出力せよ
x_i : 直近c個でa_iが最大となるようなcのうち、最大のもの
[入力]
N
a_1 a_2 ... a_N
[出力]
x_1 x_2 ... x_N
(例1)
5
3 1 2 6 6
=> 1 1 2 4 5
3 = max(3)
1 = max(1) //今までの中で最小
2 = max(1, 2) //直近2個で最大
6 = max(3, 1, 2, 6) //直近4個で最大 (直近3個でも最大だが、cの値として最大のものを選ぶ)
6 = max(3, 1, 2, 6, 6) //直近5個で最大(最大タイ)
(例2)
3
100 10 1
=> 1 1 1
N個の時系列データが与えられる。i番目のデータはa_iである
i=1〜Nについて、以下の条件を満たすx_iを出力せよ
x_i : 直近c個でa_iが最大となるようなcのうち、最大のもの
[入力]
N
a_1 a_2 ... a_N
[出力]
x_1 x_2 ... x_N
(例1)
5
3 1 2 6 6
=> 1 1 2 4 5
3 = max(3)
1 = max(1) //今までの中で最小
2 = max(1, 2) //直近2個で最大
6 = max(3, 1, 2, 6) //直近4個で最大 (直近3個でも最大だが、cの値として最大のものを選ぶ)
6 = max(3, 1, 2, 6, 6) //直近5個で最大(最大タイ)
(例2)
3
100 10 1
=> 1 1 1
197デフォルトの名無しさん
2021/01/10(日) 03:36:08.11ID:lRaYSXSv198デフォルトの名無しさん
2021/01/10(日) 05:17:09.34ID:5hwhwjPe >>169 bat
@echo off &setlocal
set ALL=abcdefghijklmnopqrstuvwxyz
call :RANGE a,k
pause &exit /b
:RANGE
setlocal enabledelayedexpansion
if "%1" GTR "%2" echo ERROR: Invalid argument&exit /b
set STR=!ALL:*%1=%1!
if not "%2"=="z" call set STR=%%STR:!ALL:*%2=!=%%
:LENGTH
set /a n+=1
if not "!STR:~0,-%n%!"=="" goto :LENGTH
for /L %%n in (1,1,%n%) do echo !STR:~0,%%n!
@echo off &setlocal
set ALL=abcdefghijklmnopqrstuvwxyz
call :RANGE a,k
pause &exit /b
:RANGE
setlocal enabledelayedexpansion
if "%1" GTR "%2" echo ERROR: Invalid argument&exit /b
set STR=!ALL:*%1=%1!
if not "%2"=="z" call set STR=%%STR:!ALL:*%2=!=%%
:LENGTH
set /a n+=1
if not "!STR:~0,-%n%!"=="" goto :LENGTH
for /L %%n in (1,1,%n%) do echo !STR:~0,%%n!
199デフォルトの名無しさん
2021/01/10(日) 09:32:44.37ID:aiEZ01BF >>196
完全に全く意味がわからないお題を久々に見た
完全に全く意味がわからないお題を久々に見た
200デフォルトの名無しさん
2021/01/10(日) 09:35:06.95ID:aiEZ01BF あ、イヤわかった最小はタイポか
201デフォルトの名無しさん
2021/01/10(日) 09:41:46.50ID:nmvnbhWr202デフォルトの名無しさん
2021/01/10(日) 09:45:08.12ID:aiEZ01BF >>196
haskell
import Data.List
c = id
. map length
. map (\x -> takeWhile ( <= ( last x ) ) . reverse $ x)
. tail
. inits
main = do
print $ c [ 3, 1, 2, 6, 6 ]
----
[1,1,2,4,5]
haskell
import Data.List
c = id
. map length
. map (\x -> takeWhile ( <= ( last x ) ) . reverse $ x)
. tail
. inits
main = do
print $ c [ 3, 1, 2, 6, 6 ]
----
[1,1,2,4,5]
203デフォルトの名無しさん
2021/01/10(日) 13:04:37.47ID:26KuLTT9204デフォルトの名無しさん
2021/01/11(月) 00:16:30.88ID:NK5j5E+l 196読めた奴すごいな
205158
2021/01/11(月) 02:25:11.67ID:HKU1hsOJ206デフォルトの名無しさん
2021/01/11(月) 02:44:15.64ID:HKU1hsOJ お題
>>196を小学生にも理解できるぐらいのやさしい日本語に翻訳せよ。
>>196を小学生にも理解できるぐらいのやさしい日本語に翻訳せよ。
207デフォルトの名無しさん
2021/01/11(月) 03:09:40.17ID:H8GM2Hiz 無理です
チンパンカンプン
チンパンカンプン
208デフォルトの名無しさん
2021/01/11(月) 03:11:51.27ID:yhMi8PUx このスレの住人なら日本語分からなくても例だけ見れば普通に理解できるだろ
IQテストみたいなもんだ
IQテストみたいなもんだ
209デフォルトの名無しさん
2021/01/11(月) 03:26:31.03ID:yIQfxhn8 >>206
こういう事じゃない?
入力値が遡って比較する最大個数と値を兼ねてるんでしょ
同値ならindex(1始まり)の大きい方
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 (2 6 6 4)] →3
こういう事じゃない?
入力値が遡って比較する最大個数と値を兼ねてるんでしょ
同値ならindex(1始まり)の大きい方
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 (2 6 6 4)] →3
210デフォルトの名無しさん
2021/01/11(月) 03:36:50.19ID:yhMi8PUx >>209
最後の4違うぞ
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 2 6 6 (4)] →1
x_iは要素数。上の例でいうと()の中の数が何個あるかってこと。で、(右から)直近の要素の中での最大値が一番右の数字になるのは最大でいくつかってこと。
一番下の4のケースでは次の6を含んでしまうとMAXが4にはならないので要素数1で打ち止め。
最後の4違うぞ
入力:3 1 2 6 6 4
3 [(3)] →1
1 [3 (1)] →1
2 [3 (1 2)] →2
6 [(3 1 2 6)] →4
6 [(3 1 2 6 6)] →5
4 [3 1 2 6 6 (4)] →1
x_iは要素数。上の例でいうと()の中の数が何個あるかってこと。で、(右から)直近の要素の中での最大値が一番右の数字になるのは最大でいくつかってこと。
一番下の4のケースでは次の6を含んでしまうとMAXが4にはならないので要素数1で打ち止め。
211デフォルトの名無しさん
2021/01/11(月) 12:34:34.25ID:kY9pcTJO 現在地から前に遡って見ていって自分と同じか小さい要素が続く数を
最初から最後まで求めるだけ
もっと早く一発で求める方法があるかは分からないけど
最初から最後まで求めるだけ
もっと早く一発で求める方法があるかは分からないけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」 「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 [Hitzeschleier★]
- 空自機レーダー照射、音声データ公開 中国 ★4 [蚤の市★]
- 中国から訓練の連絡あったが、区域など具体的な内容知らされず=小泉防衛相 [♪♪♪★]
- 【高市早苗総理】食料品消費減税に慎重「今すぐ約束できない」…「物価上昇率は徐々に落ち着いていくと見込んでいる」 [Hitzeschleier★]
- 高市早苗総理「農水大臣が大好きなおこめ券」 野党が“おこめ券”追及 [Hitzeschleier★]
- TOTOのウォシュレット、累計販売台数が7000万台突破…トイレットペーパー不足のアメリカで急増 [♪♪♪★]
- 【高市悲報】キャバクラ維新奥下、調査研究費としてトケドロ高橋洋一チャンネルにバチーン!と課金😤 [359965264]
- 【高市速報】小泉進次郎「事前に中国軍から飛行訓練を開始すると連絡があったのは事実」 [931948549]
- 【悲報】高市早苗政権に文春砲が連発! [115996789]
- 【正論】高市さん「長期金利が上がり続けていくことよりも、日本が成長していく方が大事」 [519511584]
- トランプが高市に助け船を出さない理由🤔 [445522505]
- 父「パパな、仕事やめてバーチャルYouTuber "恋空☆りあ夢♡" として活動することにしたから」
