プログラミングのお題スレ Part18at TECH
プログラミングのお題スレ Part18 - 暇つぶし2ch275:253
20/08/10 00:03:02 5Aj+dIHX.net
>>268
substrとかでも書ける

276: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と一緒なんだよね

277: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};

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

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

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

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

281:デフォルトの名無しさん
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!

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

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

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

285:デフォルトの名無しさん
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!

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

287:デフォルトの名無しさん
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

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

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

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

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

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

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

URLリンク(paiza.io)

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

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

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

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

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

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

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

300:デフォルトの名無しさん
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)}*''
# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]

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

302:デフォルトの名無しさん
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.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$

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

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

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

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

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

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

octave
URLリンク(ideone.com)

ada95
URLリンク(ideone.com)

309:デフォルトの名無しさん
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

310:デフォルトの名無しさん
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

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

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

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

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

315:デフォルトの名無しさん
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

316:デフォルトの名無しさん
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;
}

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

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

BitCoinDescriptionAddress

1BitCoinDescriptionAddressadTvGDH

319:デフォルトの名無しさん
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 が代入される。

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

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

321:デフォルトの名無しさん
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

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

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

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

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

326:デフォルトの名無しさん
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

327:デフォルトの名無しさん
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
{} : {}

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

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

n.nonzero?

330:デフォルトの名無しさん
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() {



331:std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl; return 0; }



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

333:デフォルトの名無しさん
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 がその他の型だとコンパイルエラー。

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

335:デフォルトの名無しさん
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))])

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

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

338:蟻人間 ◆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).

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

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

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

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

343:蟻人間 ◆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)].

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

345:蟻人間
20/08/16 20:24:24.91 GwA/W8AI.net
>>338
すみません。カッコの入れ子はややこしいので止めます、、、
というのは簡単だが、あえて考える。
b<=cならば、間違いなく[a, b] <= [c, d]は真。
d<aならば、[a, b] <= [c, d]は�


346:U。 それ以外は[a, b] <= [c, d]の論理値は不定とし、実行時エラーを発生させる。



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

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

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

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

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

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

352:デフォルトの名無しさん
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
矛盾
死ね
消えろ

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

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

355:デフォルトの名無しさん
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
流石にひどいって

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

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

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

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

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

361:蟻人間 ◆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].

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

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

364: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])

365:デフォルトの名無しさん
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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

388:デフォルトの名無しさん
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「死ね」

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

390:デフォルトの名無しさん
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)

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

#!/bin/sh
rm $0

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

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

394:デフォルトの名無しさん
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]

395:デフォルトの名無しさん
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

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

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

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

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

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

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

401:蟻人間
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回目: バーン!
あなたの負けです。

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

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

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

405:デフォルトの名無しさん
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
}

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

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

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

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

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

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

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

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

412:デフォルトの名無しさん
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"]

413:デフォルトの名無しさん
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)

414:デフォルトの名無しさん
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))
}

415:デフォルトの名無しさん
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', ':')

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

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

418:デフォルトの名無しさん
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"]

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

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

コンパイル時にできる

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

422:デフォルトの名無しさん
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)
楽しいことを増やそう!科学の眼鏡を�


423:ゥけた1日とは【ヨビノリたくみ特別公演】 https://www.youtube.com/watch?v=u5al7kwy64k 数学の魅力とは?中田敦彦と人気教育系YouTuberヨビノリたくみ先生が初コラボ https://www.youtube.com/watch?v=qxiAyyotAM0



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

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

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

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

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

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

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

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

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

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

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

430:デフォルトの名無しさん
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]

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

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

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

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

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

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

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

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

439:デフォルトの名無しさん
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)

440: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

441: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

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

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

444:デフォルトの名無しさん
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))]

445:デフォルトの名無しさん
20/09/01 14:16:37.60 3qKfeSqF.net
全く知らない構文の言語でカンでいじっても構文エラーも止められずに
動かない機械ガチャガチャしてるだけ感すごいよな

446:蟻人間
20/09/01 18:47:08.83 4meeAMMW.net
お題: テキストファイル「input.txt」の中の" dot "を"."に置換し、さらに" at "を"@"に置換したときに、RFCに従ったメールアドレスになる部分文字列を抽出し、そのメールアドレスのリストを改行区切りで出力せよ。

447:デフォルトの名無しさん
20/09/01 18:47:54.44 Y09tsFBY.net
>>401 Ruby
def f(n)
(1..n*(n+1)/2).map{|x| ((x*2)**0.5+0.5).to_i}
end

448:デフォルトの名無しさん
20/09/01 18:48:39.88 PZXbhIm5.net
>>438
テスト用のinput.txtちょーだい!

449:蟻人間
20/09/01 18:54:57.84 4meeAMMW.net
>>440
「これはテキトーなテキストデータである。
例えば
user at example dot com
とか
user at example dot co dot jp
とか
katayama dot hirofumi dot mz at example dot net
とかあるでしょ。
詐欺メールに引っ掛からないためには、URLのドメインを確認することが一番。
google.com
google.co.jp
まあ、いろいろあるっしょ。」

450:デフォルトの名無しさん
20/09/01 18:57:45.00 PZXbhIm5.net
>>441
あざーす!

451:デフォルトの名無しさん
20/09/01 19:10:04.73 y/wdSyKD.net
>>438
Mail::RFC822::Address: regexp-based address validatio
URLリンク(www.ex-parrot.com)

452:蟻人間
20/09/01 20:18:24.49 4meeAMMW.net
ヒント: 文字列置換と正規表現

453:デフォルトの名無しさん
20/09/01 22:43:25 PZXbhIm5.net
>>438
Java
URLリンク(paiza.io)

454:デフォルトの名無しさん
20/09/01 22:55:31.34 PZXbhIm5.net
>>401
Java
URLリンク(paiza.io)

455:253
20/09/02 00:54:35.54 GpxOT2yi.net
>>401 Python3
(n, a) = (3, [])
for i in range(1, n+1):
  a.extend([i] * i)
print(a)

実行結果
~ $ python 18_393_incary.py
[1, 2, 2, 3, 3, 3]

456:デフォルトの名無しさん
20/09/02 23:08:34.85 KTyhBksd.net
>>402
Java
URLリンク(paiza.io)

457:デフォルトの名無しさん
20/09/02 23:31:10.43 KTyhBksd.net
>>403
Java
URLリンク(paiza.io)

458:デフォルトの名無しさん
20/09/03 16:10:13.26 dE9fk8zR.net
>>403 Ruby
def f(s,d)
eval("['"+s.gsub(d,"','")+"']")
end
p f("1 2 3 4"," ")
実行結果
["1", "2", "3", "4"]

459:蟻人間
20/09/03 19:41:51.27 0EoV326K.net
お題: バイナリファイルを読み込んで各バイトの各ビットについて、上位ビットから順に、ゼロをシフトJISの半角カナの「タ」に、いち(1)を同じくの「ヒ」に変換する変換器。

460:蟻人間 ◆T6xkBnTXz7B0
20/09/03 19:46:20 0EoV326K.net
>>451
追記。逆変換器も作って動作することを確認せよ。

461:デフォルトの名無しさん
20/09/03 21:11:58.06 97aiR77+.net
>>451 Ruby
Fpath = 'test.bin'
File.open( Fpath, 'wb' ){|fh| fh.write "Hello word\n" }
Tbl10 = "\xC0\xCB".force_encoding(Encoding::BINARY)
tb = (0..255).to_a.map{|x| ('%08b' % x).tr( '10', Tbl10 ) }
buff = File.open( Fpath, 'rb' ).each_byte.map{|x| tb[x] }
puts buff.join().encode( Encoding::UTF_8, Encoding::CP932 )
print buff.map{|x| x.tr( Tbl10, '10' ).to_i(2).chr }.join
#=> ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
#=> Hello word

462:デフォルトの名無しさん
20/09/03 23:01:51.02 ZdR77D/Z.net
>>450
f("'", ?,)
# =>SyntaxError: (eval):1: unterminated string meets end of file
[''']
   ^
(eval):1: syntax error, unexpected end-of-input, expecting ']'

463:253
20/09/04 00:01:38 7q8p4uRD.net
>>451 Perl5

print map{qw(ヒ タ)[$_]} map{split '', sprintf '%08b', ord} split'','Hello word';

実行結果
~ $ perl 18_443_タヒ.pl
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒヒタヒヒ

464:デフォルトの名無しさん
20/09/04 00:03:39 0wfgbo8M.net
>>452
Java
URLリンク(paiza.io)

465:253
20/09/04 00:04:27 gbrpP/bR.net
>>455
>>452 逆変換機もか…忘れてた
まいいや

466:デフォルトの名無しさん
20/09/04 14:52:11.79 Wl7qFIBb.net
>>451
Elixir。CP932 が無いので、途中までしか出来ません!
# 8桁・2進数・0埋め
_ = 'abc'
|> Enum.map( fn char -> :io.format( "~8.2.0B", [ char ] ) end )
# 01100001_01100010_01100011

467:デフォルトの名無しさん
20/09/04 23:27:10.30 1jfeDIRi.net
>>451
POSIX sh
変換 (URLリンク(paiza.io))
for _b in $(od -v -A n -t d1); do
printf '%b' \
"\\$(( $_b & 128 ? 300 : 313 ))" \
"\\$(( $_b & 64 ? 300 : 313 ))" \
"\\$(( $_b & 32 ? 300 : 313 ))" \
"\\$(( $_b & 16 ? 300 : 313 ))" \
"\\$(( $_b & 8 ? 300 : 313 ))" \
"\\$(( $_b & 4 ? 300 : 313 ))" \
"\\$(( $_b & 2 ? 300 : 313 ))" \
"\\$(( $_b & 1 ? 300 : 313 ))"
done
逆変換 (URLリンク(paiza.io))
od -v -A n -t o1 |
fold -b -w 32 |
while read _b8 _b7 _b6 _b5 _b4 _b3 _b2 _b1; do
printf '%b' "\\$((
($_b8 == 300 ? 200 : 0) +
($_b7 == 300 ? 100 : 0) +
($_b6 == 300 ? 40 : 0) +
($_b5 == 300 ? 20 : 0) +
($_b4 == 300 ? 10 : 0) +
($_b3 == 300 ? 4 : 0) +
($_b2 == 300 ? 2 : 0) +
($_b1 == 300 ? 1 : 0) ))"
done

468:253
20/09/04 23:39:14.02 tinAGSqp.net
>>452 Perl5、バイナリコード(ln)を含むデータをファイルから読み込み、変換》逆変換
undef $/; # slurp
$s = <>;
@b = map{qw(ヒ タ)[$_]} split'', unpack 'B*', $s;
print @b, "\n";
%h = qw(ヒ 0 タ 1);
$t = pack 'B*', join '', map{$h{$_}} @b;
print $t;

実行結果
$ od -xc Hello_world_ln.txt
0000000 6548 6c6c 206f 6f77 6c72 0a64
H e l l o w o r l d \n
$ cat Hello_world_ln.txt
Hello world
$ perl 18_443_444_ヒタ.pl < Hello_world_ln.txt
ヒタヒヒタヒヒヒヒタタヒヒタヒタヒタタヒタタヒヒヒタタヒタタヒヒヒタタヒタタタタヒヒタヒヒヒヒヒヒタタタヒタタタヒタタヒタタタタヒタタタヒヒタヒヒタタヒタタヒヒヒタタヒヒタヒヒヒヒヒヒタヒタヒ
Hello world

469:デフォルトの名無しさん
20/09/05 15:41:23.97 dAk5cbFF.net
お題
UTF-8 は以下のように、先頭ニブル・4ビットで、1~4バイト文字を判別しています。
この法則を使って、この文字列のバイト数を求めよ
あaθ💀xΩ死🄫
1バイト文字: 0000~0111: 0~7
多バイト文字の2バイト目以降
1000~1011: 8~11(8~B)
2バイト文字: 1100~1101: 12~13(C~D)
3バイト文字: 1110: 14(E)
4バイト文字: 1111: 15(F)
Unicode
URLリンク(seiai.ed.jp)

470:デフォルトの名無しさん
20/09/05 15:42:06.74 gCThzAly.net
お題:
左から右へ、1から10までの番号が付いたマスが順番に隙間なく並んでいます。
今日、訪問者N人があなたに会いにやってきます。各訪問者i(1≦i≦N)は時刻TiにマスPiを訪れます。
ここで、あなたが時刻TiにマスPiに居たのならば「訪問者iは満足した」とします。
最大で何人の訪問者を満足させられるか求めてください。
制約:
最初、時刻は0とする。
あなたは最初、マス1にいる。
あなたは隣り合うマスへの移動手段しか持たない。
1マス移動した場合にも、移動せずに現在マスに留まった場合にも時間1を消費する。
Ti == Tj で Pi == Pj ならば i == j
1≦N ≦10^5
1≦Ti≦10^5
1≦Pi≦10
入力:
N
T1 P1
T2 P2
...
TN PN
出力:
(最大で何人を満足させられるか)
例1:
入力:
5
5 4
2 3
3 2
3 4
4 4
出力:
4

471:デフォルトの名無しさん
20/09/05 15:55:10.03 gCThzAly.net
前回のお題はC++の方からしか回答を頂けなかったので、他の言語の方も考えていただけると嬉しいです

472:デフォルトの名無しさん
20/09/05 17:01:13.99 4vfoT7Xn.net
Tが10^5のそれぞれのマスにいたときの点数を求める(客がいた場合1、いなかったら0)
Tが10^5-1のときのマスの点数を求める(そこに客がいたなら1、いなかったら0
更にそこから次の時間に移動可能なマスの最大の点数のものを加える)
Tが1までくり返す
これで良さそうな気がするけど書くのがめんどくさい

473:デフォルトの名無しさん
20/09/05 17:35:24.39 s0GYNWbk.net
>>461
「この文字列の文字数を求める」んじゃないの?
バイト数だったらUTF-8だろうがSJISだろうが関係なく,
バイトの個数を数えればいいだけになってしまうが……。

474:デフォルトの名無しさん
20/09/05 18:43:21.60 EHHCviTW.net
文字コードまわりの難しさにぶつかったことないから何が何やら


475:



476:デフォルトの名無しさん
20/09/05 19:37:20.09 PsWvtVS4.net
>>461 Ruby
文字数とバイト数を適当に出力
require "cgi"
require "cgi"
str = CGI.unescapeHTML( "あaθ💀xΩ死🄫" )
sbs = str.bytes
i = n = 0
while i < sbs.size
case sbs[i] >> 4
when 0..7; i += 1
when 8..11; warn "Error"
when 12,13; i += 2
when 14; i += 3
when 15
case sbs[i] & 0xF
when 0..7; i += 4
when 8..11; i += 5
when 12,13; i += 6
else warn "Error"
end
end
n += 1
end
puts "#{n} chars\n#{str.size} chars"
puts "#{str.force_encoding( Encoding::BINARY ).size} bytes\n#{sbs.size} bytes"
puts str.bytes.map{|x| '%02X' % x }.join(' ')
#=>
8 chars
8 chars
20 bytes
20 bytes
E3 81 82 61 CE B8 F0 9F 92 80 78 CE A9 E6 AD BB F0 9F 84 AB

477:デフォルトの名無しさん
20/09/05 19:47:45.16 EHHCviTW.net
普通に処理系がchar配列にしたときサイズを入れてくれるからそれでわかっちゃうw

478:453
20/09/05 21:41:42 dAk5cbFF.net
書いてある条件だけで、求めて下さい!

他の方法では、簡単すぎるので

479:デフォルトの名無しさん
20/09/05 21:46:41 qef5ttAc.net
それだったら宿題スレで頼みなよ

480:デフォルトの名無しさん
20/09/05 22:24:40.63 s0GYNWbk.net
>>469
もう一度訊くけど,
ほんとに「バイト数」を求めたいの?
だったら
$ echo ' あaθ💀xΩ死🄫 ' | wc -c
これで一瞬だけど。
文字数なら,UTF-8を扱える言語で数えるか,
POSIX shでやるなら……面倒だな……。
URLリンク(gist.github.com)
こういうの使えばいいかな。
なお,wc -mはPOSIXでは必ずしも
UTF-8文字列を扱えるとは既定されていないので今回の目的には適さない。

481:デフォルトの名無しさん
20/09/05 22:25:44.48 s0GYNWbk.net
>>462
これ結構難しい。
まず普通に算法を考える段階で行き詰まってるw
頭悪いな〜

482:デフォルトの名無しさん
20/09/05 22:49:41.81 BjVkDMA6.net
>>462 C
URLリンク(ideone.com)

483:253
20/09/06 00:11:00 Lo+HJN6n.net
>>388 Perl5

($H, $W) = split' ',<DATA>; @a = map{[split/\s*/]} <DATA>;
for $h (0..$H-1) { for $w (0..$W-1) {
 $c = $a[$h][$w];
 $S = "$h,$w" if $c eq 'S'; $G = "$h,$w" if $c eq 'G';
 if ($c ne '#') {
  $e{($h-1).",$w $h,$w"}++ if $h and $a[$h-1][$w] =~ /[.SG]/;
  $e{"$h,".($w-1)." $h,$w"}++ if $w and $a[$h][$w-1] =~ /[.SG]/;
 }}}
use feature qw{current_sub say}; no warnings 'experimental';
sub {
 my $p = @_[-1];
 for my $q (map{s/ *$p *//; $_} grep{/$p/} keys %e) {
  if ($q eq $G) { $h{"@{[@_, $q]}"}++ }
  else { __SUB__->(@_, $q) unless grep{/$q/} @_ }
 }
}->($S);
say scalar keys %h;
__DATA__
5 5
S....
##.#.
...#.
...#.
....G


実行結果
~ $ perl 18_380_maze_paths.pl
12

484:253
20/09/06 00:30:27 WEZ/j7UH.net
>>474
今思うとエッジの表現は無向ではなく二重の有効グラフにしたほうが簡潔なコードになったかもしれない
まぁいいや…二度書く気は起きない…

485:デフォルトの名無しさん
20/09/06 00:34:53.48 T9SJW9BR.net
>>403
Kotlin
URLリンク(paiza.io)
区切りは文字列で指定出来るとか、大文字小文字無視とか、最大分割数を決められるだとか、色々と機能を追加してしまった。

486:デフォルトの名無しさん
20/09/06 03:34:19.13 0eLnTbkJ.net
お題
4999の逆数を小数点 以下48桁まで求める。

487:デフォルトの名無しさん
20/09/06 07:27:16.04 +WaXk/Ri.net
>>477 例外だけどbcコマンド
scale=48
1/4999
.000200040008001600320064012802560512102420484096

488:デフォルトの名無しさん
20/09/06 08:14:24.88 CxoRMtYI.net
>>477 Ruby
puts ('%0.49f' % (1r/4999)).chop
# => 0.000200040008001600320064012802560512102420484096

489:デフォルトの名無しさん
20/09/06 09:37:57.61 yqdZF37w.net
>>461 C++
URLリンク(ideone.com)

490:デフォルトの名無しさん
20/09/06 10:17:30.08 uXWEOXeO.net
>>462 C++
URLリンク(wandbox.org)

491:デフォルトの名無しさん
20/09/06 10:30:03.37 r+7yP+3C.net
>>473
>>474
これって二つとも総当たりで解いてる?
そうすると最悪3^(10^5)くらいの回数廻さないといけなくない?

492:デフォルトの名無しさん
20/09/06 10:58:30.52 5MBR0P77.net
1京くらいのループで解けるなら実用性はかろうじてある
競技性は無い

493:デフォルトの名無しさん
20/09/06 11:04:38.70 OF7UMaiS.net
最悪でも2^n組みしかなくね

494:デフォルトの名無しさん
20/09/06 11:07:12.07 uXWEOXeO.net
>>473 はlast_time(10^5)回のループの中でCOL(10)回ループ入れてるし、10^6では?

495:デフォルトの名無しさん
20/09/06 11:29:22.40 r+7yP+3C.net
>>484
いや,総当たりなら,3^(10^5)。
時刻が1--10^5までの間に,
「留まる」「右/左に移動する」の計3通りを
互いに独立に(以前の行動に影響されずに)
行うから。
書いていて思ったけど,端に居るときは
行動可能性が2通りに減るけど,
それでも2^N通りでは済まない。

496:253
20/09/06 12:24:42.87 cAaPNRIA.net
>>482
>>474>>388への回答なので
その計算量の推定議論には該当しません

497:デフォルトの名無しさん
20/09/06 12:31:12.27 OF7UMaiS.net
>>486
1人が満足することで1点得るとする
点数の最大値は入力されたnの数しかないからn点で
それぞれについて1点得るか得ないかの2^nしかない
あとはそれを実現できるか移動があるかどうかが焦点になる
なので全移動経路を総当りする必要性はない

498:デフォルトの名無しさん
20/09/06 13:12:26.24 GcXxHJb3.net
>>477 C++
#include <iostream>
int main(){
const int d = 4999;
int n = 1;
std::cout << "0b0.";
for( int i = 1; i <= 48; ++ i ){
n <<= 1;
if( n >= d ){
n -= d;
std::cout << '1';
} else {
std::cout << '0';
}
}
std::cout << std::endl;
return 0;
}
// STDOUT
0b0.000000000000110100011100000111010100101011010001

499:デフォルトの名無しさん
20/09/06 13:48:19.34 r+7yP+3C.net
>>488
I see! Thanks.

500:デフォルトの名無しさん
20/09/06 15:12:48.21 JPL9qi8o.net
>>488
2^nも必要ないよ
それぞれの時刻でホストが取れる状態はどのマスにいるかということだけ
だから時刻xマスの数が全状態数

501:デフォルトの名無しさん
20/09/06 15:20:10 JPL9qi8o.net
でその状態数の方が全経路数より圧倒的に少ないので
経路に沿ってではなくて状態について解いていく

502:デフォルトの名無しさん
20/09/06 16:31:54 SNogxihD.net
>>477
Java
URLリンク(paiza.io)

503:デフォルトの名無しさん
20/09/06 16:34:17 r+7yP+3C.net
>>491
ん?
ホストは隣合うマスにしか移動できないから,
単純にその場面での状態を考えるだけでは駄目なんでは?

504:デフォルトの名無しさん
20/09/06 16:57:26.53 JPL9qi8o.net
だから遡って計算していくときは隣り合うマスの結果しか参照しないよ

505:デフォルトの名無しさん
20/09/06 17:01:50 SNogxihD.net
>>461
Java
URLリンク(paiza.io)

506:デフォルトの名無しさん
20/09/06 17:02:55 JPL9qi8o.net
>>473のコードは多分バグがある気がする

51行目と57行目を
a = score[j-1] + bit_test(timeline + i, j);
a = score[j+1] + bit_test(timeline + i, j);
こう変えて
43行目を
for(i = last_time-1; i >= 0; i--){
こうするのが正しいと思う

507:253
20/09/06 18:02:02 EhLQImvS.net
>>462 Perl5、人の訪問を待ち受け得るすべての場合を愚直に総当りで最大満足数を探す

$T = <DATA>;
use feature qw{signatures say}; no warnings 'experimental';
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p, $s) {
 if ($t++ < $T) {
  if (0 < $p and $p < 11) {
   $s++ if grep/$p/, @{$p{$t}};
   $s += max(f($t, $p-1, $s), f($t, $p, $s), f($t, $p+1, $s))
  }
  return $s
 }
0
}
say f(0, 1, 0);
__DATA__
5
5 4
2 3
3 2
3 4
4 4

~ $ perl 18_454_N_vztr.pl
4

508:デフォルトの名無しさん
20/09/06 18:12:25.67 OF7UMaiS.net
>>462
python
URLリンク(ideone.com)
満足させる人数の多い順から実現可能か探索する
既に不可能だと分かっている移動が含まれる場合は直ちに打ち切る

509:デフォルトの名無しさん
20/09/06 18:13:41.84 65q5IvB9.net
>>498
perl読めないから間違ってたらごめんだが、
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
の入力で20を返してくる。(答えは5)

510:253
20/09/06 18:20:26.24 EhLQImvS.net
>>500
はい、バグってました。投稿してから気がついた
時間あったら直します

511:253
20/09/06 19:04:52.54 EhLQImvS.net
>>498 Perl5、>>497 のBug Fix、同じ所を何度も通るので漸化式かメモ化使って動的計画法で解けるようにできるかもしれない
use feature qw{signatures say}; no warnings 'experimental';
$T = <DATA>; chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<DATA>;
use List::Util 'max';
sub f($t, $p) {
 my $s = 0;
 if ($t <= $T) {
  if (0 < $p and $p < 11) {
   $s++ if grep{$_ eq $p} @{$p{$t}};
   $t++;
   $s += max(f($t, $p-1), f($t, $p), f($t, $p+1));
  }
 }
 $s
}
say f(0, 1);
__DATA__
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10

512:253
20/09/06 19:13:46.76 EhLQImvS.net
>>502 誤記スマソ
× >>497 のBug Fix
>>498 のBug Fix

513:465
20/09/06 20:59:44 I1QXsub5.net
>>497
ご指摘の通りバグってたので再投稿します。
URLリンク(ideone.com)

やりたかったことは>>464が言っていることと全く同じです。
イメージとしてはURLリンク(imgur.com) (※お題を考えたい人は閲覧注意)
>>473のコードは大抵の場合なぜかうまくいくコードのようです。

514:253
20/09/06 21:09:12 loE/lDca.net
>>462 Perl5、>>502 を動的計画法で解くように改良(但し再帰呼び出しを使っているので10^5など規模が大きい問題を解くなら下から上に計算してくる単純ループに書き換えた方が良い)

no warnings 'experimental';
use feature qw{signatures say};
$T = <>;
chomp $T;
push @{$p{$$_[0]}}, $$_[1] for map{[split' ']}<>;
use List::Util 'max';
sub f($t, $i) {
 my $s = 0;
 if (0 < $i and $i < 11) {
  return $m[$t][$i] if defined $m[$t][$i];
  $s++ if grep{$_ == $i} @{$p{$t}};
  $s += max(f($t+1, $i-1), f($t+1, $i), f($t+1, $i+1))
   if $t < $T;
  $m[$t][$i] = $s;
 }
 $s
}
say f(0, 1);

515:253
20/09/06 21:11:43.16 loE/lDca.net
>>505 の実行結果
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | perl 18_454_N_vztr_DP_rec.pl
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | perl 18_454_N_vztr_DP_rec.pl
5

516:253
20/09/07 00:59:21.14 5qB4CD7g.net
>>477 Perl5、小数点以下48桁で「丸め」
use bignum(p=>-48);
print 1/4999, "\n";

実行結果
$ perl 18_468_1_4999-48p.pl
0.000200040008001600320064012802560512102420484097

517:453
20/09/07 18:47:15.23 IF51aHwX.net
>>461
Elixir
ary = for << byte <- "あaθ💀xΩ死🄫" >> do # 1バイトずつ、ループ
<< nibble::size( 4 ), _::size( 4 ) >> = << byte >> # 先頭の4ビット
case nibble do
n when n in 0..7 -> 1
n when n in 8..11 -> 0
n when n in 12..13 -> 2
14 -> 3
15 -> 4
end
end
res = Enum.reject( ary, fn n -> n == 0 end ) # 0 を削除する
IO.inspect res
# [3, 1, 2, 4, 1, 2, 3, 4]
IO.puts( length res ) # 8文字
IO.puts( Enum.sum res ) # 20バイト

518:デフォルトの名無しさん
20/09/08 01:49:37.96 L2ZCtfX62
副業、大手も制度着々…コロナ禍、働き手は空き時間活用
URLリンク(www.itmedia.co.jp)
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
URLリンク(www.itmedia.co.jp)
東大の起業ラッシュは本物か、大学発ベンチャー数日本一の実力
URLリンク(business.nikkei.com)
AI研究の第一人者、東大・松尾研でも起業ラッシュ
URLリンク(business.nikkei.com)
失敗は認める、多数決はダメ。拡大する「社会起業家集団」の作り方
URLリンク(newswitch.jp)
新卒“即”起業せよ。社会起業家への最短距離に挑む若者たち
URLリンク(newswitch.jp)
人々の共感を得られないと潰される時代。
URLリンク(news.yahoo.co.jp)
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
URLリンク(honsuki.jp)
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
URLリンク(business.nikkei.com)
NECなど「出向起業」 大企業人材、起業しやすく
URLリンク(www.nikkei.com)

519:デフォルトの名無しさん
20/09/08 22:13:29.34 r41CjiKh.net
>>169
Java
URLリンク(paiza.io)

520:253
20/09/08 23:15:40.17 TMzoRSJV.net
>>462 go 動的計画法
package main
import ( "fmt" )
var m [][]int
func v(t int, p int) int {
 if 1 <= p && p <= 10 { return m[t][p] }; return 0 }
func max3(n1 int, n2 int, n3 int) int {
 n := n1; if n < n2 { n = n2 }; if n < n3 { n = n3 }; return n }
func main() {
 var n, t, p, i, T int
 fmt.Scan(&n)
 var a [][]int = make([][]int, n)
 for i=0; i<n; i++ {
  fmt.Scanf("%d %d", &t, &p)
  a[i] = []int{ t, p }
  if t > T { T = t }
 }
 m = make([][]int, T+1)
 for t=0; t<=T; t++ {
  m[t] = make([]int, 11)
  for p=1; p<=10; p++ { m[t][p] = 0 }
 }
 for i=0; i<n; i++ { m[a[i][0]][a[i][1]] = 1 }
 for t=T-1; 0<=t; t-- {
  for p=1; p<=10; p++ {
   m[t][p] += max3(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
  }
 }
 fmt.Println(m[0][1])
}

521:253
20/09/08 23:16:27.70 TMzoRSJV.net
>>511 の実行結果
~ $ cat 18_454_ex1.txt
5
5 4
2 3
3 2
3 4
4 4
~ $ cat 18_454_ex1.txt | go run 18_454_N_vztr_DP.go
4
~ $ cat 18_454_ex2.txt
11
3 2
2 3
3 4
4 4
5 4
4 7
5 7
6 7
7 7
8 7
7 10
~ $ cat 18_454_ex2.txt | go run 18_454_N_vztr_DP.go
5

522:253
20/09/09 09:03:14 GqQ7+Mc6.net
>>462 Python3

n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
T = max([a[i][0] for i in range(n)])
m = [[0] * 11 for t in range(T+1)]
for i in range(n):
   m[a[i][0]][a[i][1]] = 1
def v(t, p):
  return m[t][p] if 0 < p and p < 11 else 0
for t in reversed(range(T)):
  for p in range(1, 11):
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
print(m[0][1])


実行結果 (>>512 と同じテキストファイル 18_454_ex1.txt, 18_454_ex2.txt を入力に使用)
~ $ cat 18_454_ex1.txt | python 18_454_N_vztr_DP.py
4
~ $ cat 18_454_ex2.txt | python 18_454_N_vztr_DP.py
5

523:253
20/09/09 09:34:15.87 GqQ7+Mc6.net
>>513
  for p in range(1, 11):
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))

  for p in range(1, 11):
    if t+1 < p: continue
    m[t][p] += max(v(t+1, p-1), v(t+1, p), v(t+1, p+1))
とか書くと、右上三角の不要な計算を省けるが10^5などtが大きいと大勢に影響はないな…

524:デフォルトの名無しさん
20/09/10 01:27:25.37 8z9ZctT6.net
>>358
Java
URLリンク(paiza.io)

525:453
20/09/10 16:14:51.93 ypm5ktrY.net
お題
>>461
のルールに基いて、以下の3つの10進数のバイト列を、先頭(1バイト目)からチェックしていく時、
最初にルール違反となるのは、何バイト目か
129 130
120 169
240 159 146 206 184

526:デフォルトの名無しさん
20/09/10 22:23:57.36 8z9ZctT6.net
>>516
Java
URLリンク(paiza.io)

527:デフォルトの名無しさん
20/09/12 21:24:36.97 2KEhs3KT.net
お題:自然数nが現れる九九の表の最小サイズを求めよ
octave
URLリンク(ideone.com)

528:デフォルトの名無しさん
20/09/13 00:20:13.60 OR+CcCGz.net
>>518
Java
URLリンク(paiza.io)

529:デフォルトの名無しさん
20/09/13 00:35:46.34 42xWDo9L.net
>>518
Kotlin
URLリンク(paiza.io)
良いアルゴリズムが思いつかなかったのでほとんど力技。

530:蟻人間
20/09/13 22:12:25.49 p9JSm0uj.net
お題: 「ジャンケンすたじあむ オンライン」というソーシャルゲームのウェブサイト、もしくはソフトウェアパッケージを制作・運営せよ。
ジャンケンをしたい人が集まって、ひたすらジャンケンをして、勝ち数を競うというソーシャルゲーム。
ジャンケン試合は2人組になり、お互いに出す手を事前に申告し、両者が申告したところでシステムが自動で勝敗を判定する。

531:デフォルトの名無しさん
20/09/13 22:17:50.99 phcl8RYj.net
>>521
消えろ

532:デフォルトの名無しさん
20/09/13 22:22:25.86 lu6eiMc4.net
動的計画法ってちゃんと勉強しないとなかなか思いつかないよな

533:デフォルトの名無しさん
20/09/14 12:06:08.48 u8/qg5cq.net
>>518
Haskell
f x = head [ d | d <- [(ceiling $ sqrt $ fromInteger x)..], mod x d == 0]
main = mapM_ print [(x,f x) | x<-[100..130]]

534:蟻人間
20/09/14 14:12:59.44 /Fwk/gkb.net
お題: 沖縄の名物「シークワーサー」のことが書かれた記事のUTF-8日本語テキストファイル「input.txt」がある。
しかし、記事の執筆に多数の編集者が関わったため、シークワーサーの表記がぶれていることが分かった(次のリンクを参照)。
URLリンク(ja.m.wikipedia.org)
表記のぶれを「シークワーサー」に表記を統一したテキストファイル「output.txt」を出力せよ。

535:デフォルトの名無しさん
20/09/14 17:05:19.85 xV8mpaUY.net
エンジニアが書いてるならシークワーサだな
間違いない

536:蟻人間
20/09/14 17:29:10.23 yesAwSRz.net
>>525 input.txtの中身:
「シークヮーサーは、別名シイークワシャーと呼ばれ、シークヮーサーの香りがするシークヮーシャーのような柑橘系の果物である。シィークアーサーはアーサー王とは関係がないと思われる。」

537:デフォルトの名無しさん
20/09/14 18:00:53.92 wBiJ2Dx0.net
"/シ(?:イ?ー|ィー?)ク[アワァヮ]ー?(?:サ|シャ)ー?/シークヮーサー/g"

538:蟻人間
20/09/14 20:32:57.79 /Fwk/gkb.net
お題: お使いのプログラム言語で、COBOLに負けない最強の通貨型を設計せよ。
任意の桁数の10進整数を扱えること。
任意の有効桁数の10進小数を扱えること(10進浮動小数点数)。
加減乗除、剰余、任意桁での切り捨て・切り上げ・四捨五入が可能。
10進数表記で入出力できること。
比較的高速に演算できること。

539:蟻人間
20/09/14 20:55:28.62 /Fwk/gkb.net
1÷3をどう扱うかという問題があるようだ。

540:デフォルトの名無しさん
20/09/14 21:04:18.95 I0h6BMX6.net
割り算するときに桁数していするだけっしょ

541:デフォルトの名無しさん
20/09/14 21:07:19.27 I0h6BMX6.net
蟻人間さんにお題:銀行丸めを整数型のみを使用して実装してください


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