プログラミングのお題スレ Part18at TECH
プログラミングのお題スレ Part18 - 暇つぶし2ch453:デフォルトの名無しさん
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
蟻人間さんにお題:銀行丸めを整数型のみを使用して実装してください

542:デフォルトの名無しさん
20/09/14 21:08:24.84 SHGAz9ig.net
>>526


543:デフォルトの名無しさん
20/09/14 21:24:52.09 6FD493+N.net
昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?

544:デフォルトの名無しさん
20/09/14 21:26:17.95 6FD493+N.net
昔から思っているんだけど、分数で持っていて最後に一回だけ割り算するんじゃなんでいけないのかな?

545:デフォルトの名無しさん
20/09/14 21:49:38.28 SHGAz9ig.net
分子や分母に分数が入ってきた場合
精度の面で面倒なことになるぞ

546:蟻人間
20/09/14 23:12:41.48 yesAwSRz.net
>>532
URLリンク(ideone.com)
今日はここまで。

547:デフォルトの名無しさん
20/09/14 23:41:27.65 5nyvo7WN.net
>>537
一生ここまでにしろ

548:デフォルトの名無しさん
20/09/15 00:21:13.43 2J2Mo0F/.net
>>525
sed -r 's/シ([イィ]ー?|ー)ク[アァワヮ]ー?(サ|シャ)ー/シークワーサー/g'
-r は拡張正規表現を使うオプション。
これで >>527 の文を変換するとこうなる。
「シークワーサーは、別名シークワーサーと呼ばれ、シークワーサーの香りがするシークワーサーのような柑橘系の果物である。シークワーサ ーはアーサー王とは関係がないと思われる。」

549:蟻人間
20/09/15 02:31:45.89 39uvi0pE.net
現実問題では、long double型で十分な精度が出るから、独自の浮動小数点数は必要なさそう。
残りは四捨五入とか銀行丸めなどの端数処理。

550:デフォルトの名無しさん
20/09/15 09:10:08.88 gc4PCUOV.net
工エエェェ(´д`)ェェエエ工

551:デフォルトの名無しさん
20/09/15 14:07:27.97 2J2Mo0F/.net
bc コマンド使えば良い。
他の言語から使いたい場合はライブラリをリンクするか、またはこっそり裏で fork(), exec() してパイプで繋いで計算させるw

552:蟻人間
20/09/15 21:40:23.58 9dtbuAF3.net
>>537
URLリンク(github.com)
今日はここまで。足し算、引き算、掛け算を実装。
銀行丸めはもうちょっと待ってね。

553:デフォルトの名無しさん
20/09/15 21:59:54.94 ky+PawN1.net
>>543
誰も待ってないから一生滞ってろ

554:蟻人間
20/09/15 22:50:58.78 i370J0Ri.net
>>544
スレチ

555:蟻人間
20/09/15 22:54:46.37 i370J0Ri.net
>>544
とりあえずまあソースコードを読んで頂いてクレヨン。

556:デフォルトの名無しさん
20/09/15 22:56:56.50 ky+PawN1.net
ここはお前の日記帳じゃねぇっての
スレチはお前

557:デフォルトの名無しさん
20/09/16 10:06:16.52 eJDvfDFO.net
ぶぶ漬けどうぞと言われて、美味しくいただいてさらに食レポまで始めてるような状態かな

558:デフォルトの名無しさん
20/09/16 21:28:53.90 XXyygoNj.net
嫌味なことするなよ

559:デフォルトの名無しさん
20/09/17 00:07:22.39 jOQPl4C7.net
京都のおっかさんも口あんぐりやで

560:デフォルトの名無しさん
20/09/17 01:09:05.65 FJaokp+J.net
>>529 Python decimal でできるだろ。
URLリンク(docs.python.org)

561:デフォルトの名無しさん
20/09/17 07:37:06.63 Lu9ZyyRf.net
お題: (複数行のバックグラウンド、座標テキスト、座標)から合成テキストを返す関数を作れ
座標テキストとバックグラウンドは同じサイズ(とりあえず横4縦3とする)
background
┏┓┏┓
┃┗┛┃
┗━┛
座標テキスト
ab23
9014
8765
座標が
0なら
┏┓┏┓
┃*┛┃
┗━┛
6なら
┏┓┏┓
┃┗┛┃
┗━*┛
11なら
┏*┏┓
┃┗┛┃
┗━┛
あまり綺麗な実装が出来なかったから問題にした URLリンク(repl.it)

562:デフォルトの名無しさん
20/09/17 08:03:03.74 dVFtUKnH.net
>>552 Ruby
def analogClockStr( h, bg, positions )
(clockStr = bg.dup)[ positions.index( h.to_s(16) ) ] = '*'
clockStr
end
background = '
┏┓┏┓
┃┗┛┃
┗━┛
'.strip.freeze
positions = '
ab23
9014
8765
'.strip.freeze
puts analogClockStr( 0, background, positions )
puts analogClockStr( 6, background, positions )
puts analogClockStr( 11, background, positions )

563:デフォルトの名無しさん
20/09/17 08:08:23.20 Lu9ZyyRf.net
げっ確かに行ごとにreplace必要ないじゃん
何やってんだ俺
ありがとう

564:デフォルトの名無しさん
20/09/17 13:17:16.17 GTUBgTcD.net
>>552
問題の意味がわからない。

565:デフォルトの名無しさん
20/09/17 13:30:29.78 /h1W7gqa.net
>>552
くだらない質問スレか初心者質問スレ行け

566:デフォルトの名無しさん
20/09/17 13:34:08.96 Lu9ZyyRf.net
ほんとにどの問題よりもクソみたいな問題だと思っています
本当にすいませんでした

567:デフォルトの名無しさん
20/09/17 13:42:30.73 Lu9ZyyRf.net
た�


568:セ私は純粋にプログラミングが好きで 全く質問したかったわけじゃないのはわかってほしい 二次配列じゃないと処理できないものだと勘違いしていたのが甘いしシンプルにしすぎて問題が破綻してしまった



569:デフォルトの名無しさん
20/09/17 13:48:33.25 Lu9ZyyRf.net
純粋にここにいる人たちが解法として書くコードは好きだし
たまに驚くべき角度から解を出す人もいるしマイナーなアルゴリズムも知れて尊敬してる
今回もスマートなコードが見れるんじゃないかと純粋に期待して問題にしてみたんだ
スレも今流れ遅かったし

570:デフォルトの名無しさん
20/09/17 13:50:39.09 Lu9ZyyRf.net
しかしお前らは牙を向いた
純粋に問題作成初心者の心を無碍にして
鋭い刃のような言葉を投げつけてきた
お前らは今日から敵とみなす
あばよ😎✋絶望しな

571:
20/09/17 19:40:19.09 +AujTTfU.net
>>560
奏ちゃん「自意識過剰なんじゃないですか?」

572:デフォルトの名無しさん
20/09/17 22:33:12.99 H8Ldt8Jg.net
お題:文字列の末尾の数字をインクリメントしてください
入力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS
出力
IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS

573:デフォルトの名無しさん
20/09/17 22:56:25.54 ockp6LF+.net
>>562 vim
?\d<CR><C-a>

574:デフォルトの名無しさん
20/09/17 23:01:20.65 ockp6LF+.net
>>562 Ruby
$><<gets.sub(/\d+(?=\D+$)/, &:succ)
# => IB0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoim
M3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOn
xhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfP
sQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuu
UBGLGuFToYptzqjkfdAoxAqqmeQO8PVcUS

575:デフォルトの名無しさん
20/09/18 01:44:05.02 hhldwLbP.net
>>562
Perl
コマンドラインで以下のように入力後に標準入力から文字列を読ませると標準出力に出力される。
perl -pe 's/(\d+)(\D+)$/($1+1).$2/ge'
あるいはファイルに内容を入れておいてそのファイルを指定する。

576:デフォルトの名無しさん
20/09/18 03:22:29.90 Pz26zoiQ.net
js
window.prompt().replace(/\d(?=\D+$)/,i=>i*1+1)

577:デフォルトの名無しさん
20/09/18 06:23:31.29 QICqPxzN.net
>>565
行末が数字のときに対応できない
perl -pe 's/(\d+)(\D*)$/($1+1).$2/e'
のほうがよくないかな

578:デフォルトの名無しさん
20/09/18 06:53:31.48 5l49iFOd.net
>>520
その場合の良いアルゴリズムって
「素因数分解を早く解くアルゴリズム」
よね。
それがもし思いついたらフィールズ賞ものではw

579:デフォルトの名無しさん
20/09/18 21:10:31.47 JxxZTRpA.net
>>562
Java
URLリンク(paiza.io)

580:デフォルトの名無しさん
20/09/18 21:36:05.11 JxxZTRpA.net
>>553
Java
URLリンク(paiza.io)

581:デフォルトの名無しさん
20/09/18 21:54:28.27 WsEcPr9A.net
>>562
haskell
theStr = "B0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS"
f x = let
(a,b) = span (\x-> (x<'0') || (x>'9')) $ reverse x
c = show $ (+1) $ read $ return $ head b
in reverse $ a++c++(tail b)
main = do
print $ f theStr

582:デフォルトの名無しさん
20/09/18 23:21:52.09 hhldwLbP.net
>>567
そうだった。 + じゃなくて * だったな。

583:253
20/09/18 23:34:45.95 /yEGF/vF.net
>>568
素因数分解まで行かない。
素でなくてもいいので因数のうちイチバン大きいもの。
なんかいい解法見つけられないか、考えているけどいまのところ見出せていない

584:253
20/09/18 23:36:27.35 /yEGF/vF.net
いや、違うな…
因数のうちイチバン大きいものでは、ダメだわ

585:デフォルトの名無しさん
20/09/19 00:05:40.30 HLFklpM8.net
>>562
C
URLリンク(paiza.io)
正規表現を使わずに行末から一文字づつ行頭に向かって検索してやっている。

586:デフォルトの名無しさん
20/09/19 00:59:21.89 HX0Lirqs.net
√n以上の最小の約数

587:デフォルトの名無しさん
20/09/19 12:14:05.54 iLwsU5Ay.net
初出題
数学板の問題より
5つのサイコロの1~6の面がそれぞれ赤白黄青緑にそれぞれ
["byrbwg", "yrgwbb", "gbrwwy", "gyrbww", "gbrybw"]
と塗り分けられている
この状態では1-6を天地の軸として2~5の側面にはそれぞれ
["yrbyb","rgrrr","bwwby","wbwwb"]
となっている
それぞれのサイコロを適当に回転させて全ての側面にrwybgがちょうど一回ずつとなるようにしたい
そのような回転の組み合わせは何通りか
本質的に同じものを重複して数えるのを避けるために最初のサイコロの回転は
・動かさない
・1→2,2→3,3→1,4→6,5→4,6→5
・1→3,2→1,3→2,4→5,5→6,6→4
の3つのうちどれかのみを許すとする
(出力)
["yrbgbw","gbybrw","bgwryw","bygwwr","bwrygb"]
["yrbgbw","gbybrw","wywrgb","rwgwyb","bgrywb"]
["rbywgb","gyrbbw","wwgyrb","ygbrww","brwgyb"]
["rbywgb","wybrbg","wwgyrb","wgrbwy","brwgyb"]

588:デフォルトの名無しさん
20/09/19 15:12:41.86 BWMKzapi.net
スレリンク(math板:133番)-
わけわからん問題文にするなよ・・・

589:デフォルトの名無しさん
20/09/19 16:07:21.18 wSOXcncc.net
全然違って草

590:デフォルトの名無しさん
20/09/19 16:29:35.90 HLFklpM8.net
>>577
君が何を言わんとしているのかが全くわからない。

591:253
20/09/19 17:15:41.66 6KnxgpBj.net
>>518 Perl5、>>576にヒントを貰った通り√を使ってnaiveに書くと…
use POSIX 'ceil';
for $n (81, 87, 91) {
 $r = ceil sqrt $n;
 for ($r..$n) {
  $i = $_;
  last until $n % $_;
 }
 print "$n => $i\n"
}
実行結果
~ $ perl 18_509_99_naive.pl
81 => 9
87 => 29
91 => 13
計算量の少ないもう少しカッチョイイ方法を見出せればなぁ…

592:デフォルトの名無しさん
20/09/19 21:37:57.70 HX0Lirqs.net
>>577です
やはりちょっと伝わらないですね
>>577
は取り下げます

593:デフォルトの名無しさん
20/09/19 21:39:46.15 HX0Lirqs.net
>>581
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな

594:デフォルトの名無しさん
20/09/19 21:40:46.29 wSOXcncc.net
減るというかそもそも計算量が同じというか

595:デフォルトの名無しさん
20/09/19 21:46:21.17 HX0Lirqs.net
イヤnが素数の場合に√nから上むきに探索すると計算量はnになるけど下向きなら√nになる
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い

596:デフォルトの名無しさん
20/09/20 00:25:54.87 ZGoKBb8Y.net
ポラード・ロー法使えばもっと計算量は減る
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される

597:デフォルトの名無しさん
20/09/20 01:39:54.18 wHMtOvf4.net
素因数分解利用するなら素因数分解そのものが手早くできてもダメでしょ?
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?

598:デフォルトの名無しさん
20/09/20 06:22:49.81 OZ4qNDWZ.net
>>585
素数判定はそもそも計算量少ない

599:デフォルトの名無しさん
20/09/20 10:19:03.22 mk/D54YH.net
>>588
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/~\と\~/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\~/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる

600:デフォルトの名無しさん
20/09/20 10:50:48.99 g28HruB5.net
あ、間違えた
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>587みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする

601:デフォルトの名無しさん
20/09/20 11:23:17.24 MLu0Cj9r.net
>>559-560
短いこの間でダークサイドに堕ちてて草

602:デフォルトの名無しさん
20/09/20 11:58:05.82 FaUtZa6z.net
>>591
お詫び→弁解→言い訳→逆ギレ
冷静に書いてたつもりが書いてくうちに興奮して見事なコンボを決めたようだ

603:デフォルトの名無しさん
20/09/20 12:47:09.77 MLu0Cj9r.net
感情豊かでかわいいw

604:デフォルトの名無しさん
20/09/20 12:59:00.77 wHMtOvf4.net
気分を変えてまた数学板より
自然数nに対して格子点の集合{(a,b) | a,bは1~nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1~8では
[0,1,14,194,826,2491,6364,14564]
のハズ

605:デフォルトの名無しさん
20/09/20 13:05:52.02 wHMtOvf4.net
>>594
ちなみにn=3の場合の14個は
1×1の正方形:4個
2×2の正方形:1個
√2×√2の正方形:1個
2×1の長方形:4個
4辺が1,1,√2,2√2の等脚台形:4個
の14個

606:デフォルトの名無しさん
20/09/20 18:36:43.29 XyOg3AIQ.net
>>594
URLリンク(ideone.com)
{0,1,14,184,762,2257,5704,13040}と出たんだが
どっちが合ってる?

607:デフォルトの名無しさん
20/09/20 18:44:44.75 XyOg3AIQ.net
一直線上にある4点の組を余分に数えたところ >>594 の解と一致した
URLリンク(ideone.com)

608:デフォルトの名無しさん
20/09/20 18:56:48.73 wHMtOvf4.net
あ、ホントだ失礼しました

609:デフォルトの名無しさん
20/09/20 19:10:27.22 wHMtOvf4.net
[0,1,14,184,762,2257,5704,13040]
が正解ですね
URLリンク(ideone.com)

610:デフォルトの名無しさん
20/09/20 22:46:33.41 9sb+TTLg.net
>>594
問題がわからない。

611:デフォルトの名無しさん
20/09/21 00:11:09.46 ZXxiMs6i.net
>>600
n=3だと
●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●
●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●
●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●
●◯● ◯●◯
◯◯◯ ●◯●


612: ●◯● ◯●◯ の14通り



613:デフォルトの名無しさん
20/09/21 11:36:08.07 VFD1LGbi.net
>>594のお題は、
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1~nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1~8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)
ってことでいいかな?

614:デフォルトの名無しさん
20/09/21 13:45:14.08 tVxoOCVr.net
>>601
n=4 のときの184通り
URLリンク(imgur.com)

615:デフォルトの名無しさん
20/09/21 14:54:29.54 /KyZWHiy.net
>>603
正解だと思う
おそらくn=9までは
[0,1,14,184,762,2257,5704,13040,25996]
今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz

616:デフォルトの名無しさん
20/09/22 00:03:46.43 jIz1rAqD.net
誰かフォルダにパスワード駆ける方法教えてくれ

617:253
20/09/22 02:15:18.79 jDcMk3G3.net
対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は
解決すべき課題は計算量の削減ばかりではないだろうけれどさ

618:デフォルトの名無しさん
20/09/22 09:28:15.64 yucbsR+t.net
まぁ何に重きを置くかですな
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中

619:デフォルトの名無しさん
20/09/22 11:56:55.93 LgsCAwYw.net
>>603に挙げられている184通りのうち、その3/4にあたる138通りが、直径が√10のものである
そのうち、円の中心が図の中央にあるものは、候補となる点が8個あるので、8C4 = 70 通りある。
図の中央から(±1,0)または(0,±1)ずれたものは、候補となる点が6個なので4×(6C4)=60通り
図の中央から(±2,0)または(0,±2)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
図の中央から(±1,±1)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
合わせて 70+60+4+4=138 通りと数え上げることができる
図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。

620:253
20/09/28 22:51:28.57 mT2w1+AU.net
>>518 Python3, >>585を参考に計算量を√nに減らした解法
import math
for n in [81, 87, 91, 13]:
  s = math.sqrt(n)
  f = n
  for i in reversed(range(2, 1 + math.floor(s))):
    q, m = divmod(n, i)
    if m == 0: f = q; break
  print(n, '=>', f)

実行結果
~ $ python 18_509_99_rootn.py
81 => 9
87 => 29
91 => 13
13 => 13
もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う

621:253
20/09/28 22:53:47.02 mT2w1+AU.net
>>609
× 意識した解法を意識してしまうが、
○ 意識した解法を思い浮かべてしまうが、

622:デフォルトの名無しさん
20/09/29 18:23:40.44 TPx3FsW2.net
お題: バブルソートを実装せよ

623:253
20/09/29 23:24:18.49 219xwwXO.net
>>611
プログラミングのお題スレ Part13
スレリンク(tech板:231番)

624:デフォルトの名無しさん
20/09/30 20:15:38.19 rtPyMlCZ.net
古参はここで「番兵おけやボケェ!」と言う

625:デフォルトの名無しさん
20/10/01 01:25:55.75 cJ6xF5hb.net
お題:
アッカーマン関数の引数が与えられるので、計算過程を1ステップずつ出力してください
入力:
2 1
出力:
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

626:デフォルトの名無しさん
20/10/01 11:20:33.49 iee67Noq.net
>>614
Haskell
astr m n = "A(" ++ m ++ "," ++ n ++ ")"
ack' 0 n = (n+1, [astr (show 0) (show n), (show $ n+1)])
ack' m 0 = let
(val, ss) = ack' (m-1) 1
in (val, (astr (show m) (show 0)) : ss)
ack' m n = let
(val1, ss1) = ack' m (n-1)
(val2, ss2) = ack' (m-1) val1
ss = [astr (show $ m-1) s | s <-ss1] ++ (tail ss2)
in (val2, (astr (show m) (show n)):ss)
ack m n = map (++"\n") $ snd $ ack' m n
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ putStr $ ack x y

627:デフォルトの名無しさん
20/10/01 12:09:11.51 OaA9a4hN.net
Haskellでもこんな長くなるの?

628:デフォルトの名無しさん
20/10/01 12:15:24.40 O+PWz9pR.net
>>616
いや、上手な人ならもっと上手くやるはず
アホほどライブラリがあってそれ使えば楽々のハズだけど修行中の身ではこんなもんorz

629:デフォルトの名無しさん
20/10/01 14:04:34.18 Am+nhG+G.net
>>615
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせんorz
haskell
----
astr m s = "A(" ++ (show m) ++ "," ++ s ++ ")"
ack 0 n = [astr 0 $ show n, show $ n+1]
ack m 0 = (astr m $ show 0) : ack (m-1) 1
ack m n = let
ss1 = ack m (n-1)
in [astr m $ show n]
++ (map (astr (m-1)) ss1)
++ (tail $ ack (m-1) (read $ last ss1))
main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ ((putStr).(++"\n")) $ ack x y

630:蟻人間
20/10/02 19:50:35.06 gQLwfaGp.net
お題: 野球のボールの動きを物理シミュレートして、ピッチャーの投げてきたボールをより遠くにかっ飛ばすバッターAIを開発せよ。

631:デフォルトの名無しさん
20/10/02 20:54:50.29 tP403VLl.net
カーブやシュートも再現しろよ

632:253
20/10/02 21:41:56.95 kl4hmyt8.net
>>619
─┼─┐─┼─  /  ,.           `゙''‐、_\ | / /
  │  │─┼─/| _,.イ,,.ィ'    ───‐‐‐  *  ←>>蟻人間
  │  |ツ │    |  |  | イン /´⌒`ヽ    // | \
                     {,    リ)  / ./ |  \
               __ /}从、 リ( /  /  |
      ,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ   / ∵|:・.
    〃〃〃〃      //ミノ__  /´   /∴・|∵’
ヽ_I__I__I__I__I_I     __ノ_/ /    ヽミ、、   .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__   )  ゙ 、∵.;|∵’,
 /I I I I I I     .^^^'   \ !  ̄フ    ゙ 、 |∴
                   ソ  /      `
                  ノ⌒ヽ')
                / ノ/ /
               /\/ ∧/   /       ',
              / /  ノ./   ./        ',
             ノ/   ヘ__、  ./ / ̄ ̄ ̄ヽ .',
            ヘ_'_,       /  \   /  ',
                     /    \/    ',
            ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙             ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙

633:デフォルトの名無しさん
20/10/02 21:46:15.88 JDxjQVnw.net
ナイス

634:デフォルトの名無しさん
20/10/02 22:04:39.76 jsz+6t1Q.net
>>621
くっそワロタ

635:253
20/10/03 01:10:19.52 io8Ij0O0.net
>>614 Perl5
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
 say "${l}A($m, $n)$r";
 $m ? $n
  ? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
  : A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');

実行結果
~ $ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, A(1, 1)))
A(1, A(1, A(0, A(1, 0))))
A(1, A(1, A(0, A(0, A(0, 1)))))
A(1, A(1, A(1, A(0, 2))))
A(2, A(1, 3))
A(2, A(0, A(1, 2)))
A(2, A(0, A(0, A(1, 1))))
A(2, A(0, A(0, A(0, A(1, 0)))))
A(2, A(0, A(0, A(0, A(0, A(0, 1))))))
A(2, A(0, A(0, A(1, A(0, 2)))))
A(2, A(0, A(1, A(0, 3))))
A(2, A(1, A(0, 4)))
5

636:253
20/10/03 01:13:51.37 io8Ij0O0.net
なんかBugってる…orz

637:デフォルトの名無しさん
20/10/03 12:07:42.48 xbar0BlH.net
>>614 perl5
URLリンク(ideone.com)
s///e でいける

638:デフォルトの名無しさん
20/10/03 12:20:08.70 nr2+4P+J.net
perlの正規表現マジック恐ろしや

639:デフォルトの名無しさん
20/10/03 12:37:17.41 MOu6VxbM.net
>>626
すげえな
ほとんどワンライナーだ

640:デフォルトの名無しさん
20/10/03 12:46:20.34 ul2MWjNf.net
そうなのよね
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ

641:253
20/10/03 14:01:25.06 5WkJC33J.net
>>614 Perl5、>>624 を修正。 >>626 あら正規表現で書けちゃうのかイナ…
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n) {
 $m ? $n
  ? do{ my ($m2, $n2) = ($m-1, $n-1);
     push @$l, "A($m2, "; push @$r, ')';
     say @$l, "A($m, $n2)", @$r; A($m2, A($m, $n2)) }
  : do{ my ($m2, $n2) = ($m-1, 1);
     say @$l, "A($m2, $n2)", @$r; A($m2, $n2)}
  : do{ my $s = $n + 1; say @$l, $s, @$r; pop @$l; pop @$r; $s };
}
($m, $n) = (2, 1);
say "A($m, $n)";
A($m, $n);
実行結果
$ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

642:デフォルトの名無しさん
20/10/03 18:00:38.18 WWjeAKvH.net
>>614 ocaml
URLリンク(ideone.com)
let (>>) f g x = g (f x)
let rec a m n p =
let () = p (Printf.sprintf "A(%d, %d)" m n) in
if m = 0 then n + 1
else if n = 0 then a (m - 1) 1 p
else a (m - 1) (a m (n - 1) (Printf.sprintf "A(%d, %s)" (m - 1) >> p)) p
let () = print_int (a 2 1 print_endline)

A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

643:デフォルトの名無しさん
20/10/07 20:33:26.90 0TsEuxhN.net
>>614 octave
URLリンク(ideone.com)
function c = a(m, n, p)
p(sprintf('A(%d, %d)', m, n));
if m == 0
c = n + 1;
elseif n == 0
c = a(m - 1, 1, p);
else
c = a(m - 1, a(m, n - 1, @(s) p(sprintf('A(%d, %s)', m - 1, s))), p);
end
end
disp(a(2, 1, @disp));

644:253
20/10/08 02:27:24.66 Gy7CYzaJ.net
藻前ら、なかなかやるなー
気に入った。

645:蟻人間
20/10/08 13:59:34.65 N89hoMl4.net
お題: ax**2+b*x+c==0という形の二次方程式を解き、全ての実数解と実数解の個数を表示する。

646:デフォルトの名無しさん
20/10/08 15:03:23.36 eK30Q5Ei.net
実数解はルートを含んだ形でいいのか?
あるいは小数点以下何桁まで正確に求めるのか?

647:蟻人間
20/10/08 15:04:48.84 N89hoMl4.net
>>635
浮動小数点数でいいよ。

648:デフォルトの名無しさん
20/10/08 21:36:29.64 Q4ykcHSC.net
>>633
∧_∧  / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
(    )  \_____
| | |
(__)_)

649:蟻人間
20/10/09 13:26:20.64 pUAVGuih.net
お題:計算ができる文章テンプレートを実装し、つるかめ算を自動生成せよ。
文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。
入力の例:「ツルの数=3, カメの数=4」

650:デフォルトの名無しさん
20/10/09 14:02:14.80 /NdRCF04.net
>>634 js
function quadraticWithCount(a, b, c) {
const inSqrt = b ** 2 - 4 * a * c
if (inSqrt < 0) return [[], 0]
const l = - b / (a * 2)
if (inSqrt === 0) return [[l], 1]
const r = Math.sqrt(inSqrt) / (a * 2)
return [[l - r, l + r], 2]
}
console.log(quadraticWithCount(3, -2, -1))
console.log(quadraticWithCount(3, 6, 3))
console.log(quadraticWithCount(1, 2, 3))
// [ [ -0.3333333333333333, 1 ], 2 ]
// [ [ -1 ], 1 ]
// [ [], 0 ]

651:蟻人間
20/10/09 14:14:06.07 LR5flFjI.net
>>638
追記: パーサーを作れない人はevalを用いても構わない。

652:デフォルトの名無しさん
20/10/09 14:14:59.57 /NdRCF04.net
>>634 js 改善
function quadratic(a, b, c) {
const rt = Math.sqrt(b ** 2 - 4 * a * c)
return [(-b + rt) / (2 * a), (-b - rt) / (2 * a)]
}
function quadraticReal(...abc) {
const ans = quadratic(...abc)
const [a1, a2] = ans
if (isNaN(a1)) return []
if (a1 === a2) return [a1]
return ans
}
const quadraticRealWithCount = (...abc) => addCount(quadraticReal(...abc))
const addCount = a => [a, a.length]
console.log(quadraticRealWithCount(3, -2, -1))
// [ [ 1, -0.3333333333333333 ], 2 ]
console.log(quadraticRealWithCount(3, 6, 3))
// [ [ -1 ], 1 ]
console.log(quadraticRealWithCount(1, 2, 3))
// [ [], 0 ]

653:デフォルトの名無しさん
20/10/09 17:52:52.10 gniylpO4.net
>>638 Ruby
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_
puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }

654:253
20/10/09 22:43:14.04 /QeZd0d9.net
>>638 Perl5
use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF

実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」

655:蟻人間
20/10/09 23:14:45.18 LR5flFjI.net
お題: 2つのRGBカラーが#RRGGBB形式で与えられる(RRGGBBは六桁の十六進数とする)。
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。

656:蟻人間
20/10/09 23:26:06.11 LR5flFjI.net
>>644
入力例1: #112233, #99AAFF
入力例2: #AD03ff, #a39e75

657:デフォルトの名無しさん
20/10/09 23:55:14.23 ACx6TREf.net
>>644,645
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。

658:デフォルトの名無しさん
20/10/10 02:56:37.74 KFXrJR76.net
問題が玉石混合だなぁ

659:デフォルトの名無しさん
20/10/10 07:06:51.16 PdovQueR.net
>>643
>変数は「$(変数名)」のように表し、

660:デフォルトの名無しさん
20/10/10 07:45:17.48 nh4sk35x.net
お題: 20201010と出力してください。ただしコードに使っていい数字は1のみです。

661:デフォルトの名無しさん
20/10/10 08:25:49.31 qt6u2bFw.net
>>649 python
a=1;b=a+a;c=a-a
print(b,c,b,c,a,c,a,c,sep='')
#出力20201010

662:デフォルトの名無しさん
20/10/10 10:53:30.16 nh4sk35x.net
>>649 自分で js
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)
const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)

663:デフォルトの名無しさん
20/10/10 12:06:27.17 0z4oJBva.net
>>649
js本日限定
new Date().toLocaleDateString().split(/-|\//).join``
//=> "20201010"

664:デフォルトの名無しさん
20/10/10 14:54:47.61 iOujIiR/.net
>>647
×こんごう
○こんこう

665:デフォルトの名無しさん
20/10/10 14:57:00.84 iOujIiR/.net
>>649
Java
URLリンク(paiza.io)

666:デフォルトの名無しさん
20/10/10 15:40:40.94 Duwb5Fsi.net
>>654
012にOIZ使うのセンスある

667:デフォルトの名無しさん
20/10/10 18:37:22.80 jNM1f0U4.net
>>649 C
URLリンク(ideone.com)

668:デフォルトの名無しさん
20/10/10 18:54:45.98 V01gi3BN.net
>>656
Windowsでもそのままでいけるのか?

669:蟻人間
20/10/10 19:24:31.52 c6WyhNHP.net
お題: 振動数1000Hzの音を1秒間発振せよ。

670:デフォルトの名無しさん
20/10/10 19:32:24.80 53GLINoh.net
>>649 c
URLリンク(ideone.com)

671:デフォルトの名無しさん
20/10/10 19:46:18.01 LCYuVeVr.net
haskell
import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"

672:デフォルトの名無しさん
20/10/10 21:44:48.33 0z4oJBva.net
>>658 js
var ctx = new window.AudioContext
var osc = ctx.createOscillator()
osc.type = 'sine'
osc.frequency.value = 1000
osc.connect(ctx.destination)
osc.start()
osc.stop(1)

673:デフォルトの名無しさん
20/10/10 23:07:21.98 t1LUP7rm.net
>>649
haskell 改良
unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"

674:デフォルトの名無しさん
20/10/10 23:18:40.46 iOujIiR/.net
>>644
Java
URLリンク(paiza.io)
URLリンク(dotup.org)

675:デフォルトの名無しさん
20/10/11 00:16:06.04 6GsmNhIZ.net
>>649 JavaScript
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')

676:デフォルトの名無しさん
20/10/11 01:54:01.50 eYi6TEVp.net
>>614
Java
URLリンク(paiza.io)

677:デフォルトの名無しさん
20/10/11 08:58:57.96 luIvAMCe.net
>>649 J
smoutput ,&":/ 'amp' i. 'papamama'

678:デフォルトの名無しさん
20/10/11 11:20:41.53 eXVrSXVr.net
>>649 bash
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo

679:デフォルトの名無しさん
20/10/11 17:59:24.67 /6XslNRS.net
>>638
Perl
URLリンク(paiza.io)
eval が使えて楽なので、つい。

680:デフォルトの名無しさん
20/10/11 18:12:54.16 eYi6TEVp.net
>>611
Java
URLリンク(paiza.io)

681:デフォルトの名無しさん
20/10/11 19:16:59.76 /6XslNRS.net
>>644
Kotlin
URLリンク(paiza.io)
paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。

682:デフォルトの名無しさん
20/10/11 19:36:20.38 eYi6TEVp.net
これは良いこと聞いた

683:デフォルトの名無しさん
20/10/11 19:48:34.94 ki6dTuuo.net
>>649 Common Lisp (SBCL, 処理系依存)
URLリンク(ideone.com)

684:デフォルトの名無しさん
20/10/11 20:05:13.72 FQjAt+Dq.net
>>672
かわいい

685:デフォルトの名無しさん
20/10/11 20:30:57.80 vt3DXswM.net
>>649 brainfuck
>+++++++[<+++++++>-]<+.--.++.--.+.-.+.-.

686:
20/10/11 23:30:32.44 A2vGg89g.net
>>614
C(C++) スレリンク(tech板:70番)

687:蟻人間
20/10/11 23:57:26.40 4cQ/GxGI.net
お題: 整数0~10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。

688:デフォルトの名無しさん
20/10/11 23:59:14.77 B+MSoWxK.net
paiza.io は、text, html, json で出力できるのか
html も、部分的なタグだけを書いても動くのか

689:蟻人間
20/10/12 00:01:01.03 rx5xRSFU.net
>>676 訂正。
(誤)各整数を横軸、回数を縦軸とする棒グラフ
(正)各整数を縦軸、回数を横軸とする棒グラフ

690:デフォルトの名無しさん
20/10/12 01:06:07.97 eqKg5iqj.net
haskell

import Data.List
import System.Random
trial records = do
x <- randomRIO (0, 1) :: IO Double
return $ (truncate $ x * 11) : records
experience = iterate (>>= trial) (return [0..10])
showrecord (x,y) = let
clsstr = id
$ reverse
$ take 2
$ ( ++ (repeat '0'))
$ reverse
$ show x
barstr = replicate y '*'
in concat [ clsstr," ", barstr,"\n"]
main = do
records <- experience !! 100
putStr $ id
$ concat
$ map showrecord
$ map (\x -> (head x, length $ tail x))
$ group
$ sort
$ records

691:デフォルトの名無しさん
20/10/12 01:14:47.03 hVCmG980.net
>>649
Kotlin
URLリンク(paiza.io)
ちょっと変わった感じにしようと思ってこうした。

692:デフォルトの名無しさん
20/10/12 08:18:41.49 fHHXzdlp.net
>>676
二項分布になるんじゃないかなあ

693:デフォルトの名無しさん
20/10/12 16:10:06.27 Wx/lfAmjI
「頭使えよ貧乏人」に思う、寝てても金入るシステムを作る人
URLリンク(www.youtube.com)
バカ不平多し★へつらい生きてるからリストラ対象
URLリンク(www.youtube.com)
勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは?
URLリンク(www.youtube.com)
リーダー達の給料が高いのは単純労働者じゃないから
URLリンク(www.youtube.com)
できません、自信がありません、無理です★ボンクラにしたのは誰?
URLリンク(www.youtube.com)
稼げない人へ★�


694:﨣、材こそ稼げない分野が分かるhttps://www.youtube.com/watch?v=x_2nSmlx3og9割の人は、ただの作業員★自学自習こそ仕事の基本https://www.youtube.com/watch?v=vIGKDmmBJcsサラリーマン、10年経てばボンクラ説https://www.youtube.com/watch?v=QdfVJnVuLlY



695:デフォルトの名無しさん
20/10/14 15:32:12.46 M1NONSBM.net
>>658 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが
1kHz の音源ファイルを使うのは違反かな?

696:蟻人間
20/10/14 17:27:12.50 TNR/wFHW.net
>>658 C/C++ with Win32
#include <windows.h>
int main(void)
{
Beep(1000, 1000);
}

697:デフォルトの名無しさん
20/10/14 17:57:41.59 qOYZdiW9.net
答え出てきても試しようがない

698:蟻人間
20/10/14 18:19:22.34 TNR/wFHW.net
>>658 Python with Windows
import winsound
winsound.Beep(1000, 1000);

699:蟻人間
20/10/14 18:24:27.45 TNR/wFHW.net
>>658 Python with Mac
import os
os.system('play -n synth 1 sin 1000');

700:デフォルトの名無しさん
20/10/14 18:36:34.21 Azmo5ss/.net
シェル経由でSoX playコマンド呼んでるだけやんけ
Pythonもmacも関係ねぇわ

701:デフォルトの名無しさん
20/10/14 19:17:28.35 Y0U/d7P+.net
OSにつく前置詞はwithじゃなくてonだろハゲ

702:デフォルトの名無しさん
20/10/14 19:30:29.09 pZU5VHHG.net
試すと音が出て煩そうだから試す気になれない。

703:蟻人間
20/10/14 19:50:02.82 TNR/wFHW.net
テレビの自主規制音と同じ音だよ。
URLリンク(ja.wikipedia.org)

704:デフォルトの名無しさん
20/10/15 00:45:55.69 BUh584nA.net
>>688 iOS じゃ、play コマンドがなさそうなんだよな。

705:デフォルトの名無しさん
20/10/15 01:18:37.79 fqrOjoDi.net
結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない

706:デフォルトの名無しさん
20/10/15 01:40:28.46 S6IC+plr.net
ヒント:出題者

707:デフォルトの名無しさん
20/10/15 11:44:28.12 cDg3UiVL.net
蟻人間さんへのお題:
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください

708:蟻人間
20/10/15 13:28:00.67 s1gNbcw/.net
>>695 Python
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")

709:蟻人間
20/10/15 13:49:36.74 IXtC9lOP.net
>>696 訂正。
(誤) while len(text) > 78:
(正) while len(text) >= 78:

710:デフォルトの名無しさん
20/10/15 14:30:46.93 cDg3UiVL.net
>>696
いろいろ違うので・・・メールのソース眺めたが良いです

711:デフォルトの名無しさん
20/10/15 19:14:52.90 QzXinxJa.net
頭の悪いお題を連投してるやつはやっぱり頭悪いんだな

712:デフォルトの名無しさん
20/10/15 19:22:03.88 cDg3UiVL.net
そんなことないと思うけどな
あまり他人の悪口言わない方が良いよ

713:デフォルトの名無しさん
20/10/15 19:28:33.00 QzXinxJa.net
くっそみたいなお題延々と出し続けてウザいじゃん

714:デフォルトの名無しさん
20/10/15 19:29:59.48 MTvivIgb.net
>>638なんかはいいと思うんだけどな
eval使えないHaskellerにはいい練習問題になってる

715:デフォルトの名無しさん
20/10/15 19:38:14.90 QzXinxJa.net
ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん
◆QZaw55cn4cの方がまだマシ

716:デフォルトの名無しさん
20/10/15 19:40:03.02 MTvivIgb.net
まぁ音出せとかカラーバー出せとかはクソお題だな

717:デフォルトの名無しさん
20/10/16 19:48:26.76 2tllxc0n.net
お題
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。

20201016 -> 5

718:デフォルトの名無しさん
20/10/16 20:25:28.88 YQH8/KbW.net
haskell
import Data.List
maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))
main = print $ maxConsOne $ 20201016
----
5

719:デフォルトの名無しさん
20/10/16 21:03:20.03 a9PKFHNt.net
>>705 ruby
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}


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