プログラミングのお題スレです。
【出題と回答例】
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
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"]
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+KAewBM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
