プログラミングのお題スレです。
【出題と回答例】
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
304デフォルトの名無しさん
2020/08/14(金) 09:05:58.49ID:jifd8sPx const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz
これだけでよかったorz
305デフォルトの名無しさん
2020/08/14(金) 14:02:54.65ID:9qHjnK+i お題:任意文字列を含むビットコインアドレスを生成するスクリプト
BitCoinDescriptionAddress
↓
1BitCoinDescriptionAddressadTvGDH
BitCoinDescriptionAddress
↓
1BitCoinDescriptionAddressadTvGDH
306デフォルトの名無しさん
2020/08/15(土) 16:58:24.79ID:gFfdk9Ij >>295
Kotlin 及び Kotlin script
普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。
val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)
この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。
それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。
fun <T> List<T>.component6() = get(5)
val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)
これで f には 3 が代入される。
まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
Kotlin 及び Kotlin script
普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。
val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)
この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。
それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。
fun <T> List<T>.component6() = get(5)
val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)
これで f には 3 が代入される。
まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
307295
2020/08/15(土) 17:28:56.25ID:nnj+MvqH308デフォルトの名無しさん
2020/08/15(土) 17:57:15.54ID:uqmyrozg お題
長さNの順列を全列挙してください
入力: N
出力: N!行の1からNの整数を用いた順列
例
入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
長さNの順列を全列挙してください
入力: N
出力: N!行の1からNの整数を用いた順列
例
入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
309デフォルトの名無しさん
2020/08/15(土) 18:04:12.38ID:WnA8LB9O310デフォルトの名無しさん
2020/08/15(土) 18:07:06.59ID:nnj+MvqH311デフォルトの名無しさん
2020/08/15(土) 19:24:16.43ID:4GsEJ4Sf お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!
312デフォルトの名無しさん
2020/08/15(土) 20:07:59.51ID:nR02Shr3 お題: 整数の0,1を真偽値のfalse,trueに変換しなさい
313デフォルトの名無しさん
2020/08/15(土) 20:22:45.39ID:BUqVCKAW >>311 Ruby
require 'webrick'
BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'
srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }
srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end
Thread.new { sleep 1; system( %Q{"#{BrowserPath}" http://127.0.0.1:55080/} ) }
srv.start
require 'webrick'
BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'
srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }
srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end
Thread.new { sleep 1; system( %Q{"#{BrowserPath}" http://127.0.0.1:55080/} ) }
srv.start
314デフォルトの名無しさん
2020/08/15(土) 20:34:31.85ID:BUqVCKAW >>312 Ruby
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end
[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end
[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}
316デフォルトの名無しさん
2020/08/15(土) 20:49:55.10ID:WnA8LB9O317デフォルトの名無しさん
2020/08/15(土) 20:59:34.51ID:nnj+MvqH >>312 ocaml
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)
>>312 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)
>>312 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
318デフォルトの名無しさん
2020/08/15(土) 21:22:21.80ID:v9cGseLQ319デフォルトの名無しさん
2020/08/15(土) 23:19:07.77ID:gFfdk9Ij >>312
Kotlin 及び Kotlin Script
まず、こういう拡張関数を定義しておく。
fun Int.toBoolean() = this != 0
この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。
例
0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。
Kotlin 及び Kotlin Script
まず、こういう拡張関数を定義しておく。
fun Int.toBoolean() = this != 0
この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。
例
0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。
320デフォルトの名無しさん
2020/08/16(日) 02:10:15.75ID:aQEvXwVj321デフォルトの名無しさん
2020/08/16(日) 10:54:19.77ID:DGzsHTxH322デフォルトの名無しさん
2020/08/16(日) 11:17:36.83ID:x8ZjthFZ323デフォルトの名無しさん
2020/08/16(日) 19:28:34.07ID:Stgr85a5324蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 19:41:54.77ID:GwA/W8AI お題: 浮動小数点数の区間演算の加減乗除(+、-、*、/)を実現しなさい。開区間は丸カッコを、閉区間は角カッコを使う。
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。
例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。
例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).
325デフォルトの名無しさん
2020/08/16(日) 19:47:13.56ID:WQRWSQYc326蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 19:54:55.84ID:GwA/W8AI327デフォルトの名無しさん
2020/08/16(日) 19:59:26.75ID:WQRWSQYc >>326
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
328デフォルトの名無しさん
2020/08/16(日) 20:01:44.11ID:5GlLVozn そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ
ペアノ系で 0 = 1 って言ってるようなもんだぞ
ペアノ系で 0 = 1 って言ってるようなもんだぞ
329蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:08:52.13ID:GwA/W8AI >>327
任意の[x, y]についてx<=yと仮定する。
[a, b] + [c, d] == [a+c, b+d].
[a, b] - [c, d] == [a-d, b-c].
[a, b] * [c, d] == [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] == [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
任意の[x, y]についてx<=yと仮定する。
[a, b] + [c, d] == [a+c, b+d].
[a, b] - [c, d] == [a-d, b-c].
[a, b] * [c, d] == [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] == [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
330デフォルトの名無しさん
2020/08/16(日) 20:11:24.43ID:WQRWSQYc >>329
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
331蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:24:24.91ID:GwA/W8AI >>330
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。
332デフォルトの名無しさん
2020/08/16(日) 20:32:34.77ID:WQRWSQYc >>331
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ
だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ
だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
333デフォルトの名無しさん
2020/08/16(日) 20:34:23.06ID:1lLvvYB6 計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね
334デフォルトの名無しさん
2020/08/16(日) 20:50:12.97ID:5EzRC1Sr >>331
死ねカス
死ねカス
335蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 20:54:18.06ID:GwA/W8AI >>332
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
336デフォルトの名無しさん
2020/08/16(日) 20:57:11.13ID:rY4w2Ca/ まーたスレタイからズレてるよ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
337デフォルトの名無しさん
2020/08/16(日) 21:13:43.55ID:WQRWSQYc where 0 < a < b
0 = 0 * [0, 1]
= ([a, b] + [-a, -b]) * [0, 1]
= [a, b] * [0, 1] + [-a, -b] * [0, 1]
= [0, b] + [-b, 0]
= [-b, b]
!= [0, 0] = 0
矛盾
死ね
消えろ
0 = 0 * [0, 1]
= ([a, b] + [-a, -b]) * [0, 1]
= [a, b] * [0, 1] + [-a, -b] * [0, 1]
= [0, b] + [-b, 0]
= [-b, b]
!= [0, 0] = 0
矛盾
死ね
消えろ
339デフォルトの名無しさん
2020/08/16(日) 21:29:26.85ID:WQRWSQYc340デフォルトの名無しさん
2020/08/16(日) 21:34:29.96ID:1lLvvYB6 [0, 1]*[0, 1] = [0, 1]
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって
341蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 21:48:28.85ID:GwA/W8AI 加法
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
342蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 22:04:28.19ID:GwA/W8AI 逆元がないから、減法が壊れてる。
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。
343デフォルトの名無しさん
2020/08/16(日) 22:08:12.76ID:WQRWSQYc344デフォルトの名無しさん
2020/08/16(日) 22:16:18.77ID:UYHP6Cr3 問題を解くスキル<<<<<解ける問題を作るスキル
だったりするかも
だったりするかも
345デフォルトの名無しさん
2020/08/16(日) 22:26:48.34ID:Nztll5gc346蟻人間 ◆T6xkBnTXz7B0
2020/08/16(日) 22:46:06.78ID:GwA/W8AI やり直し。
お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。
閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[a, b]という式があればa<=bでなければならない。
式が正当でないか、ゼロ除算があれば、実行時エラーを発生させること。
演算の定義:
[a, b] + [c, d] := [a+c, b+d].
[a, b] - [c, d] := [a-d, b-c].
[a, b] * [c, d] := [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] := [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
例)
[1, 3] + [2, 2] → [3, 5].
[2, 8] - [1, 2] → [0, 7].
[-3, 2] * [1, 3] → [-9, 6].
お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。
閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[a, b]という式があればa<=bでなければならない。
式が正当でないか、ゼロ除算があれば、実行時エラーを発生させること。
演算の定義:
[a, b] + [c, d] := [a+c, b+d].
[a, b] - [c, d] := [a-d, b-c].
[a, b] * [c, d] := [min(a*c, b*c, a*d, b*d), max(a*c, b*c, a*d, b*d)].
[a, b] / [c, d] := [min(a/c, b/c, a/d, b/d), max(a/c, b/c, a/d, b/d)].
例)
[1, 3] + [2, 2] → [3, 5].
[2, 8] - [1, 2] → [0, 7].
[-3, 2] * [1, 3] → [-9, 6].
347デフォルトの名無しさん
2020/08/16(日) 22:58:27.46ID:bYLilpPQ つーか
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
349253
2020/08/16(日) 23:50:47.82ID:G5r8RAij >>308 Perl5
use Data::Dump 'dump';
sub fn {
my ($le, $pv, @ri) = @_;
defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
,
@ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
print dump(fn [], @a);
実行結果
$ perl 18_308_N_permutation.pl
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])
use Data::Dump 'dump';
sub fn {
my ($le, $pv, @ri) = @_;
defined $pv ? map {[$pv, @$_]} fn([], @$le, @ri) : ([])
,
@ri ? fn([@$le, $pv], @ri) : ()
}
$N = 3;
@a = 1..$N;
print dump(fn [], @a);
実行結果
$ perl 18_308_N_permutation.pl
([1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1])
350デフォルトの名無しさん
2020/08/17(月) 01:49:55.07ID:Nup7rIuH 前の書き方だとやる気が出ないみたいなので再掲
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの
プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト
詳細
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300
例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの
プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト
詳細
https://www.tottemoyasashiibitcoin.net/entry/2018/02/04/165300
例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
これはどっちも有効なビットコインアドレスになってる
https://chainflyer.bitflyer.com/Address/1BitCoinDescriptionAddressadTvGDH
https://chainflyer.bitflyer.jp/Address/1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
351デフォルトの名無しさん
2020/08/17(月) 06:10:10.64ID:sRZ0bbBO >>346
消えろカス
消えろカス
352デフォルトの名無しさん
2020/08/17(月) 08:34:59.13ID:4e6PsksO >>351
お前うざいよ
お前うざいよ
353デフォルトの名無しさん
2020/08/17(月) 09:10:13.06ID:CGaaR/Ic どうすればいいか?ってのがよくわからない
354デフォルトの名無しさん
2020/08/17(月) 09:11:51.56ID:CGaaR/Ic 入力と出力をはっきりさせてほしい
それとも取引所の仕様を理解しろって話なの?
それとも取引所の仕様を理解しろって話なの?
355デフォルトの名無しさん
2020/08/17(月) 11:17:26.81ID:2KNIyB/f ブルートフォースアタックしか思い浮かばない。
356デフォルトの名無しさん
2020/08/17(月) 18:12:59.56ID:Nup7rIuH 入力が任意文字列で出力がそれを含む有効なビットコインアドレス
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
357デフォルトの名無しさん
2020/08/17(月) 19:37:06.53ID:4e6PsksO 秘密鍵でデコードできなくてもいんでしょ?
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
358デフォルトの名無しさん
2020/08/17(月) 19:45:01.16ID:Nup7rIuH0 基本的にはそれだけのこと
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
359デフォルトの名無しさん
2020/08/17(月) 22:43:06.44ID:sRZ0bbBO >>352
お前がうぜえよ死ね
お前がうぜえよ死ね
360デフォルトの名無しさん
2020/08/17(月) 22:47:24.50ID:4e6PsksO >>359
お前が死ね
お前が死ね
361デフォルトの名無しさん
2020/08/17(月) 22:50:53.21ID:3fwftKf8 よし俺がしぬよ
362デフォルトの名無しさん
2020/08/17(月) 22:53:16.60ID:UMcd904E 夏だなあ
363デフォルトの名無しさん
2020/08/17(月) 22:56:52.65ID:4e6PsksO >>361
じゃあ俺が死ぬよ
じゃあ俺が死ぬよ
364デフォルトの名無しさん
2020/08/17(月) 22:57:17.04ID:3fwftKf8 お題: 『死』を表現せよ
365デフォルトの名無しさん
2020/08/17(月) 22:57:32.35ID:3fwftKf8 >>363
どうぞうどうぞ
どうぞうどうぞ
366デフォルトの名無しさん
2020/08/17(月) 22:58:07.77ID:sRZ0bbBO >>363
じゃあ死ねよ
じゃあ死ねよ
367デフォルトの名無しさん
2020/08/17(月) 23:05:20.89ID:4e6PsksO368デフォルトの名無しさん
2020/08/17(月) 23:05:35.92ID:4e6PsksO じゃあ俺が死ぬよ
369デフォルトの名無しさん
2020/08/17(月) 23:05:59.92ID:4e6PsksO くるよくるよ
370デフォルトの名無しさん
2020/08/17(月) 23:06:13.27ID:4e6PsksO ドキドキ
371デフォルトの名無しさん
2020/08/17(月) 23:39:35.54ID:4e6PsksO 逃げたか
372デフォルトの名無しさん
2020/08/17(月) 23:39:58.23ID:4e6PsksO 笑いから逃げるな
373デフォルトの名無しさん
2020/08/18(火) 00:15:03.77ID:/+dAg+CW お題: 二人の煽り耐性から「死ね」と言い合うプログラム
煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}
例
> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
煽り耐性 0.1〜1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}
例
> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
374デフォルトの名無しさん
2020/08/18(火) 01:25:39.14ID:IZwRntbA if (>>373{A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;
375デフォルトの名無しさん
2020/08/18(火) 01:35:33.42ID:Vl5MoMXT0 >>350 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
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
376デフォルトの名無しさん
2020/08/19(水) 16:18:46.79ID:ltFkDVN7377デフォルトの名無しさん
2020/08/19(水) 18:40:23.70ID:d4bqPFA7 「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。
「死」の読みはひとつだけ。
示唆に富んでいる。
378デフォルトの名無しさん
2020/08/19(水) 18:45:07.34ID:OrygHj4v 略して示唆トン。
379デフォルトの名無しさん
2020/08/20(木) 11:35:09.25ID:nWR09WFB >>249
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]
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]
380デフォルトの名無しさん
2020/08/23(日) 18:52:15.52ID:kIX3/Jw/ お題:
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。
迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。
1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。
例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12
縦H、横Wの迷路が与えられます。
スタートからゴールに至る道順の個数を求めてください。
迷路は通路から通路へ、上下左右の4方向へのみ移動できます。
ただし、一度通った通路を引き返すような道順は無効です。
また、スタートとゴールは通路です。
1行目に迷路の高さと幅を表す整数H、Wが与えられます。
2行目からH行にわたって、迷路を表す長さWの文字列が与えられます。
文字列は 'S' 'G' '.' '#' の文字のみからなり、それぞれスタート、ゴール、通路、壁です。
例1:
入力:
5 5
S....
##.#.
...#.
##.#.
....G
出力:
2
例2:
入力:
5 5
S....
##.#.
...#.
...#.
....G
出力:
12
381デフォルトの名無しさん
2020/08/24(月) 04:30:51.55ID:qrCNAVcy382デフォルトの名無しさん
2020/08/24(月) 11:49:18.16ID:2DIU31aQ383蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 20:44:46.53ID:GYyhmMZY お題: ロシアンルーレット。
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
384デフォルトの名無しさん
2020/08/29(土) 21:04:26.78ID:KxRf/0sH >>383
仕様がわからない
仕様がわからない
385蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 21:07:51.24ID:GYyhmMZY386蟻人間 ◆T6xkBnTXz7B0
2020/08/29(土) 21:24:48.99ID:GYyhmMZY >>383-384 こんな感じか?
最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。
最初にリボルバーを回します。
(弾丸の位置を設定)
こめかみor天井?(K/t) K
1回目: 不発
もう一度リボルバーを回しますか? (Y/n) Y
(弾丸を回転)
こめかみor天井?(K/t) K
2回目: 不発
もう一度リボルバーを回しますか? (Y/n) n
こめかみor天井?(K/t) K
3回目: バーン!
あなたの負けです。
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"]
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】日本産牛肉の対中国輸出再開協議が中止 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★2 [BFU★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★3 [ぐれ★]
- 中国政府、日本人のビザ免除停止、鬼滅の刃公開停止を検討へ [271912485]
- 【実況】博衣こよりのえちえち雑談🧪★2
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
- 【実況】博衣こよりのえちえち雑談🧪
- 【悲報】自民党「聞いてないよー」 [616817505]
- 【高市速報】トヨタ社長、MAGA帽子をかぶって登場し世界を震撼させる [462275543]
