[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/09 01:44 / Filesize : 338 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part18



1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

388 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 00:15:03.77 ID:/+dAg+CW.net]
お題: 二人の煽り耐性から「死ね」と言い合うプログラム

煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}

> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」

389 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:25:39.14 ID:IZwRntbA.net]
if (>>381{A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;

390 名前:デフォルトの名無しさん mailto:sage [2020/08/18(火) 01:35:33.42 ID:Vl5MoMXT0.net]
>>358 js

const input = "programmingodaisure"

let tmp_str = input;
let tmp_hex = new Uint8Array();

do {
tmp_str += "X";
tmp_hex = [0x00, ...Base58.decode(tmp_str)];
} while (tmp_hex.length < 25)

const prefix_and_data = tmp_hex.slice(0, -4);

const doubleSha256 = sha256.digest(sha256.digest(prefix_and_data))
const checkSum = doubleSha256.slice(0, 4);

const result_hex = new Uint8Array([...prefix_and_data, ...checkSum]);
const result_str = Base58.encode(result_hex);

console.log(result_str);

→ "1programmingodaisureXXXXXXXZHx9sj"

https://chainflyer.bitflyer.jp/Address/1programmingodaisureXXXXXXXZHx9sj

BASE58とSHA256のライブラリ
https://cdn.jsdelivr.net/npm/base-58@0.0.1/Base58.min.js
https://cdn.jsdelivr.net/npm/js-sha256@0.9.0/src/sha256.min.js

391 名前:デフォルトの名無しさん [2020/08/19(水) 16:18:46 ID:ltFkDVN7.net]
>>372

#!/bin/sh
rm $0

392 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 18:40:23.70 ID:d4bqPFA7.net]
「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。

393 名前:デフォルトの名無しさん [2020/08/19(水) 18:45:07.34 ID:OrygHj4v.net]
略して示唆トン。

394 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 11:35:09.25 ID:nWR09WFB.net]
>>257
Elixir

# 蓄積変数 set は、すべての文字列の集合。abcde, bcdea などの5つ。
# word は、1文字ずらした文字列

src_word = 'abcde'

%{ set: set } = Enum.reduce_while( 1..length( src_word ), %{ set: MapSet.new, word: src_word }, fn _count, acc ->

[ head | tail ] = acc.word
next_word = tail ++ [ head ] # 1文字ずらす
acc = %{ acc | word: next_word }

if MapSet.member?( acc.set, next_word ) do
{ :halt, acc } # 既に存在すれば、break
else
acc = %{ acc | set: MapSet.put( acc.set, next_word ) }
{ :cont, acc } # ループを続ける
end
end )

# IO.inspect set

# 文字列が、集合の中に含まれているか?
[ 'deabc', 'cdeba' ]
|> Enum.map( fn str -> MapSet.member?( set, str ) end )
|> IO.inspect # [true, false]

395 名前:デフォルトの名無しさん mailto:sage [2020/08/23(日) 18:52:15.52 ID:kIX3/Jw/.net]
お題:
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。

迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。

1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。

例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12

396 名前:デフォルトの名無しさん [2020/08/24(月) 04:30:51.55 ID:qrCNAVcy.net]
>>388 C++
https://ideone.com/Omaaxj



397 名前:デフォルトの名無しさん mailto:sage [2020/08/24(月) 11:49:18.16 ID:2DIU31aQ.net]
>>388 C++
https://wandbox.org/permlink/H36ha1xPEFeE4KXQ

398 名前:蟻人間 mailto:sage [2020/08/29(土) 20:44:46.53 ID:GYyhmMZY.net]
お題: ロシアンルーレット。

リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!

399 名前:デフォルトの名無しさん [2020/08/29(土) 21:04:26.78 ID:KxRf/0sH.net]
>>391
仕様がわからない

400 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 21:07:51 ID:GYyhmMZY.net]
ロシアンルーレット
https://ja.m.wikipedia.org/wiki/%E3%83%AD%E3%82%B7%E3%82%A2%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AC%E3%83%83%E3%83%88

回転式拳銃(リボルバー)
https://ja.m.wikipedia.org/wiki/%E5%9B%9E%E8%BB%A2%E5%BC%8F%E6%8B%B3%E9%8A%83

401 名前:蟻人間 mailto:sage [2020/08/29(土) 21:24:48.99 ID:GYyhmMZY.net]
>>391-392 こんな感じか?

最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。

402 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/29(土) 22:00:32 ID:GYyhmMZY.net]
えっ、拳銃見たことないの?

403 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:14:20.91 ID:bYj4gZFd.net]
銃の弾数と空砲/実包の割合とか
オートマとリボルバーどっちかとか特定してからにしてくれ

404 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 22:51:06 ID:yG/yQHuO.net]
jsインタラクティブ入力に弱い

405 名前:デフォルトの名無しさん [2020/08/29(土) 23:12:55 ID:yG/yQHuO.net]
>>391

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
}

406 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:34:19.24 ID:2f/XylsB.net]
VSCode の拡張機能、Quokka.js を使えば?
変数を書くだけで、内容が表示される

var a = 1
a // 1 と表示される



407 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 23:41:03.13 ID:yG/yQHuO.net]
swift playgroundとかjestのinlineSnapshotみたいな感じか
使うときがあるか微妙

408 名前:デフォルトの名無しさん [2020/08/30(日) 01:02:17.18 ID:xjthqQ7x.net]
お題
nを受け取って1からnまでインクリメントされた配列を返してください
インクリメントするごとに値の数だけ配列に値を追加してください


入力: 1
出力: [1]

入力: 3
出力: [1, 2, 2, 3, 3, 3]

409 名前:デフォルトの名無しさん [2020/08/30(日) 01:33:41.99 ID:xjthqQ7x.net]
お題
配列をソートする関数を受け取って安定ソートか否かを判定する
プログラムを作成してください

410 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 06:49:46 ID:a0VCHWdX.net]
お題: splitを実装せよ(ただし組み込みやライブラリのsplitは使ってはならない)

例:
>> split('abc:def:ghi', ':')
>> ['abc', 'def', 'ghi']

411 名前:デフォルトの名無しさん [2020/08/30(日) 08:02:58.80 ID:Ui9A3dkW.net]
>>401 J
f =: #~ @: >: @ i.

412 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:40:37.84 ID:rD3R6mry.net]
>>401 Ruby

(0..3).each{|n| p (1..n).reduce([]){|s, a| s + [a] * a}}

# =>
[]
[1]
[1, 2, 2]
[1, 2, 2, 3, 3, 3]


>>403 Ruby

p 'abc:def:ghi'.scan(/[^:]+/) # => ["abc", "def", "ghi"]

413 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:41:22.98 ID:ka/TVb/i.net]
>>401 octave
https://ideone.com/wQ0EMk
f = @(n) repelem(1:n, 1:n);
f(3)

414 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 09:43:25.32 ID:pWMgwPJi.net]
>>403
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))
}

415 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 17:51:57.01 ID:9TpSDH8X.net]
>>403 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', ':')

416 名前:400 mailto:sage [2020/08/30(日) 18:29:58 ID:9TpSDH8X.net]
一応url
https://ideone.com/Ni9DPI



417 名前:デフォルトの名無しさん [2020/08/30(日) 18:55:27.84 ID:uG01djUi.net]
>>403 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' ]
ずるいしダブルクォート対応できてないけど思いつき

418 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 19:52:13.41 ID:KMqOjvFr.net]
>>403 Ruby
# セパレーターの仕様が文字か文字列か分からなかったので文字列にした
def split( str, sep )
res = []
(str + sep).scan( /(.*?)#{Regexp.escape(sep)}/ ){ res << $1 }
res
end

split('abc:def:ghi', ':') #=> ["abc", "def", "ghi"]

419 名前:デフォルトの名無しさん [2020/08/30(日) 19:55:11.73 ID:OKCM85cL.net]
>> 393 C++
https://ideone.com/ztBnmn

>> 394 C++
https://ideone.com/8YhzWh
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)

>> 395 C++
https://ideone.com/lmYLkx

420 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 23:05:46 ID:HaB2mhSL.net]
>>401 C++
https://wandbox.org/permlink/LxzMc7UHa1lbhcX1

コンパイル時にできる

421 名前:デフォルトの名無しさん [2020/08/30(日) 23:23:11.11 ID:OKCM85cL.net]
operator[]がconstexprなのはC++17以降らしいね

422 名前:デフォルトの名無しさん [2020/08/31(月) 00:36:58 ID:Sr2UUXBk.net]
宇宙創生から現在まで【宇宙の歴史?(過去編)】
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
楽しいことを増やそう!科学の眼鏡を

423 名前:ゥけた1日とは【ヨビノリたくみ特別公演】
https://www.youtube.com/watch?v=u5al7kwy64k
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
https://www.youtube.com/watch?v=qxiAyyotAM0
[]
[ここ壊れてます]

424 名前:デフォルトの名無しさん [2020/08/31(月) 08:12:50.04 ID:o+KAewBM.net]
>>401 Ruby
def f(n)
(1..n).map{|v| [v]*v}.flatten
end

425 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 09:50:22 ID:3l02ZOhc.net]
>>404
何やってんのか分かんねぇ…

426 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 12:53:04.32 ID:DeTlQxvW.net]
f#(@:m:@ )顔文字にしか見えん



427 名前:デフォルトの名無しさん [2020/08/31(月) 13:15:43 ID:0jcGZySh.net]
\(._. \)

428 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:37:09 ID:tSOV4fJk.net]
お題: 覆面算パズルをランダムに自動生成せよ。

単語は大文字のアルファベットのみとする。
各単語は自然数を表している。
単語の各文字は数字を表している。
各単語の先頭はゼロではない。
同じ文字は同じ数字が入る。文字が違えば、数字も違う。
各単語は、3文字以上6文字以下とする。
答えは一つでなければいけない。
今回は、簡単な足し算のみとする。

例)
SEND+MORE=MONEY.
BASE+BALL=GAMES.

単語リスト:https://gist.github.com/deekayen/4148741

429 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/31(月) 13:41:36 ID:tSOV4fJk.net]
お題:覆面算パズルを解くプログラム。

例)
SEND+MORE=MONEY
→9567+1085=10652.

BASE+BALL=GAMES
→7483+7455=14938.

430 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 14:49:18.65 ID:7ZWcUsrI.net]
>>401
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]

431 名前:蟻人間 mailto:sage [2020/08/31(月) 16:10:16.99 ID:lWn/zYPT.net]
>>421, >>420の順に解いてね。

ヒント要る?

432 名前:蟻人間 mailto:sage [2020/08/31(月) 16:12:08.02 ID:lWn/zYPT.net]
ヒント: 各文字を変数とした連立方程式。

433 名前:蟻人間 mailto:sage [2020/08/31(月) 16:24:48.19 ID:lWn/zYPT.net]
文字の数が少ないんだから、ブルートフォースでも解けるか。。。

434 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:24.52 ID:qQr3mFGF.net]
間違えてなければO(10!)のはずだから充分多いのでは

435 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:26:56.47 ID:qQr3mFGF.net]
ごめん10!はめちゃくちゃ小さかった

436 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 18:43:24.02 ID:hr5jjNmH.net]
この手の問題は総当りしたほうが速いことすらある



437 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 19:18:49 ID:J48xi6fS.net]
しかもとっさにcombination用意できなければ(vimなどで)for文10個書いたほうが早いまである

438 名前:デフォルトの名無しさん [2020/08/31(月) 19:23:55 ID:fdwPQ6pV.net]
覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。
https://sunasunax.hatenablog.com

439 名前:デフォルトの名無しさん [2020/08/31(月) 21:02:28 ID:Sr2UUXBk.net]
デキる人ほどフリーランス化する?★働き方改革
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

440 名前:253 mailto:sage [2020/08/31(月) 21:47:00.41 ID:Mm8nXRhv.net]
>>401 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

441 名前:253 mailto:sage [2020/08/31(月) 21:54:06.64 ID:pmRcaHIk.net]
>>401 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

442 名前:デフォルトの名無しさん mailto:sage [2020/08/31(月) 23:33:38 ID:0jcGZySh.net]
>>401
Kotlin
https://paiza.io/projects/A_eQfaut9aEoIRjfwbkN8Q

443 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:01:02 ID:1mY8ta+4.net]
>>401
C
https://paiza.io/projects/wwsivStn5Eq4vN7-XA5ShQ

444 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 00:18:24 ID:vTrOzHSW.net]
>>401
python
lambda x: [int(i) for i in "".join(f"{y}"*y for y in range(1,x+1))]

445 名前:デフォルトの名無しさん [2020/09/01(火) 14:16:37.60 ID:3qKfeSqF.net]
全く知らない構文の言語でカンでいじっても構文エラーも止められずに
動かない機械ガチャガチャしてるだけ感すごいよな

446 名前:蟻人間 mailto:sage [2020/09/01(火) 18:47:08.83 ID:4meeAMMW.net]
お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。



447 名前:デフォルトの名無しさん [2020/09/01(火) 18:47:54.44 ID:Y09tsFBY.net]
>>401 Ruby
def f(n)
(1..n*(n+1)/2).map{|x| ((x*2)**0.5+0.5).to_i}
end

448 名前:デフォルトの名無しさん [2020/09/01(火) 18:48:39.88 ID:PZXbhIm5.net]
>>438
テスト用のinput.txtちょーだい!

449 名前:蟻人間 mailto:sage [2020/09/01(火) 18:54:57.84 ID:4meeAMMW.net]
>>440
「これはテキトーなテキストデータである。
例えば
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
まあ、いろいろあるっしょ。」

450 名前:デフォルトの名無しさん [2020/09/01(火) 18:57:45.00 ID:PZXbhIm5.net]
>>441
あざーす!

451 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 19:10:04.73 ID:y/wdSyKD.net]
>>438
Mail::RFC822::Address: regexp-based address validatio
www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

452 名前:蟻人間 mailto:sage [2020/09/01(火) 20:18:24.49 ID:4meeAMMW.net]
ヒント: 文字列置換と正規表現

453 名前:デフォルトの名無しさん [2020/09/01(火) 22:43:25 ID:PZXbhIm5.net]
>>438
Java
https://paiza.io/projects/50iQ0JnPk_R404qr8Db80w

454 名前:デフォルトの名無しさん [2020/09/01(火) 22:55:31.34 ID:PZXbhIm5.net]
>>401
Java
https://paiza.io/projects/qDtcIJeOUdsMkEIxaXEf9w

455 名前:253 mailto:sage [2020/09/02(水) 00:54:35.54 ID:GpxOT2yi.net]
>>401 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]

456 名前:デフォルトの名無しさん [2020/09/02(水) 23:08:34.85 ID:KTyhBksd.net]
>>402
Java
https://paiza.io/projects/PGljCEpf6PlEcYw0xzNBVQ



457 名前:デフォルトの名無しさん [2020/09/02(水) 23:31:10.43 ID:KTyhBksd.net]
>>403
Java
https://paiza.io/projects/nGioH2f50H9y8EHZkISTOg

458 名前:デフォルトの名無しさん [2020/09/03(木) 16:10:13.26 ID:dE9fk8zR.net]
>>403 Ruby

def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")

実行結果
["1", "2", "3", "4"]

459 名前:蟻人間 mailto:sage [2020/09/03(木) 19:41:51.27 ID:0EoV326K.net]
お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。

460 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/09/03(木) 19:46:20 ID:0EoV326K.net]
>>451
追記。逆変換器も作って動作することを確認せよ。

461 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 21:11:58.06 ID:97aiR77+.net]
>>451 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

462 名前:デフォルトの名無しさん mailto:sage [2020/09/03(木) 23:01:51.02 ID:ZdR77D/Z.net]
>>450

f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
   ^
(eval):1: syntax error, unexpected end-of-input, expecting ']'

463 名前:253 mailto:sage [2020/09/04(金) 00:01:38 ID:7q8p4uRD.net]
>>451 Perl5

print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';

実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ

464 名前:デフォルトの名無しさん [2020/09/04(金) 00:03:39 ID:0wfgbo8M.net]
>>452
Java
https://paiza.io/projects/w8Q5NbodI6iRfjcBWA1Nqg

465 名前:253 mailto:sage [2020/09/04(金) 00:04:27 ID:gbrpP/bR.net]
>>455
>>452 逆変換機もか…忘れてた
まいいや

466 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 14:52:11.79 ID:Wl7qFIBb.net]
>>451
Elixir。CP932 が無いので、途中までしか出来ません!

# 8桁・2進数・0埋め

_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )

# 01100001_01100010_01100011



467 名前:デフォルトの名無しさん [2020/09/04(金) 23:27:10.30 ID:1jfeDIRi.net]
>>451
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

468 名前:253 mailto:sage [2020/09/04(金) 23:39:14.02 ID:tinAGSqp.net]
>>451>>452 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

469 名前:デフォルトの名無しさん [2020/09/05(土) 15:41:23.97 ID:dAk5cbFF.net]
お題

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

470 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:42:06.74 ID:gCThzAly.net]
お題:
左から右へ、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

471 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 15:55:10.03 ID:gCThzAly.net]
前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです

472 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:01:13.99 ID:4vfoT7Xn.net]
Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0)
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい

473 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 17:35:24.39 ID:s0GYNWbk.net]
>>461
「この文字列の文字数を求める」んじゃないの?
バイト数だったらUTF-8だろうがSJISだろうが関係なく,
バイトの個数を数えればいいだけになってしまうが……。

474 名前:デフォルトの名無しさん [2020/09/05(土) 18:43:21.60 ID:EHHCviTW.net]
文字コードまわりの難しさにぶつかったことないから何が何やら

475 名前: []
[ここ壊れてます]

476 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 19:37:20.09 ID:PsWvtVS4.net]
>>461 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



477 名前:デフォルトの名無しさん [2020/09/05(土) 19:47:45.16 ID:EHHCviTW.net]
普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw

478 名前:453 mailto:sage [2020/09/05(土) 21:41:42 ID:dAk5cbFF.net]
書いてある条件だけで、求めて下さい!

他の方法では、簡単すぎるので

479 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 21:46:41 ID:qef5ttAc.net]
それだったら宿題スレで頼みなよ

480 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:24:40.63 ID:s0GYNWbk.net]
>>469
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?

だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。

文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
https://gist.github.com/cmplstofB/0b0ce2bf052b3bb64d091fc83504fc32#file-u8dec-sh
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。

481 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:25:44.48 ID:s0GYNWbk.net]
>>462
これ結構難しい。
まず普通に算法を考える段階で行き詰まってるw
頭悪いな〜

482 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 22:49:41.81 ID:BjVkDMA6.net]
>>462 C
https://ideone.com/X5mYh3

483 名前:253 mailto:sage [2020/09/06(日) 00:11:00 ID:Lo+HJN6n.net]
>>388 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

484 名前:253 mailto:sage [2020/09/06(日) 00:30:27 ID:WEZ/j7UH.net]
>>474
今思うとエッジの表現は無向ではなく二重の有効グラフにしたほうが簡潔なコードになったかもしれない
まぁいいや…二度書く気は起きない…

485 名前:デフォルトの名無しさん [2020/09/06(日) 00:34:53.48 ID:T9SJW9BR.net]
>>403
Kotlin
https://paiza.io/projects/N9X2CVAQj3NJ0RXPrk7i0g

区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。

486 名前:デフォルトの名無しさん [2020/09/06(日) 03:34:19.13 ID:0eLnTbkJ.net]
お題
4999の逆数を小数点 以下48桁まで求める。



487 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 07:27:16.04 ID:+WaXk/Ri.net]
>>477 例外だけどbcコマンド
scale=48
1/4999
.000200040008001600320064012802560512102420484096

488 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 08:14:24.88 ID:CxoRMtYI.net]
>>477 Ruby

puts ('%0.49f' % (1r/4999)).chop

# => 0.000200040008001600320064012802560512102420484096






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<338KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef