プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/
探検
プログラミングのお題スレ Part18
■ このスレッドは過去ログ倉庫に格納されています
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
387蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 22:00:32.12ID:GYyhmMZY えっ、拳銃見たことないの?
388デフォルトの名無しさん
2020/08/29(土) 22:14:20.91ID:bYj4gZFd 銃の弾数と空砲/実包の割合とか
オートマとリボルバーどっちかとか特定してからにしてくれ
オートマとリボルバーどっちかとか特定してからにしてくれ
389デフォルトの名無しさん
2020/08/29(土) 22:51:06.10ID:yG/yQHuO jsインタラクティブ入力に弱い
390デフォルトの名無しさん
2020/08/29(土) 23:12:55.70ID:yG/yQHuO >>383
https://repl.it/@vip0/bullet#index.js
// 0-5
const rand6 = () => Math.floor(Math.random() * 6);
const gun = (() => {
let pos = 0;
const shuffle = () => (pos = rand6());
shuffle();
const shut = () => pos-- === -1
return { shuffle, pos, shut }
})()
// mock 1/2 rand
const readDoShuffleAsync = () => {
const y = Math.random() >= 0.5
console.log(y ? "y" : "n")
return y
}
let i = 1;
while (true) {
console.log("リボルバーを回しますか?");
if (readDoShuffleAsync()) gun.shuffle()
const bomb = gun.shut();
console.log(`${i}回目: ${bomb ? "バーン!" : "不発"}`);
i++;
if (bomb) break
}
https://repl.it/@vip0/bullet#index.js
// 0-5
const rand6 = () => Math.floor(Math.random() * 6);
const gun = (() => {
let pos = 0;
const shuffle = () => (pos = rand6());
shuffle();
const shut = () => pos-- === -1
return { shuffle, pos, shut }
})()
// mock 1/2 rand
const readDoShuffleAsync = () => {
const y = Math.random() >= 0.5
console.log(y ? "y" : "n")
return y
}
let i = 1;
while (true) {
console.log("リボルバーを回しますか?");
if (readDoShuffleAsync()) gun.shuffle()
const bomb = gun.shut();
console.log(`${i}回目: ${bomb ? "バーン!" : "不発"}`);
i++;
if (bomb) break
}
391デフォルトの名無しさん
2020/08/29(土) 23:34:19.24ID:2f/XylsB VSCode の拡張機能、Quokka.js を使えば?
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される
392デフォルトの名無しさん
2020/08/29(土) 23:41:03.13ID:yG/yQHuO swift playgroundとかjestのinlineSnapshotみたいな感じか
使うときがあるか微妙
使うときがあるか微妙
393デフォルトの名無しさん
2020/08/30(日) 01:02:17.18ID:xjthqQ7x お題
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください
例
入力: 1
出力: [1]
入力: 3
出力: [1, 2, 2, 3, 3, 3]
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください
例
入力: 1
出力: [1]
入力: 3
出力: [1, 2, 2, 3, 3, 3]
394デフォルトの名無しさん
2020/08/30(日) 01:33:41.99ID:xjthqQ7x お題
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください
395デフォルトの名無しさん
2020/08/30(日) 06:49:46.06ID:a0VCHWdX お題: splitを実装せよ(ただし組み込みやライブラリのsplitは使ってはならない)
例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']
例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']
396デフォルトの名無しさん
2020/08/30(日) 08:02:58.80ID:Ui9A3dkW >>393 J
f =: #~ @: >: @ i.
f =: #~ @: >: @ i.
397デフォルトの名無しさん
2020/08/30(日) 09:40:37.84ID:rD3R6mry398デフォルトの名無しさん
2020/08/30(日) 09:41:22.98ID:ka/TVb/i399デフォルトの名無しさん
2020/08/30(日) 09:43:25.32ID:pWMgwPJi >>395
JS
let minSplit = (string, separator) => {
let array = [];
let splitter = (st, sp) => {
let pos = st.indexOf(sp);
if (pos == -1) {return [st,void(0)]} else {return [st.slice(0,pos),st.slice(pos+1)]}
}
while (true) {
if (string.length == 0) {array.push(string); break}
let temp = splitter(string, separator)
if (temp[1] == void(0)) {array.push(temp[0]); break}
else {array.push(temp[0]); string = temp[1]}
}
return array
}
let minSplit2 = (string, separator) => {
let reg = new RegExp(`[^(${separator})]+${separator}?`, "g");
return `${string} `.match(reg).map(x=>x.slice(0,-1))
}
JS
let minSplit = (string, separator) => {
let array = [];
let splitter = (st, sp) => {
let pos = st.indexOf(sp);
if (pos == -1) {return [st,void(0)]} else {return [st.slice(0,pos),st.slice(pos+1)]}
}
while (true) {
if (string.length == 0) {array.push(string); break}
let temp = splitter(string, separator)
if (temp[1] == void(0)) {array.push(temp[0]); break}
else {array.push(temp[0]); string = temp[1]}
}
return array
}
let minSplit2 = (string, separator) => {
let reg = new RegExp(`[^(${separator})]+${separator}?`, "g");
return `${string} `.match(reg).map(x=>x.slice(0,-1))
}
400デフォルトの名無しさん
2020/08/30(日) 17:51:57.01ID:9TpSDH8X >>395 octave
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')
f = @(s, d) arrayfun(@(b, e) {s(b:e)}, [1 find(s == d) + 1], [find(s == d) - 1 numel(s)]);
f('abc:def:ghi', ':')
401400
2020/08/30(日) 18:29:58.33ID:9TpSDH8X402デフォルトの名無しさん
2020/08/30(日) 18:55:27.84ID:uG01djUi >>395 js
const replaceAll = (s, from, to) => s.replace(new RegExp(from, "g"), to)
const split = (str, sep) => JSON.parse(`["${replaceAll(str, sep, '","')}"]`)
split('abc:def:ghi', ':')
// [ 'abc', 'def', 'ghi' ]
ずるいしダブルクォート対応できてないけど思いつき
const replaceAll = (s, from, to) => s.replace(new RegExp(from, "g"), to)
const split = (str, sep) => JSON.parse(`["${replaceAll(str, sep, '","')}"]`)
split('abc:def:ghi', ':')
// [ 'abc', 'def', 'ghi' ]
ずるいしダブルクォート対応できてないけど思いつき
403デフォルトの名無しさん
2020/08/30(日) 19:52:13.41ID:KMqOjvFr >>395 Ruby
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end
split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end
split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]
404デフォルトの名無しさん
2020/08/30(日) 19:55:11.73ID:OKCM85cL >> 393 C++
https://ideone.com/ztBnmn
>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
https://ideone.com/lmYLkx
https://ideone.com/ztBnmn
>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
https://ideone.com/lmYLkx
405デフォルトの名無しさん
2020/08/30(日) 23:05:46.03ID:HaB2mhSL406デフォルトの名無しさん
2020/08/30(日) 23:23:11.11ID:OKCM85cL operator[]がconstexprなのはC++17以降らしいね
407デフォルトの名無しさん
2020/08/31(月) 00:36:58.36ID:Sr2UUXBk 宇宙創生から現在まで【宇宙の歴史@(過去編)】
https://www.youtube.com/watch?v=1qUrdcRkRLc
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
https://www.youtube.com/watch?v=B__gzT-rQjw
もしも生徒が全員予備校講師だったら
https://www.youtube.com/watch?v=Lk
eが超越数であることの証明
https://www.youtube.com/watch?v=_DJfeP0cmI8
【受験生へ】勉強のモチベーションをあげる3つの方法
https://www.youtube.com/watch?v=4MAPBivBEhM
線を描くだけ!万能視覚的かけ算【インド式計算】
https://www.youtube.com/watch?v=Sj6Y43D76GA
全受験生が理解するべき!偏差値とは何か
https://www.youtube.com/watch?v=Xt7VN0xCbt8
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
https://www.youtube.com/watch?v=1qUrdcRkRLc
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
https://www.youtube.com/watch?v=B__gzT-rQjw
もしも生徒が全員予備校講師だったら
https://www.youtube.com/watch?v=Lk
eが超越数であることの証明
https://www.youtube.com/watch?v=_DJfeP0cmI8
【受験生へ】勉強のモチベーションをあげる3つの方法
https://www.youtube.com/watch?v=4MAPBivBEhM
線を描くだけ!万能視覚的かけ算【インド式計算】
https://www.youtube.com/watch?v=Sj6Y43D76GA
全受験生が理解するべき!偏差値とは何か
https://www.youtube.com/watch?v=Xt7VN0xCbt8
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
408デフォルトの名無しさん
2020/08/31(月) 08:12:50.04ID:o+KAewBM409デフォルトの名無しさん
2020/08/31(月) 09:50:22.54ID:3l02ZOhc >>396
何やってんのか分かんねぇ…
何やってんのか分かんねぇ…
410デフォルトの名無しさん
2020/08/31(月) 12:53:04.32ID:DeTlQxvW f#(@:m:@ )顔文字にしか見えん
411デフォルトの名無しさん
2020/08/31(月) 13:15:43.55ID:0jcGZySh \(._. \)
412蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 13:37:09.03ID:tSOV4fJk お題: 覆面算パズルをランダムに自動生成せよ。
単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。
例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.
単語リスト:https://gist.github.com/deekayen/4148741
単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。
例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.
単語リスト:https://gist.github.com/deekayen/4148741
413蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 13:41:36.35ID:tSOV4fJk お題:覆面算パズルを解くプログラム。
例)
SEND+MORE=MONEY
→9567+1085=10652.
BASE+BALL=GAMES
→7483+7455=14938.
例)
SEND+MORE=MONEY
→9567+1085=10652.
BASE+BALL=GAMES
→7483+7455=14938.
414デフォルトの名無しさん
2020/08/31(月) 14:49:18.65ID:7ZWcUsrI >>393
Elixir
# 再帰で、蓄積リスト・ary に、連結していく
defmodule MyList do
def add( num ), do: _add( num, [ ] )
defp _add( 0, ary ) do
ary
end
defp _add( num, ary ) when num > 0 do
_add( num - 1, List.duplicate( num, num ) ++ ary )
end
end
ary = MyList.add 3
IO.inspect ary #=> [1, 2, 2, 3, 3, 3]
Elixir
# 再帰で、蓄積リスト・ary に、連結していく
defmodule MyList do
def add( num ), do: _add( num, [ ] )
defp _add( 0, ary ) do
ary
end
defp _add( num, ary ) when num > 0 do
_add( num - 1, List.duplicate( num, num ) ++ ary )
end
end
ary = MyList.add 3
IO.inspect ary #=> [1, 2, 2, 3, 3, 3]
416蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 16:12:08.02ID:lWn/zYPT ヒント: 各文字を変数とした連立方程式。
417蟻人間 ◆T6xkBnTXz7B0
2020/08/31(月) 16:24:48.19ID:lWn/zYPT 文字の数が少ないんだから、ブルートフォースでも解けるか。。。
418デフォルトの名無しさん
2020/08/31(月) 18:26:24.52ID:qQr3mFGF 間違えてなければO(10!)のはずだから充分多いのでは
419デフォルトの名無しさん
2020/08/31(月) 18:26:56.47ID:qQr3mFGF ごめん10!はめちゃくちゃ小さかった
420デフォルトの名無しさん
2020/08/31(月) 18:43:24.02ID:hr5jjNmH この手の問題は総当りしたほうが速いことすらある
421デフォルトの名無しさん
2020/08/31(月) 19:18:49.49ID:J48xi6fS しかもとっさにcombination用意できなければ(vimなどで)for文10個書いたほうが早いまである
422デフォルトの名無しさん
2020/08/31(月) 19:23:55.64ID:fdwPQ6pV 覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。
https://sunasunax.hatenablog.com
https://sunasunax.hatenablog.com
423デフォルトの名無しさん
2020/08/31(月) 21:02:28.99ID:Sr2UUXBk デキる人ほどフリーランス化する?★働き方改革
https://www.youtube.com/watch?v=ALflcwYOJtQ
年収890万円以下は社会のお荷物★騙される労働者
https://www.youtube.com/watch?v=CAp-ZrJpF54
騙されたくなかったら勉強しろ★他人のルールは損をする
https://www.youtube.com/watch?v=s176O6qKuPw
底辺の99%は一生底辺★10年後が見えない同僚たち
https://www.youtube.com/watch?v=4Mfiwn2sPD8
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
https://www.youtube.com/watch?v=Fi7bILN4wes
サラリーマン思考では儲からない理由
https://www.youtube.com/watch?v=iW6oAo0q0ZI
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
https://www.youtube.com/watch?v=md0WPAsfarY
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk
https://www.youtube.com/watch?v=ALflcwYOJtQ
年収890万円以下は社会のお荷物★騙される労働者
https://www.youtube.com/watch?v=CAp-ZrJpF54
騙されたくなかったら勉強しろ★他人のルールは損をする
https://www.youtube.com/watch?v=s176O6qKuPw
底辺の99%は一生底辺★10年後が見えない同僚たち
https://www.youtube.com/watch?v=4Mfiwn2sPD8
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
https://www.youtube.com/watch?v=Fi7bILN4wes
サラリーマン思考では儲からない理由
https://www.youtube.com/watch?v=iW6oAo0q0ZI
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
https://www.youtube.com/watch?v=md0WPAsfarY
「で、年収は?」と聞くバカとは合わない社長業
https://www.youtube.com/watch?v=nEELEUhBLDk
424253
2020/08/31(月) 21:47:00.41ID:Mm8nXRhv >>393 Perl5
use feature qw{signatures};
sub f($n) {
$n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";
実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
1 2 2 3 3 3
use feature qw{signatures};
sub f($n) {
$n ? (f($n-1), ($n) x $n) : ()
}
@a = f(3);
print "@a\n";
実行結果
~ $ perl 18_393_inc_ary.pl
The signatures feature is experimental at 18_393_inc_ary.pl line 2.
1 2 2 3 3 3
425253
2020/08/31(月) 21:54:06.64ID:pmRcaHIk >>393 Perl5、単にmapで値個数要素のリストに展開
$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";
j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
$n = 3;
@a = map{($_) x $_} 1..$n;
print "@a\n";
j実行結果
~ $ perl 18_393_inc_ary_map.pl
1 2 2 3 3 3
426デフォルトの名無しさん
2020/08/31(月) 23:33:38.47ID:0jcGZySh427デフォルトの名無しさん
2020/09/01(火) 00:01:02.40ID:1mY8ta+4428デフォルトの名無しさん
2020/09/01(火) 00:18:24.24ID:vTrOzHSW429デフォルトの名無しさん
2020/09/01(火) 14:16:37.60ID:3qKfeSqF 全く知らない構文の言語でカンでいじっても構文エラーも止められずに
動かない機械ガチャガチャしてるだけ感すごいよな
動かない機械ガチャガチャしてるだけ感すごいよな
430蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 18:47:08.83ID:4meeAMMW お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。
431デフォルトの名無しさん
2020/09/01(火) 18:47:54.44ID:Y09tsFBY432デフォルトの名無しさん
2020/09/01(火) 18:48:39.88ID:PZXbhIm5 >>430
テスト用のinput.txtちょーだい!
テスト用のinput.txtちょーだい!
433蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 18:54:57.84ID:4meeAMMW >>432
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」
434デフォルトの名無しさん
2020/09/01(火) 18:57:45.00ID:PZXbhIm5 >>433
あざーす!
あざーす!
435デフォルトの名無しさん
2020/09/01(火) 19:10:04.73ID:y/wdSyKD >>430
Mail::RFC822::Address: regexp-based address validatio
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Mail::RFC822::Address: regexp-based address validatio
http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
436蟻人間 ◆T6xkBnTXz7B0
2020/09/01(火) 20:18:24.49ID:4meeAMMW ヒント: 文字列置換と正規表現
437デフォルトの名無しさん
2020/09/01(火) 22:43:25.27ID:PZXbhIm5438デフォルトの名無しさん
2020/09/01(火) 22:55:31.34ID:PZXbhIm5439253
2020/09/02(水) 00:54:35.54ID:GpxOT2yi >>393 Python3
(n, a) = (3, [])
for i in range(1, n+1):
a.extend([i] * i)
print(a)
実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]
(n, a) = (3, [])
for i in range(1, n+1):
a.extend([i] * i)
print(a)
実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]
440デフォルトの名無しさん
2020/09/02(水) 23:08:34.85ID:KTyhBksd441デフォルトの名無しさん
2020/09/02(水) 23:31:10.43ID:KTyhBksd442デフォルトの名無しさん
2020/09/03(木) 16:10:13.26ID:dE9fk8zR >>395 Ruby
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]
443蟻人間 ◆T6xkBnTXz7B0
2020/09/03(木) 19:41:51.27ID:0EoV326K お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。
445デフォルトの名無しさん
2020/09/03(木) 21:11:58.06ID:97aiR77+ >>443 Ruby
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }
Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )
print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join
#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }
Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )
print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join
#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word
446デフォルトの名無しさん
2020/09/03(木) 23:01:51.02ID:ZdR77D/Z >>442
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
^
(eval):1: syntax error, unexpected end-of-input, expecting ']'
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
^
(eval):1: syntax error, unexpected end-of-input, expecting ']'
447253
2020/09/04(金) 00:01:38.15ID:7q8p4uRD >>443 Perl5
print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';
実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';
実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ
448デフォルトの名無しさん
2020/09/04(金) 00:03:39.28ID:0wfgbo8M450デフォルトの名無しさん
2020/09/04(金) 14:52:11.79ID:Wl7qFIBb >>443
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011
451デフォルトの名無しさん
2020/09/04(金) 23:27:10.30ID:1jfeDIRi >>443
POSIX sh
変換 (https://paiza.io/projects/Yk6wcUtik7BZZ0AHspdZFw?language=bash)
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done
逆変換 (https://paiza.io/projects/AN6vfPgtdJODnYL9jW8MDQ?language=bash)
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done
POSIX sh
変換 (https://paiza.io/projects/Yk6wcUtik7BZZ0AHspdZFw?language=bash)
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done
逆変換 (https://paiza.io/projects/AN6vfPgtdJODnYL9jW8MDQ?language=bash)
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done
452253
2020/09/04(金) 23:39:14.02ID:tinAGSqp >>443>>444 Perl5、バイナリコード(ln)を含むデータをファイルから読み込み、変換》逆変換
undef $/; # slurp
$s = <>;
@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";
%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;
実行結果
$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n
$ cat Hello_world_ln.txt
Hello world
$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world
undef $/; # slurp
$s = <>;
@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";
%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;
実行結果
$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n
$ cat Hello_world_ln.txt
Hello world
$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world
453デフォルトの名無しさん
2020/09/05(土) 15:41:23.97ID:dAk5cbFF お題
UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ
あaθ💀xΩ死🄫
1バイト文字: 0000〜0111: 0〜7
多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)
2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)
Unicode
https://seiai.ed.jp/sys/text/csd/cf14/c14a070.html
UTF-8 は以下のように、先頭ニブル・4ビットで、1〜4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ
あaθ💀xΩ死🄫
1バイト文字: 0000〜0111: 0〜7
多バイト文字の2バイト目以降
1000〜1011: 8〜11(8〜B)
2バイト文字: 1100〜1101: 12〜13(C〜D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)
Unicode
https://seiai.ed.jp/sys/text/csd/cf14/c14a070.html
454デフォルトの名無しさん
2020/09/05(土) 15:42:06.74ID:gCThzAly お題:
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4
455デフォルトの名無しさん
2020/09/05(土) 15:55:10.03ID:gCThzAly 前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです
456デフォルトの名無しさん
2020/09/05(土) 17:01:13.99ID:4vfoT7Xn Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0)
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい
457デフォルトの名無しさん
2020/09/05(土) 17:35:24.39ID:s0GYNWbk458デフォルトの名無しさん
2020/09/05(土) 18:43:21.60ID:EHHCviTW 文字コードまわりの難しさにぶつかったことないから何が何やら
459デフォルトの名無しさん
2020/09/05(土) 19:37:20.09ID:PsWvtVS4 >>453 Ruby
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB
460デフォルトの名無しさん
2020/09/05(土) 19:47:45.16ID:EHHCviTW 普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw
461453
2020/09/05(土) 21:41:42.84ID:dAk5cbFF 書いてある条件だけで、求めて下さい!
他の方法では、簡単すぎるので
他の方法では、簡単すぎるので
462デフォルトの名無しさん
2020/09/05(土) 21:46:41.80ID:qef5ttAc それだったら宿題スレで頼みなよ
463デフォルトの名無しさん
2020/09/05(土) 22:24:40.63ID:s0GYNWbk >>461
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。
464デフォルトの名無しさん
2020/09/05(土) 22:25:44.48ID:s0GYNWbk465デフォルトの名無しさん
2020/09/05(土) 22:49:41.81ID:BjVkDMA6466253
2020/09/06(日) 00:11:00.10ID:Lo+HJN6n >>380 Perl5
($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
$c = $a[$h][$w];
$S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
if ($c ne '#') {
$e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
$e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
}}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
my $p = @_[-1];
for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
}
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G
実行結果
~ $ perl 18_380_maze_paths.pl
12
($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
$c = $a[$h][$w];
$S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
if ($c ne '#') {
$e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
$e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
}}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
my $p = @_[-1];
for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
}
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G
実行結果
~ $ perl 18_380_maze_paths.pl
12
467253
2020/09/06(日) 00:30:27.55ID:WEZ/j7UH468デフォルトの名無しさん
2020/09/06(日) 00:34:53.48ID:T9SJW9BR >>395
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。
469デフォルトの名無しさん
2020/09/06(日) 03:34:19.13ID:0eLnTbkJ お題
4999の逆数を小数点 以下48桁まで求める。
4999の逆数を小数点 以下48桁まで求める。
470デフォルトの名無しさん
2020/09/06(日) 07:27:16.04ID:+WaXk/Ri471デフォルトの名無しさん
2020/09/06(日) 08:14:24.88ID:CxoRMtYI472デフォルトの名無しさん
2020/09/06(日) 09:37:57.61ID:yqdZF37w473デフォルトの名無しさん
2020/09/06(日) 10:17:30.08ID:uXWEOXeO474デフォルトの名無しさん
2020/09/06(日) 10:30:03.37ID:r+7yP+3C475デフォルトの名無しさん
2020/09/06(日) 10:58:30.52ID:5MBR0P77 1京くらいのループで解けるなら実用性はかろうじてある
競技性は無い
競技性は無い
476デフォルトの名無しさん
2020/09/06(日) 11:04:38.70ID:OF7UMaiS 最悪でも2^n組みしかなくね
477デフォルトの名無しさん
2020/09/06(日) 11:07:12.07ID:uXWEOXeO >>465 はlast_time(10^5)回のループの中でCOL(10)回ループ入れてるし、10^6では?
478デフォルトの名無しさん
2020/09/06(日) 11:29:22.40ID:r+7yP+3C >>476
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。
480デフォルトの名無しさん
2020/09/06(日) 12:31:12.27ID:OF7UMaiS >>478
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない
481デフォルトの名無しさん
2020/09/06(日) 13:12:26.24ID:GcXxHJb3 >>469 C++
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001
482デフォルトの名無しさん
2020/09/06(日) 13:48:19.34ID:r+7yP+3C >>480
I see! Thanks.
I see! Thanks.
483デフォルトの名無しさん
2020/09/06(日) 15:12:48.21ID:JPL9qi8o484デフォルトの名無しさん
2020/09/06(日) 15:20:10.24ID:JPL9qi8o でその状態数の方が全経路数より圧倒的に少ないので
経路に沿ってではなくて状態について解いていく
経路に沿ってではなくて状態について解いていく
485デフォルトの名無しさん
2020/09/06(日) 16:31:54.76ID:SNogxihD486デフォルトの名無しさん
2020/09/06(日) 16:34:17.02ID:r+7yP+3C■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で [お断り★]
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★3 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★4
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★3
- 【悲報】吉兆ささやき女将(頭が真っ白になって)高市早苗「頭が真っ白になって・・・」 [616817505]
- 【朗報】高市経済ブレーン「経済対策の執行で来春には内需が大復活。3月頃利上げ可能に」 [237216734]
- 【高市早苗】習近平、本気で激おこ [115996789]
- 【高市有事】高市早苗が就任一ヶ月でやったこと一覧wwwwwwwwwwwwwww [603416639]
