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

■ このスレッドは過去ログ倉庫に格納されています
2020/07/14(火) 13:53:46.47ID:jW5p6F/e
プログラミングのお題スレです。

【出題と回答例】
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/
2020/08/12(水) 23:55:21.87ID:WiVroiaz
差分出すっていうと ADPCM の圧縮を思い出すな。
2020/08/13(木) 01:08:54.66ID:TUx4JMNp
>>286
Perl5

プログラムの構造は >>287 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。
見易くするために '.' の後には改行を出力している。

以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。

$ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0'
abc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
Hello, world.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$
2020/08/13(木) 01:49:54.11ID:CZu90IWX
>>286 Ruby
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
2020/08/13(木) 03:32:09.93ID:CZu90IWX
>>286 Ruby
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
2020/08/13(木) 05:51:07.18ID:CZu90IWX
>>286
>>290,291 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい
2020/08/13(木) 06:48:39.25ID:9ZM4Lmsz
>>286 Ruby

gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}
294デフォルトの名無しさん
垢版 |
2020/08/13(木) 12:37:03.85ID:8zEuDtsy
なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか
2020/08/14(金) 01:20:11.50ID:CuxcYYZ5
お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。

octave
https://ideone.com/62dSzC

ada95
https://ideone.com/26IGLZ
2020/08/14(金) 03:17:07.09ID:cCFmHkiX
>>295 Ruby
# 初期化だけ
a = b = c = 2**31 - 1

# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
2020/08/14(金) 07:01:38.27ID:cCFmHkiX
>>295 Ruby
お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた

# 定数 0,1 から INT32_MAX, INT32_MIN
[~0].pack('l').unpack('L').first >> 1 #=> 2147483647
[~0].pack('l').unpack('N').first >> 1 #=> -2147483648

# 定数 1 から INT32_MAX, INT32_MIN
[~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647
[1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648
2020/08/14(金) 08:01:01.07ID:sgFs/qSh
>>295 JavaScript
a=b=c=-1>>>1
299デフォルトの名無しさん
垢版 |
2020/08/14(金) 08:17:19.00ID:jifd8sPx
>>295 C++
int32_t max = 1 << 31;
int32_t min = ~max;
300デフォルトの名無しさん
垢版 |
2020/08/14(金) 08:18:37.41ID:jifd8sPx
あ maxとminが逆だった
301デフォルトの名無しさん
垢版 |
2020/08/14(金) 08:20:39.60ID:jifd8sPx
しかもお題と関係ない スマソ
2020/08/14(金) 08:21:04.21ID:hpI++Bi7
>>295 Python では整数に制限がないからnumpyで、

import numpy as np
a=b=c=np.iinfo(np.int32).max
303デフォルトの名無しさん
垢版 |
2020/08/14(金) 08:38:19.44ID:jifd8sPx
>>295 C++(訂正)
#include <iostream>
#include <tuple>

int main() {
int32_t max = ~(1 << 31);
const auto [a, b, c] = [&]() { return std::tie(max, max, max); }();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}
304デフォルトの名無しさん
垢版 |
2020/08/14(金) 09:05:58.49ID:jifd8sPx
const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz
305デフォルトの名無しさん
垢版 |
2020/08/14(金) 14:02:54.65ID:9qHjnK+i
お題:任意文字列を含むビットコインアドレスを生成するスクリプト

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 が代入される。

まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
307295
垢版 |
2020/08/15(土) 17:28:56.25ID:nnj+MvqH
>>295 octave
https://ideone.com/FgfsWd
単に[a, b, c] = deal(intmax)でよかった
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
2020/08/15(土) 18:04:12.38ID:WnA8LB9O
>>308 Ruby

[*1..gets.to_i].permutation{|a| puts a*' '}
2020/08/15(土) 18:07:06.59ID:nnj+MvqH
>>308 octave
https://ideone.com/dC1LGs
f = @(n) perms(1:n);
f(3)
2020/08/15(土) 19:24:16.43ID:4GsEJ4Sf
お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。

内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、

Hello World!
2020/08/15(土) 20:07:59.51ID:nR02Shr3
お題: 整数の0,1を真偽値のfalse,trueに変換しなさい
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
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
{} : {}
315314
垢版 |
2020/08/15(土) 20:37:12.09ID:BUqVCKAW
>>314
0 : false
が一行余分に付いてしまった
2020/08/15(土) 20:49:55.10ID:WnA8LB9O
>>312 Ruby

n.nonzero?
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;
}
2020/08/15(土) 21:22:21.80ID:v9cGseLQ
>>312
0, 1以外の時の挙動が書いてない
単体テストできねーだろ、やり直し!
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 がその他の型だとコンパイルエラー。
2020/08/16(日) 02:10:15.75ID:aQEvXwVj
>>308 C
https://ideone.com/1EStFG
321デフォルトの名無しさん
垢版 |
2020/08/16(日) 10:54:19.77ID:DGzsHTxH
Python

>>312
bool(n)

>>308
from itertools import permutations
N = 3
print([x for x in permutations(range(1, N+1))])
322デフォルトの名無しさん
垢版 |
2020/08/16(日) 11:17:36.83ID:x8ZjthFZ
>>308 C++
https://ideone.com/vnmcwl
323デフォルトの名無しさん
垢版 |
2020/08/16(日) 19:28:34.07ID:Stgr85a5
>>308
Kotlin
https://paiza.io/projects/m-rh9LUdWqgBDV_7xXtTdA

なんとなく以前作ったような気もするがまた作った。
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).
2020/08/16(日) 19:47:13.56ID:WQRWSQYc
>>324
ほんとクソだなお前
なんで数と区間が何の説明もなく比較可能な状態になってんだよ
教養レベルの位相と集合の知識身に付けてから出直せハゲ
2020/08/16(日) 19:54:55.84ID:GwA/W8AI
>>325
入力の計算式において単一の数は同等の閉区間と見なすことにする。
2 → [2, 2].
2020/08/16(日) 19:59:26.75ID:WQRWSQYc
>>326
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が
2020/08/16(日) 20:01:44.11ID:5GlLVozn
そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ
ペアノ系で 0 = 1 って言ってるようなもんだぞ
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)].
2020/08/16(日) 20:11:24.43ID:WQRWSQYc
>>329
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや
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]の論理値は不定とし、実行時エラーを発生させる。
2020/08/16(日) 20:32:34.77ID:WQRWSQYc
>>331
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ

だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか
2020/08/16(日) 20:34:23.06ID:1lLvvYB6
計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね
2020/08/16(日) 20:50:12.97ID:5EzRC1Sr
>>331
死ねカス
2020/08/16(日) 20:54:18.06ID:GwA/W8AI
>>332

> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど

[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。
2020/08/16(日) 20:57:11.13ID:rY4w2Ca/
まーたスレタイからズレてるよ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ
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

矛盾
死ね
消えろ
2020/08/16(日) 21:16:32.00ID:GwA/W8AI
>>337
0 < a < bのときは、[-a, -b]は定義されない。
2020/08/16(日) 21:29:26.85ID:WQRWSQYc
>>338
順序の定義が矛盾してるんだから[-a, -b]は定義可能であっても良い
本当頭わりいな
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
流石にひどいって
2020/08/16(日) 21:48:28.85ID:GwA/W8AI
加法
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則
2020/08/16(日) 22:04:28.19ID:GwA/W8AI
逆元がないから、減法が壊れてる。
区間に逆元があるように減法を定義することはできない。

すみません、取り下げます。
2020/08/16(日) 22:08:12.76ID:WQRWSQYc
>>342
それ以前の問題だっつーのアホ
任意の数 a, b に対して容易に a = b が成立するクソ
2020/08/16(日) 22:16:18.77ID:UYHP6Cr3
問題を解くスキル<<<<<解ける問題を作るスキル
だったりするかも
345デフォルトの名無しさん
垢版 |
2020/08/16(日) 22:26:48.34ID:Nztll5gc
>>308
Java
https://paiza.io/projects/mS3LllUfo8J5zcCeI_m8qQ
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].
2020/08/16(日) 22:58:27.46ID:bYLilpPQ
つーか
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない

かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが
2020/08/16(日) 23:34:04.85ID:kJzMyvlv
>>308 C
https://ideone.com/wbwxg3
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])
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
2020/08/17(月) 06:10:10.64ID:sRZ0bbBO
>>346
消えろカス
2020/08/17(月) 08:34:59.13ID:4e6PsksO
>>351
お前うざいよ
2020/08/17(月) 09:10:13.06ID:CGaaR/Ic
どうすればいいか?ってのがよくわからない
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のあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる
357デフォルトの名無しさん
垢版 |
2020/08/17(月) 19:37:06.53ID:4e6PsksO
秘密鍵でデコードできなくてもいんでしょ?
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん
2020/08/17(月) 19:45:01.16ID:Nup7rIuH0
基本的にはそれだけのこと
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう
2020/08/17(月) 22:43:06.44ID:sRZ0bbBO
>>352
お前がうぜえよ死ね
360デフォルトの名無しさん
垢版 |
2020/08/17(月) 22:47:24.50ID:4e6PsksO
>>359
お前が死ね
2020/08/17(月) 22:50:53.21ID:3fwftKf8
よし俺がしぬよ
2020/08/17(月) 22:53:16.60ID:UMcd904E
夏だなあ
363デフォルトの名無しさん
垢版 |
2020/08/17(月) 22:56:52.65ID:4e6PsksO
>>361
じゃあ俺が死ぬよ
2020/08/17(月) 22:57:17.04ID:3fwftKf8
お題: 『死』を表現せよ
2020/08/17(月) 22:57:32.35ID:3fwftKf8
>>363
どうぞうどうぞ
2020/08/17(月) 22:58:07.77ID:sRZ0bbBO
>>363
じゃあ死ねよ
367デフォルトの名無しさん
垢版 |
2020/08/17(月) 23:05:20.89ID:4e6PsksO
>>366
全然おもんないやんけ
もう一回チャンスをやろう
368デフォルトの名無しさん
垢版 |
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
笑いから逃げるな
2020/08/18(火) 00:15:03.77ID:/+dAg+CW
お題: 二人の煽り耐性から「死ね」と言い合うプログラム

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

> 0.1 0.8
A「死ね」
B「死ね」
A「死ね」
2020/08/18(火) 01:25:39.14ID:IZwRntbA
if (>>373{A}%3 ==0.1&&0.8<<373{B}) print "オモロー" & "アキラ" *100% ;
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
376デフォルトの名無しさん
垢版 |
2020/08/19(水) 16:18:46.79ID:ltFkDVN7
>>364

#!/bin/sh
rm $0
2020/08/19(水) 18:40:23.70ID:d4bqPFA7
「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。
378デフォルトの名無しさん
垢版 |
2020/08/19(水) 18:45:07.34ID:OrygHj4v
略して示唆トン。
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]
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
381デフォルトの名無しさん
垢版 |
2020/08/24(月) 04:30:51.55ID:qrCNAVcy
>>380 C++
https://ideone.com/Omaaxj
2020/08/24(月) 11:49:18.16ID:2DIU31aQ
>>380 C++
https://wandbox.org/permlink/H36ha1xPEFeE4KXQ
2020/08/29(土) 20:44:46.53ID:GYyhmMZY
お題: ロシアンルーレット。

リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!
384デフォルトの名無しさん
垢版 |
2020/08/29(土) 21:04:26.78ID:KxRf/0sH
>>383
仕様がわからない
2020/08/29(土) 21:07:51.24ID:GYyhmMZY
ロシアンルーレット
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
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回目: バーン!
あなたの負けです。
2020/08/29(土) 22:00:32.12ID:GYyhmMZY
えっ、拳銃見たことないの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況