プログラミングのお題スレ Part18at TECH
プログラミングのお題スレ Part18 - 暇つぶし2ch250:デフォルトの名無しさん
20/08/08 23:32:15 ifN2bgU4.net
>>226
Java
URLリンク(paiza.io)

251:デフォルトの名無しさん
20/08/09 00:15:33.89 cPfQFxYQ8
Ruby上達したら便利そう
理想的なスクリプト言語だな

252:デフォルトの名無しさん
20/08/09 00:17:54.90 /K790vfJ.net
javaでもStream使うと意外と少なくかけるんだな
utilが充実してるな

253:デフォルトの名無しさん
20/08/09 00:24:15.31 cPfQFxYQ8
これとかすげえ
URLリンク(www.youtube.com)

254:デフォルトの名無しさん
20/08/09 00:41:46.15 uywZ9h5A.net
>>185
Python3
URLリンク(ideone.com)

255:デフォルトの名無しさん
20/08/09 02:47:46 Mt0Kh35r.net
>>226
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var input = "D a B c d c C A E c e B b";

foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key))
{
Console.Write("(" + string.Join(" ", itm) + ") ");
}
}
}

256:デフォルトの名無しさん
20/08/09 04:58:28 bQgrv4ZF.net
>>226
Kotlin
URLリンク(paiza.io)

257:デフォルトの名無しさん
20/08/09 16:07:42 HZ7sqguG.net
お題
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる

2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください

入力: abcde deabc
出力: true

入力: abcde cdeba
出力: false

258:デフォルトの名無しさん
20/08/09 16:42:31.20 /K790vfJ.net
>>257 js
const isRotateStr = (a, b) => (a + a).indexOf(b) != -1
console.log(isRotateStr("abcde", "deabc"))
// true
console.log(isRotateStr("abcde", "cdeba"))
// false

259:デフォルトの名無しさん
20/08/09 16:56:20.10 DzMx1xPb.net
問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。

260:デフォルトの名無しさん
20/08/09 16:59:23.64 Uo9rXbdx.net
aaとaaaを比較したらtrueになっちゃうね
文字サイズを最初にチェックすればいいかな?

261:253
20/08/09 19:01:45.47 UiQUiAYf.net
>>226 Perl5
push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;
実行結果
~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)

262:253
20/08/09 19:17:23 A1LNtpwx.net
>>257 Perl5

use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false

263:デフォルトの名無しさん
20/08/09 20:09:27.60 sb6ynJ/q.net
Jニキも披露してくれよ

264:デフォルトの名無しさん
20/08/09 22:00:05.82 BOQzPYI8.net
>>226 octave
URLリンク(ideone.com)
>>257 octave
URLリンク(ideone.com)

265:253
20/08/09 22:27:07 iNMqPGBy.net
>>261 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = "$a$a" =~ /^(.*)($b)(.*)$/;
 say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
入力 aaaaa aaa
出力 false

266:デフォルトの名無しさん
20/08/09 22:40:05 /K790vfJ.net
octave文法好みだけど結構古い言語なんだな

267:253
20/08/09 23:21:31.30 dFp53gtH.net
>>226 Python3
s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  if u in d: d[u] += ' ' + c
  else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))
実行結果
~ $ py 18_221_NCS_sort_grp.py
(a A) (B B b) (c c C c) (D d) (E e)

268:デフォルトの名無しさん
20/08/09 23:56:04.43 DzMx1xPb.net
Perlだとこの程度でも正規表現使わないといかんのか?

269:253
20/08/10 00:02:07 5Aj+dIHX.net
>>267 を少し簡略化

>>226 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  d[u] = d[u]+' '+c if u in d else c
print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))

270:253
20/08/10 00:03:02 5Aj+dIHX.net
>>268
substrとかでも書ける

271:253
20/08/10 01:07:06.98 mTkq56mc.net
>>268
>>265は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので
>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split "$b", "$a$a", 3;
 say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};
…でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>265と一緒なんだよね

272:253
20/08/10 01:18:32.03 mTkq56mc.net
>>271 ゴメン、$a[2]$a[0]はbug、訂正
>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split $b, "$a$a", 3;
 say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

273:253
20/08/10 01:58:56.02 5YDTUTIu.net
>>272 ゴメン
× @a = split $b, "$a$a", 3;
○ @a = split $b, "$a$a", 2;

274:
20/08/10 02:53:12.35 JYoLJZbs.net
>>257 C
スレリンク(tech板:68番)

275:デフォルトの名無しさん
20/08/10 05:44:26 SKFyjjt9.net
お題:
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください

入力: URLリンク(github.com)
出力: "Hello World!"

276:デフォルトの名無しさん
20/08/10 08:49:19.32 SwBLGnEH.net
>>275 Ruby
require 'open-uri'
str = open('URLリンク(raw.githubusercontent.com)').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!

277:デフォルトの名無しさん
20/08/10 08:49:26.47 OSJh6/O/.net
>>275 Ruby
URLリンク(ideone.com)

278:デフォルトの名無しさん
20/08/10 17:10:10.24 Z7zFlWuQ.net
>>257
Kotlin
簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。
URLリンク(paiza.io)

279:デフォルトの名無しさん
20/08/10 17:10:16.38 SKFyjjt9.net
>>275 C++
URLリンク(ideone.com)

280:デフォルトの名無しさん
20/08/10 18:01:14 Z7zFlWuQ.net
>>275
Kotlin

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

URLリンク(paiza.io)

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

$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!

281:デフォルトの名無しさん
20/08/10 18:43:36.36 TsKVv45J.net
>>257
Python3
URLリンク(ideone.com)

282:デフォルトの名無しさん
20/08/10 21:10:04.86 EfqLUS40.net
>>257 Python3
def f(a, b): return len(a) == len(b) and a in b + b

283:デフォルトの名無しさん
20/08/10 22:32:27 tDeKMBiv.net
>>257 c
URLリンク(ideone.com)

284:デフォルトの名無しさん
20/08/10 23:41:40.77 SKFyjjt9.net
>>257 C++
URLリンク(ideone.com)

285:デフォルトの名無しさん
20/08/10 23:46:58.70 lJp+wmfa.net
bfってループの入れ子できたっけ?

286:デフォルトの名無しさん
20/08/10 23:47:11.22 SwBLGnEH.net
>>285
できる

287:272
20/08/11 01:47:49 RwCZynCZ.net
>>275
Kotlin

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

URLリンク(paiza.io)

288:デフォルトの名無しさん
20/08/11 01:50:50.24 RwCZynCZ.net
>>285
知らんけど >>287 は出来るように作った。
>>280 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)

289:デフォルトの名無しさん
20/08/11 07:40:40.35 RSsrE9PW.net
>>257
>>281をリファクタリング
URLリンク(ideone.com)

290:デフォルトの名無しさん
20/08/11 14:40:27.33 psN1NwFJ.net
こんなに暑いと座禅プログラムで涼みたい。

291:デフォルトの名無しさん
20/08/12 10:55:20.81 WiVroiaz.net
警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。

292:デフォルトの名無しさん
20/08/12 11:07:50.98 WiVroiaz.net
既にこんなの作ってる人が居た。
座禅で動いたら棒で叩かれるやつを全自動化する
URLリンク(dailyportalz.jp)

293:デフォルトの名無しさん
20/08/12 16:50:07.72 xjprAYba.net
令和のコペルニクス
URLリンク(youtu.be)

294:デフォルトの名無しさん
20/08/12 19:58:36.03 j5y8ZKQl.net
お題
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。

295:デフォルトの名無しさん
20/08/12 20:07:13.01 kGuev0jH.net
>>294 Ruby
puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''
# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]

296:デフォルトの名無しさん
20/08/12 23:55:21 WiVroiaz.net
差分出すっていうと ADPCM の圧縮を思い出すな。

297:デフォルトの名無しさん
20/08/13 01:08:54.66 TUx4JMNp.net
>>294
Perl5
プログラムの構造は >>295 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は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.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$

298:デフォルトの名無しさん
20/08/13 01:49:54 CZu90IWX.net
>>294 Ruby
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }

299:デフォルトの名無しさん
20/08/13 03:32:09 CZu90IWX.net
>>294 Ruby
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )

300:デフォルトの名無しさん
20/08/13 05:51:07.18 CZu90IWX.net
>>294
>>298,299 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい

301:デフォルトの名無しさん
20/08/13 06:48:39.25 9ZM4Lmsz.net
>>294 Ruby
gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}

302:デフォルトの名無しさん
20/08/13 12:37:03.85 8zEuDtsy.net
なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか

303:デフォルトの名無しさん
20/08/14 01:20:11 CuxcYYZ5.net
お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。

octave
URLリンク(ideone.com)

ada95
URLリンク(ideone.com)

304:デフォルトの名無しさん
20/08/14 03:17:07 cCFmHkiX.net
>>303 Ruby
# 初期化だけ
a = b = c = 2**31 - 1

# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n

305:デフォルトの名無しさん
20/08/14 07:01:38 cCFmHkiX.net
>>303 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

306:デフォルトの名無しさん
20/08/14 08:01:01.07 sgFs/qSh.net
>>303 JavaScript
a=b=c=-1>>>1

307:デフォルトの名無しさん
20/08/14 08:17:19.00 jifd8sPx.net
>>303 C++
int32_t max = 1 << 31;
int32_t min = ~max;

308:デフォルトの名無しさん
20/08/14 08:18:37.41 jifd8sPx.net
あ maxとminが逆だった

309:デフォルトの名無しさん
20/08/14 08:20:39.60 jifd8sPx.net
しかもお題と関係ない スマソ

310:デフォルトの名無しさん
20/08/14 08:21:04.21 hpI++Bi7.net
>>303 Python では整数に制限がないからnumpyで、
import numpy as np
a=b=c=np.iinfo(np.int32).max

311:デフォルトの名無しさん
20/08/14 08:38:19 jifd8sPx.net
>>303 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;
}

312:デフォルトの名無しさん
20/08/14 09:05:58 jifd8sPx.net
const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz

313:デフォルトの名無しさん
20/08/14 14:02:54 9qHjnK+i.net
お題:任意文字列を含むビットコインアドレスを生成するスクリプト

BitCoinDescriptionAddress

1BitCoinDescriptionAddressadTvGDH

314:デフォルトの名無しさん
20/08/15 16:58:24 gFfdk9Ij.net
>>303
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 が代入される。

まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。

315:295
20/08/15 17:28:56 nnj+MvqH.net
>>303 octave
URLリンク(ideone.com)
単に[a, b, c] = deal(intmax)でよかった

316:デフォルトの名無しさん
20/08/15 17:57:15 uqmyrozg.net
お題
長さNの順列を全列挙してください

入力: N
出力: N!行の1からNの整数を用いた順列


入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

317:デフォルトの名無しさん
20/08/15 18:04:12.38 WnA8LB9O.net
>>316 Ruby
[*1..gets.to_i].permutation{|a| puts a*' '}

318:デフォルトの名無しさん
20/08/15 18:07:06.59 nnj+MvqH.net
>>316 octave
URLリンク(ideone.com)
f = @(n) perms(1:n);
f(3)

319:デフォルトの名無しさん
20/08/15 19:24:16.43 4GsEJ4Sf.net
お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。
内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、
Hello World!

320:デフォルトの名無しさん
20/08/15 20:07:59.51 nR02Shr3.net
お題: 整数の0,1を真偽値のfalse,trueに変換しなさい

321:デフォルトの名無しさん
20/08/15 20:22:45.39 BUqVCKAW.net
>>319 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}" URLリンク(127.0.0.1:55080) ) }
srv.start

322:デフォルトの名無しさん
20/08/15 20:34:31.85 BUqVCKAW.net
>>320 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
{} : {}

323:314
20/08/15 20:37:12.09 BUqVCKAW.net
>>322
0 : false
が一行余分に付いてしまった

324:デフォルトの名無しさん
20/08/15 20:49:55 WnA8LB9O.net
>>320 Ruby

n.nonzero?

325:デフォルトの名無しさん
20/08/15 20:59:34.51 nnj+MvqH.net
>>320 ocaml
URLリンク(ideone.com)
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)
>>320 c++
URLリンク(ideone.com)
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}

326:デフォルトの名無しさん
20/08/15 21:22:21.80 v9cGseLQ.net
>>320
0, 1以外の時の挙動が書いてない
単体テストできねーだろ、やり直し!

327:デフォルトの名無しさん
20/08/15 23:19:07 gFfdk9Ij.net
>>320
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 がその他の型だとコンパイルエラー。

328:デフォルトの名無しさん
20/08/16 02:10:15.75 aQEvXwVj.net
>>316 C
URLリンク(ideone.com)

329:デフォルトの名無しさん
20/08/16 10:54:19.77 DGzsHTxH.net
Python
>>320
bool(n)
>>316
from itertools import permutations
N = 3
print([x for x in permutations(range(1, N+1))])

330:デフォルトの名無しさん
20/08/16 11:17:36 x8ZjthFZ.net
>>316 C++
URLリンク(ideone.com)

331:デフォルトの名無しさん
20/08/16 19:28:34.07 Stgr85a5.net
>>316
Kotlin
URLリンク(paiza.io)
なんとなく以前作ったような気もするがまた作った。

332:蟻人間 ◆T6xkBnTXz7B0
20/08/16 19:41:54 GwA/W8AI.net
お題: 浮動小数点数の区間演算の加減乗除(+、-、*、/)を実現しなさい。開区間は丸カッコを、閉区間は角カッコを使う。
区間はカッコで囲まれた数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。

例)
[1, 3) + 2 → [3, 5).
[2, 8] - [1, 2] → [0, 7].
(-3, 2] * (1, [2, 3)) → (-9, 6).

333:デフォルトの名無しさん
20/08/16 19:47:13.56 WQRWSQYc.net
>>332
ほんとクソだなお前
なんで数と区間が何の説明もなく比較可能な状態になってんだよ
教養レベルの位相と集合の知識身に付けてから出直せハゲ

334:蟻人間
20/08/16 19:54:55.84 GwA/W8AI.net
>>333
入力の計算式において単一の数は同等の閉区間と見なすことにする。
2 → [2, 2].

335:デフォルトの名無しさん
20/08/16 19:59:26.75 WQRWSQYc.net
>>334
任意の区間に対してどのように順序を定義して全順序集合を構成するのか考えてから言えよクソ雑魚が

336:デフォルトの名無しさん
20/08/16 20:01:44.11 5GlLVozn.net
そもそも 2 と [2, 2] が同じだと思ってる時点でやばいよ
ペアノ系で 0 = 1 って言ってるようなもんだぞ

337:蟻人間 ◆T6xkBnTXz7B0
20/08/16 20:08:52 GwA/W8AI.net
>>335
任意の[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)].

338:デフォルトの名無しさん
20/08/16 20:11:24.43 WQRWSQYc.net
>>337
順序の定義しろっつってんだろクソが
「(1, [2, 3))」かつ「対の最初の要素は対の最後の要素以下とする」って言ってるってことは
[1, 1] <= [2, 3) なんだろ?
任意の区間の間で矛盾なく順序を定義しろや

339:蟻人間
20/08/16 20:24:24.91 GwA/W8AI.net
>>338
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は偽。
それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。

340:デフォルトの名無しさん
20/08/16 20:32:34 WQRWSQYc.net
>>339
完全律すら成り立たない順序ってなんだよ
「カッコの入れ子はややこしい」とかそういうレベルじゃねえんだよ

だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
お前群論なめてんのか

341:デフォルトの名無しさん
20/08/16 20:34:23 1lLvvYB6.net
計算の順番を変えたりするだけで簡単に全部エラーにできるから流石にお粗末だね

342:デフォルトの名無しさん
20/08/16 20:50:12.97 5EzRC1Sr.net
>>339
死ねカス

343:蟻人間
20/08/16 20:54:18.06 GwA/W8AI.net
>>340
> だいたい [a, b] - [a, b] = [a - b, b - a] != 0 ってクッソきもいんですけど
[a - b, b - a] はゼロを中心とした区間の誤差範囲を表してるから間違いではない。計算機の内部には群論が成り立たない汚い演算もある。

344:デフォルトの名無しさん
20/08/16 20:57:11.13 rY4w2Ca/.net
まーたスレタイからズレてるよ
問題に不備があったなら取り下げて勉強し直してこい
群論を教えるスレじゃない
何があえて考えてみるだ

345:デフォルトの名無しさん
20/08/16 21:13:43.55 WQRWSQYc.net
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
矛盾
死ね
消えろ

346:蟻人間
20/08/16 21:16:32.00 GwA/W8AI.net
>>345
0 < a < bのときは、[-a, -b]は定義されない。

347:デフォルトの名無しさん
20/08/16 21:29:26.85 WQRWSQYc.net
>>346
順序の定義が矛盾してるんだから[-a, -b]は定義可能であっても良い
本当頭わりいな

348:デフォルトの名無しさん
20/08/16 21:34:29.96 1lLvvYB6.net
[0, 1]*[0, 1] = [0, 1]
<=> [0, 1]*([0, 1] - 1) = 0
<=> [0, 1]*[-1, 0] = 0
<=> [-1, 0] = 0
流石にひどいって

349:蟻人間
20/08/16 21:48:28.85 GwA/W8AI.net
加法
(1) 交換法則
(2) 結合法則
(3) 単位元の存在
(4) 逆元の存在
乗法
(5) 交換法則
(6) 結合法則
(7) 分配法則

350:蟻人間
20/08/16 22:04:28.19 GwA/W8AI.net
逆元がないから、減法が壊れてる。
区間に逆元があるように減法を定義することはできない。
すみません、取り下げます。

351:デフォルトの名無しさん
20/08/16 22:08:12.76 WQRWSQYc.net
>>350
それ以前の問題だっつーのアホ
任意の数 a, b に対して容易に a = b が成立するクソ

352:デフォルトの名無しさん
20/08/16 22:16:18.77 UYHP6Cr3.net
問題を解くスキル<<<<<解ける問題を作るスキル
だったりするかも

353:デフォルトの名無しさん
20/08/16 22:26:48.34 Nztll5gc.net
>>316
Java
URLリンク(paiza.io)

354:蟻人間 ◆T6xkBnTXz7B0
20/08/16 22:46:06 GwA/W8AI.net
やり直し。

お題: 区間と演算子によって構成される計算式が入力として与えられる。下記に従って浮動小数点数の区間に対する二項演算(+、-、*、/)を実現し、計算後の区間を出力しなさい。入力される区間は閉区間のみとする。

閉区間は角カッコで囲まれた浮動小数点数の対で表すものとする。ここで対の最初の要素は対の最後の要素以下とする。すなわち[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].

355:デフォルトの名無しさん
20/08/16 22:58:27.46 bYLilpPQ.net
つーか
boost::numeric::interval
とかいう実装があってな
あながちおかしな話ではない
かと言って
そんな車輪の再生産みたいなお題を受けたい気はしないのだが

356:
20/08/16 23:34:04.85 kJzMyvlv.net
>>316 C
URLリンク(ideone.com)

357:253
20/08/16 23:50:47.82 G5r8RAij.net
>>316 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])

358:デフォルトの名無しさん
20/08/17 01:49:55.07 Nup7rIuH.net
前の書き方だとやる気が出ないみたいなので再掲
お題 任意文字列を含む有効なビットコインアドレスを生成するにはどうすればいいか
ビットコインアドレスの形式は
[プレフィックス 1バイト] [本体データ 160ビット] [チェックサム 4バイト]
をbase58(58進数)で表現したもの
プレフィックスは0x00とする
チェックサムはプレフィックス+本体データをsha256に二回かけた後の先頭4バイト
詳細
URLリンク(www.tottemoyasashiibitcoin.net)
例:
1BitCoinDescriptionAddressadTvGDH
1MayukoMuraokaXXXXXXXXXXXXXXX5f8QC
これはどっちも有効なビットコインアドレスになってる
URLリンク(chainflyer.bitflyer.com)
URLリンク(chainflyer.bitflyer.jp)

359:デフォルトの名無しさん
20/08/17 06:10:10.64 sRZ0bbBO.net
>>354
消えろカス

360:デフォルトの名無しさん
20/08/17 08:34:59.13 4e6PsksO.net
>>359
お前うざいよ

361:デフォルトの名無しさん
20/08/17 09:10:13 CGaaR/Ic.net
どうすればいいか?ってのがよくわからない

362:デフォルトの名無しさん
20/08/17 09:11:51.56 CGaaR/Ic.net
入力と出力をはっきりさせてほしい
それとも取引所の仕様を理解しろって話なの?

363:デフォルトの名無しさん
20/08/17 11:17:26.81 2KNIyB/f.net
ブルートフォースアタックしか思い浮かばない。

364:デフォルトの名無しさん
20/08/17 18:12:59.56 Nup7rIuH.net
入力が任意文字列で出力がそれを含む有効なビットコインアドレス
例にあるやつだとMayukoMuraokaが任意文字列の部分
XXX…っていうのはただの本体データ160bitのあまりスペースを埋めてるだけだからなんでもいい
それに対応して最後のチェックサムも任意性がある
直感だとブルートフォースが必要そうだけど実際は単純なやり方でできる

365:デフォルトの名無しさん
20/08/17 19:37:06.53 4e6PsksO.net
秘密鍵でデコードできなくてもいんでしょ?
じゃあbase58で表されたバイト値と文字列を変換するだけじゃん

366:デフォルトの名無しさん
20/08/17 19:45:01.16 Nup7rIuH0.net
基本的にはそれだけのこと
実際の手順を考えるとちょっとややこしいことがあるくらい
ということで実装してみよう

367:デフォルトの名無しさん
20/08/17 22:43:06.44 sRZ0bbBO.net
>>360
お前がうぜえよ死ね

368:デフォルトの名無しさん
20/08/17 22:47:24.50 4e6PsksO.net
>>367
お前が死ね

369:デフォルトの名無しさん
20/08/17 22:50:53.21 3fwftKf8.net
よし俺がしぬよ

370:デフォルトの名無しさん
20/08/17 22:53:16.60 UMcd904E.net
夏だなあ

371:デフォルトの名無しさん
20/08/17 22:56:52 4e6PsksO.net
>>369
じゃあ俺が死ぬよ

372:デフォルトの名無しさん
20/08/17 22:57:17 3fwftKf8.net
お題: 『死』を表現せよ

373:デフォルトの名無しさん
20/08/17 22:57:32 3fwftKf8.net
>>371
どうぞうどうぞ

374:デフォルトの名無しさん
20/08/17 22:58:07 sRZ0bbBO.net
>>371
じゃあ死ねよ

375:デフォルトの名無しさん
20/08/17 23:05:20 4e6PsksO.net
>>374
全然おもんないやんけ
もう一回チャンスをやろう

376:デフォルトの名無しさん
20/08/17 23:05:35 4e6PsksO.net
じゃあ俺が死ぬよ

377:デフォルトの名無しさん
20/08/17 23:05:59 4e6PsksO.net
くるよくるよ

378:デフォルトの名無しさん
20/08/17 23:06:13 4e6PsksO.net
ドキドキ

379:デフォルトの名無しさん
20/08/17 23:39:35 4e6PsksO.net
逃げたか

380:デフォルトの名無しさん
20/08/17 23:39:58 4e6PsksO.net
笑いから逃げるな

381:デフォルトの名無しさん
20/08/18 00:15:03.77 /+dAg+CW.net
お題: 二人の煽り耐性から「死ね」と言い合うプログラム
煽り耐性 0.1~1
死ねと言い返す確率 (1-煽り耐性) * 100%
最初に死ねと言うのはA
入力 {Aの煽り耐性} {Bの煽り耐性}

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

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

383:デフォルトの名無しさん
20/08/18 01:35:33.42 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"
URLリンク(chainflyer.bitflyer.jp)
BASE58とSHA256のライブラリ
URLリンク(cdn.jsdelivr.net)
URLリンク(cdn.jsdelivr.net)

384:デフォルトの名無しさん
20/08/19 16:18:46 ltFkDVN7.net
>>372

#!/bin/sh
rm $0

385:デフォルトの名無しさん
20/08/19 18:40:23.70 d4bqPFA7.net
「生」の読みはたくさんあるのに、
「死」の読みはひとつだけ。
示唆に富んでいる。

386:デフォルトの名無しさん
20/08/19 18:45:07.34 OrygHj4v.net
略して示唆トン。

387:デフォルトの名無しさん
20/08/20 11:35:09.25 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]

388:デフォルトの名無しさん
20/08/23 18:52:15.52 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

389:デフォルトの名無しさん
20/08/24 04:30:51.55 qrCNAVcy.net
>>388 C++
URLリンク(ideone.com)

390:デフォルトの名無しさん
20/08/24 11:49:18.16 2DIU31aQ.net
>>388 C++
URLリンク(wandbox.org)

391:蟻人間
20/08/29 20:44:46.53 GYyhmMZY.net
お題: ロシアンルーレット。
リボルバーを回しますか? (Y/n) Y
1回目: 不発
リボルバーを回しますか? (Y/n) Y
2回目: 不発
リボルバーを回しますか? (Y/n) n
3回目: バーン!

392:デフォルトの名無しさん
20/08/29 21:04:26.78 KxRf/0sH.net
>>391
仕様がわからない

393:蟻人間 ◆T6xkBnTXz7B0
20/08/29 21:07:51 GYyhmMZY.net
ロシアンルーレット
URLリンク(ja.m.wikipedia.org)

回転式拳銃(リボルバー)
URLリンク(ja.m.wikipedia.org)

394:蟻人間
20/08/29 21:24:48.99 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回目: バーン!
あなたの負けです。

395:蟻人間 ◆T6xkBnTXz7B0
20/08/29 22:00:32 GYyhmMZY.net
えっ、拳銃見たことないの?

396:デフォルトの名無しさん
20/08/29 22:14:20.91 bYj4gZFd.net
銃の弾数と空砲/実包の割合とか
オートマとリボルバーどっちかとか特定してからにしてくれ

397:デフォルトの名無しさん
20/08/29 22:51:06 yG/yQHuO.net
jsインタラクティブ入力に弱い

398:デフォルトの名無しさん
20/08/29 23:12:55 yG/yQHuO.net
>>391

URLリンク(repl.it)

// 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
}

399:デフォルトの名無しさん
20/08/29 23:34:19.24 2f/XylsB.net
VSCode の拡張機能、Quokka.js を使えば?
変数を書くだけで、内容が表示される
var a = 1
a // 1 と表示される

400:デフォルトの名無しさん
20/08/29 23:41:03.13 yG/yQHuO.net
swift playgroundとかjestのinlineSnapshotみたいな感じか
使うときがあるか微妙

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

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

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

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

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

404:デフォルトの名無しさん
20/08/30 08:02:58.80 Ui9A3dkW.net
>>401 J
f =: #~ @: >: @ i.

405:デフォルトの名無しさん
20/08/30 09:40:37.84 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"]

406:デフォルトの名無しさん
20/08/30 09:41:22.98 ka/TVb/i.net
>>401 octave
URLリンク(ideone.com)
f = @(n) repelem(1:n, 1:n);
f(3)

407:デフォルトの名無しさん
20/08/30 09:43:25.32 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))
}

408:デフォルトの名無しさん
20/08/30 17:51:57.01 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', ':')

409:400
20/08/30 18:29:58 9TpSDH8X.net
一応url
URLリンク(ideone.com)

410:デフォルトの名無しさん
20/08/30 18:55:27.84 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' ]
ずるいしダブルクォート対応できてないけど思いつき

411:デフォルトの名無しさん
20/08/30 19:52:13.41 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"]

412:デフォルトの名無しさん
20/08/30 19:55:11.73 OKCM85cL.net
>> 393 C++
URLリンク(ideone.com)
>> 394 C++
URLリンク(ideone.com)
合ってるか分からない
(とりあえずバブルソートが安定だからそれと比較した)
>> 395 C++
URLリンク(ideone.com)

413:デフォルトの名無しさん
20/08/30 23:05:46 HaB2mhSL.net
>>401 C++
URLリンク(wandbox.org)

コンパイル時にできる

414:デフォルトの名無しさん
20/08/30 23:23:11.11 OKCM85cL.net
operator[]がconstexprなのはC++17以降らしいね

415:デフォルトの名無しさん
20/08/31 00:36:58 Sr2UUXBk.net
宇宙創生から現在まで【宇宙の歴史?(過去編)】
URLリンク(www.youtube.com)
期待値が無限大な賭け(サンクトペテルブルクのパラドックス)
URLリンク(www.youtube.com)
もしも生徒が全員予備校講師だったら
URLリンク(www.youtube.com)
eが超越数であることの証明
URLリンク(www.youtube.com)
【受験生へ】勉強のモチベーションをあげる3つの方法
URLリンク(www.youtube.com)
線を描くだけ!万能視覚的かけ算【インド式計算】
URLリンク(www.youtube.com)
全受験生が理解するべき!偏差値とは何か
URLリンク(www.youtube.com)
楽しいことを増やそう!科学の眼鏡をかけた1日とは【ヨビノリたくみ特別公演】
URLリンク(www.youtube.com)
数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ
URLリンク(www.youtube.com)

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

417:デフォルトの名無しさん
20/08/31 09:50:22 3l02ZOhc.net
>>404
何やってんのか分かんねぇ…

418:デフォルトの名無しさん
20/08/31 12:53:04.32 DeTlQxvW.net
f#(@:m:@ )顔文字にしか見えん

419:デフォルトの名無しさん
20/08/31 13:15:43 0jcGZySh.net
\(._. \)

420:蟻人間 ◆T6xkBnTXz7B0
20/08/31 13:37:09 tSOV4fJk.net
お題: 覆面算パズルをランダムに自動生成せよ。

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

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

単語リスト:URLリンク(gist.github.com)

421:蟻人間 ◆T6xkBnTXz7B0
20/08/31 13:41:36 tSOV4fJk.net
お題:覆面算パズルを解くプログラム。

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

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

422:デフォルトの名無しさん
20/08/31 14:49:18.65 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]

423:蟻人間
20/08/31 16:10:16.99 lWn/zYPT.net
>>421, >>420の順に解いてね。
ヒント要る?

424:蟻人間
20/08/31 16:12:08.02 lWn/zYPT.net
ヒント: 各文字を変数とした連立方程式。

425:蟻人間
20/08/31 16:24:48.19 lWn/zYPT.net
文字の数が少ないんだから、ブルートフォースでも解けるか。。。

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

427:デフォルトの名無しさん
20/08/31 18:26:56.47 qQr3mFGF.net
ごめん10!はめちゃくちゃ小さかった

428:デフォルトの名無しさん
20/08/31 18:43:24.02 hr5jjNmH.net
この手の問題は総当りしたほうが速いことすらある

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

430:デフォルトの名無しさん
20/08/31 19:23:55 fdwPQ6pV.net
覆面算を制約論理プログラム iZ-Cを使って解きます。の記事があります。
URLリンク(sunasunax.hatenablog.com)

431:デフォルトの名無しさん
20/08/31 21:02:28 Sr2UUXBk.net
デキる人ほどフリーランス化する?★働き方改革
URLリンク(www.youtube.com)
年収890万円以下は社会のお荷物★騙される労働者
URLリンク(www.youtube.com)
騙されたくなかったら勉強しろ★他人のルールは損をする
URLリンク(www.youtube.com)
底辺の99%は一生底辺★10年後が見えない同僚たち
URLリンク(www.youtube.com)
稼ぎたければ働くな★4千万円ぽっちも稼げないのはなぜ?
URLリンク(www.youtube.com)
サラリーマン思考では儲からない理由
URLリンク(www.youtube.com)
で、無職は稼いでるの?★YouTube収益はアホにも分かりやすい
URLリンク(www.youtube.com)
「で、年収は?」と聞くバカとは合わない社長業
URLリンク(www.youtube.com)

432:253
20/08/31 21:47:00.41 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

433:253
20/08/31 21:54:06.64 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

434:デフォルトの名無しさん
20/08/31 23:33:38 0jcGZySh.net
>>401
Kotlin
URLリンク(paiza.io)

435:デフォルトの名無しさん
20/09/01 00:01:02 1mY8ta+4.net
>>401
C
URLリンク(paiza.io)

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch