プログラミングのお題スレ 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/10(月) 02:53:12.35ID:JYoLJZbs
>>249 C
https://mevius.5ch.net/test/read.cgi/tech/1434079972/68
267デフォルトの名無しさん
垢版 |
2020/08/10(月) 05:44:26.44ID:SKFyjjt9
お題:
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください

入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"
2020/08/10(月) 08:49:19.32ID:SwBLGnEH
>>267 Ruby

require 'open-uri'
str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read

M = 256
i = p = s = 0
h = Hash.new(0)
m = [0] * M
while i < str.length
  case str[i]
  when ?+ then m[p] += 1
  when ?- then m[p] -= 1
  when ?[ then h[s += 1] = i
  when ?] then m[p].zero? ? s -= 1 : i = h[s]
  when ?> then p += 1
  when ?< then p -= 1
  when ?. then $><<m[p].chr
  when ?, then m[p] += $<.getc.ord
  end
  i += 1
end

# => Hello World!
2020/08/10(月) 08:49:26.47ID:OSJh6/O/
>>267 Ruby
https://ideone.com/A0JIsc
270デフォルトの名無しさん
垢版 |
2020/08/10(月) 17:10:10.24ID:Z7zFlWuQ
>>249
Kotlin

簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。

https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
271デフォルトの名無しさん
垢版 |
2020/08/10(月) 17:10:16.38ID:SKFyjjt9
>>267 C++
https://ideone.com/Lpmngq
2020/08/10(月) 18:01:14.12ID:Z7zFlWuQ
>>267
Kotlin

とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。
実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。

https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q

こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム)

$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!
2020/08/10(月) 18:43:36.36ID:TsKVv45J
>>249
Python3
https://ideone.com/DvaLMh
274デフォルトの名無しさん
垢版 |
2020/08/10(月) 21:10:04.86ID:EfqLUS40
>>249 Python3
def f(a, b): return len(a) == len(b) and a in b + b
2020/08/10(月) 22:32:27.25ID:tDeKMBiv
>>249 c
https://ideone.com/BcT5su
276デフォルトの名無しさん
垢版 |
2020/08/10(月) 23:41:40.77ID:SKFyjjt9
>>249 C++
https://ideone.com/p6Y7W4
2020/08/10(月) 23:46:58.70ID:lJp+wmfa
bfってループの入れ子できたっけ?
2020/08/10(月) 23:47:11.22ID:SwBLGnEH
>>277
できる
279272
垢版 |
2020/08/11(火) 01:47:49.41ID:RwCZynCZ
>>267
Kotlin

これはインタープリタ版。

https://paiza.io/projects/J-pCgNSAEcATixwsNPmyGQ
2020/08/11(火) 01:50:50.24ID:RwCZynCZ
>>277
知らんけど >>279 は出来るように作った。
>>272 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)
2020/08/11(火) 07:40:40.35ID:RSsrE9PW
>>249
>>273をリファクタリング
https://ideone.com/gR6WqL
282デフォルトの名無しさん
垢版 |
2020/08/11(火) 14:40:27.33ID:psN1NwFJ
こんなに暑いと座禅プログラムで涼みたい。
283デフォルトの名無しさん
垢版 |
2020/08/12(水) 10:55:20.81ID:WiVroiaz
警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。
284デフォルトの名無しさん
垢版 |
2020/08/12(水) 11:07:50.98ID:WiVroiaz
既にこんなの作ってる人が居た。

座禅で動いたら棒で叩かれるやつを全自動化する
https://dailyportalz.jp/kiji/zazen-bou-automation
285デフォルトの名無しさん
垢版 |
2020/08/12(水) 16:50:07.72ID:xjprAYba
令和のコペルニクス
https://youtu.be/7DbdPKWhrpY
286デフォルトの名無しさん
垢版 |
2020/08/12(水) 19:58:36.03ID:j5y8ZKQl
お題
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。
2020/08/12(水) 20:07:13.01ID:kGuev0jH
>>286 Ruby

puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''

# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]
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
どうぞうどうぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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