[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/28 06:24 / Filesize : 324 KB / Number-of Response : 1049
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/

511 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 09:01:28.76 ID:S2rGJ6tV.net]
>>489 Ruby
def sequence( seed, number )
srand( seed )
Array.new( number ){ rand(100) }
end

p sequence( 123, 10 ) #=> [66, 92, 98, 17, 83, 57, 86, 97, 96, 47]
p sequence( 123, 10 ) #=> [66, 92, 98, 17, 83, 57, 86, 97, 96, 47]

512 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:26:32.49 ID:KAa76evj.net]
>>486 ocaml
https://ideone.com/NzF5f2
let f =
let rec fib = function
0 -> 0 | 1 -> 1 | n -> fib (n - 1) + fib (n - 2)
and aux acc = function
-1 -> acc | m -> aux (fib m :: acc) (m - 1)
in aux []

513 名前:デフォルトの名無しさん mailto:sage [2021/12/23(木) 19:27:19.05 ID:KAa76evj.net]
>>489 ocaml
https://ideone.com/NzF5f2
let f =
let rec fib = function
0 -> 0 | 1 -> 1 | n -> fib (n - 1) + fib (n - 2)
and aux acc = function
-1 -> acc | m -> aux (fib m :: acc) (m - 1)
in aux []

514 名前:デフォルトの名無しさん [2021/12/24(金) 17:16:46.67 ID:Xt+LQVaD.net]
>>488
Juliaのhypot()でもFMA使ってますです

515 名前:デフォルトの名無しさん mailto:sage [2021/12/24(金) 22:51:57.83 ID:Y/w+woHG.net]
>>494
ただ積と和を1命令にして高速化しただけの積和
の効果だけじゃなくて
融合(fused)の効果が効く用途の話

516 名前:デフォルトの名無しさん [2021/12/25(土) 03:52:36.33 ID:62MjaTIU.net]
>>489
Kotlin
https://paiza.io/projects/xmMY6y8BGb8zlhn5QEmKvQ

何も考えずにただ R

517 名前:andom 使っただけ。 []
[ここ壊れてます]

518 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 20:25:00.12 ID:7ybeEGfH.net]
[お題] 平均が2022な素数数列

 5000以下のあい異なる素数で、加算平均がぴったり 2022 の数列を作る。
 数列の項数(要素数)を最大化する、最大はいくつか。
 最大数と数列を表示する。
 
※解答例(もちろん4以上がある)
 4
 [1747, 2099, 2113, 2129]
※実行時間は素数生成を含めて、4秒以内
 最大な数列は複数通りあると思うので、一例のみで

519 名前:デフォルトの名無しさん [2021/12/29(水) 15:58:08.20 ID:czxFIFL7.net]
答えは595個?
計算機+理詰めで595個っぽいけど



520 名前:デフォルトの名無しさん mailto:sage [2021/12/29(水) 16:38:34.79 ID:cOaqDcVM.net]
「Log4j」2.17.0にもリモートコード実行の脆弱性

521 名前:497 mailto:sage [2021/12/29(水) 20:37:12.14 ID:GN7CzEgH.net]
>>497 c++
 https://ideone.com/UBbtWd

 "素数-2022"で適当に最大化DPすれば、合計0相当の所に答えが……。
 個人的には他の復元方法を見たかった。
 pythonは遅いのであきらめた(高速化方法を知らない)

>>498
595個でした。手作業でできるレベルなら……

522 名前:デフォルトの名無しさん [2021/12/29(水) 22:36:34.62 ID:d+UhR9Ru.net]
オレがやったのは
p[n]をn番目の素数、
P[n]をn番目までの素数の集合、
s[n]をP[n]の和
a=2022として
まず素数のn元集合で平均が1番小さくなるのはP[n]でその平均値s[n]/nは単調増加だからs[n]/n>aの時元数n以上の解はない
s[596]/596>aは計算機で確認
なので595元集合で解があればそれが最大
s[595]/595<aなのでP[595]はダメ
s[596]-595a = 1205525 - 1203090 = 2435は素数ではないのでP[597]から一個消すのはダメ
s[597]-595a = 1209898 - 1203090 = 6808 はp597=4373以下の素数2459,4349の和で表すことができる
よってP[597]\{2459,4349}の和は595aとなる
完全に全自動で探索するプログラムも作れそうだけど答え出たらもういいかなと手が止まってしまった

523 名前:デフォルトの名無しさん mailto:sage [2021/12/30(木) 12:24:49.52 ID:sGmJGaqc.net]
何個取り除いたら平均2022にできるか考えると
確か74個だったけな?
JavaScriptで1秒もかかんなかったか

524 名前:502 mailto:sage [2021/12/30(木) 12:30:19.06 ID:sGmJGaqc.net]
表示時間除いたら1秒かかってないな
探索はほぼ一回でボトムまで到達して
発見された

525 名前:502 mailto:sage [2021/12/30(木) 12:38:50.05 ID:sGmJGaqc.net]
可能と不可能が極端に分かれている問題なので
事前のブランチカットだけが重要なヘンなお題w
>>352はまだ未解決

526 名前:デフォルトの名無しさん [2021/12/30(木) 20:10:02.90 ID:jVgYGZiS.net]
>>502
最大の個数を求めよやろ?

527 名前:デフォルトの名無しさん [2021/12/30(木) 20:24:56.63 ID:JL7tAErK.net]
千葉興業銀行、4月から副業解禁 県内地銀初

南都銀行、4月から行員の副業制度導入 ウェブ制作など

荘内銀、行員の副業・兼業解禁

フィデアHD、副業・兼業制度を導入

横浜銀行、10月から従業員の副業・兼業解禁

鹿児島銀、副業解禁を検討 九州FGと肥後銀は10月導入

肥後銀行が副業制度導入へ 多様な働き方認める 10月から

528 名前:デフォルトの名無しさん [2021/12/31(金) 15:04:12.13 ID:bqUePCKa.net]
>>497
haskell
https://ideone.com/GLMXRV
>>5

529 名前:01のアルゴリズムを自動化してみた
すげー簡単なところでどハマりして半日かかった
まだ解なしの場合とかの動作チェックとかしてないけどもうどうでもいい
[]
[ここ壊れてます]



530 名前:デフォルトの名無しさん [2021/12/31(金) 15:09:29.33 ID:bqUePCKa.net]
ちなみに出力形式は
(最大個数、最大素数の通し番号、最大素数までの間での素数で除外する素数のリスト)

try 67%5
→(5,8,[2,3,5])
は最初の個数8個[2,3,5,7,11,13,17,19]から[2,3,5]を抜いた[7,11,13,17,19]の5個が平均が67/5になる素数のリストの一つ
長さ
6以上はない

531 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 11:42:09.36 ID:B5P29Cqv.net]
お題:
xをゼロ以上の浮動小数点数として
2^floor(log2(x))
の計算。ただし、x == 0 の場合はゼロとする。

532 名前:デフォルトの名無しさん mailto:sage [2022/01/08(土) 18:45:49.69 ID:qvdwzZse.net]
>>481
>binary64を二つ使って、上位53ビットと下位53ビットとで106ビットの浮動小数に見立てたものが
>double-double演算です。
現在検討中ですが、binary64 中には仮数部に使用できるビット幅は 52 bits しかありません。つまりケチビット表現です
53+53 とのことですが、実際には 53 + 52 = 105 しか格納できないのではないでしょうか?

533 名前:464 mailto:sage [2022/01/08(土) 21:07:22.52 ID:Xrz2Tlot.net]
>>510
上位の±1/2ulp相当が下位になります

534 名前:デフォルトの名無しさん [2022/01/09(日) 01:28:46.61 ID:/FHAAuzb.net]
>>509
perlでワンライナー。入力は標準入力からする。

perl -MPOSIX -ne 'chomp;$n=$_?2**floor(log($_)/log(2)):0;print "$n\n"'

でも、こんなので良いの?自分ではほとんど何も考えてないんだが。
(log2()がないからlog(n)/log(2)でやるって所ぐらいしか工夫がない)

535 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 07:56:15.63 ID:9G1CcY2f.net]
>>509 C++
環境+コンパイルオプション依存 little endian, double = 64bit, long double = 128bit

double fl2( double x )
{
*( (uint64_t*) &x ) &= 0xFFF0000000000000LLU;
return x;
}

long double fl2( long double x )
{
*( (__uint128_t*) &x ) &= *( (__uint128_t*)"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF" );
return x;
}

536 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 07:59:19.16 ID:+WoQnCHD.net]
2進表記した時に先頭のビット以外を0にすればいいだけだがワンライナーで書ける気がしない

537 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 08:00:08.09 ID:+WoQnCHD.net]
先頭のビットというより「(存在するなら)0じゃない一番位の大きいビット」だな

538 名前:デフォルトの名無しさん mailto:sage [2022/01/09(日) 08:27:45.00 ID:Gu7/igUi.net]
ビットいじる方法だと、非正規化数が0に、NaNが無限大になる
そういえば、無限大やNaNはどうすればいいのだろうか

539 名前:509 mailto:sage [2022/01/09(日) 09:16:00.82 ID:42F2CcU6.net]
Python
でかい値だとうまくいかないやつ

def foo(x):
_c = x * float(2 ** 52 + 1)
_xh = c - (c - x)
_if xh > x: return(xh * 0.5)
_return(xh)

>>516
深く考えてませんでしたw



540 名前:509 mailto:sage [2022/01/09(日) 09:53:47.91 ID:42F2CcU6.net]
>>512
log2(n)をlog(n)/log(2)で近似した際の「誤差」
(ぴったり整数値になって欲しいのにそれよりも数ulp小さい値になったとか、
数ulp大きくて、ぎりぎりfloor()で切り捨てられる筈の値が1大きくなったとか)
を補償するコードが欲しい。

541 名前:デフォルトの名無しさん [2022/01/09(日) 15:38:39.37 ID:DwVfG/qv.net]
そこは性能とトレードオフになるしかない気はする
例えばfloor( log 32 / log2 ) = 5が使用上の動作だけど
log 32/log2 =4.

542 名前:9999999999978 × 10^0が返されて答えが4になってしまうのを避けるならおそらく大きすぎる場合は無視していいから
res' = floor( log x / log2 )
if (2^res'* 1.5) < x
// (1.5倍でも届かないなら不当な丸め誤差が出たと判断)
then res = res' + 1
else res = res'
とかちょっと汚い書き方するしかない希ガス
[]
[ここ壊れてます]

543 名前:デフォルトの名無しさん [2022/01/09(日) 21:50:51.38 ID:sZC3oXej.net]
なんか変なこと書いた

res' = floor( log x / log2 )
if 2^res' < x
then res = res' + 1
else res = res'

やな
res'の算出で丸め誤差は-1までと仮定して補正する
しかしもちろんlog(x)とか2^nハード的にFPUとかで高速にやってくれてしかも整数演算は誤差なしでやってくれる前提
この辺は高級言語プログラマレベルの話でなんとかなるもんではない
やるならアセンブリ言語レベルでやるしかない

544 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 00:03:40.12 ID:gj6cLR2i.net]
>>509 C
https://ideone.com/5kDuzA
非正規化数、NaN、無限大とかはそのまま返すようにした
やり方は>>513と変わらない

545 名前:509 mailto:sage [2022/01/10(月) 00:53:57.15 ID:MGxmK4tZ.net]
いまどきのコンパイラなら、frexp()やldexp()をいい塩梅に最適化してくれるのだろうか?

from math import frexp, ldexp
def foo(x):
_m, e = frexp(x)
_if m == 0: return 0.0
_return ldexp(0.5, e)

546 名前:512 [2022/01/10(月) 01:47:47.54 ID:av6tewvz.net]
>>509
またPerlでワンライナー。

perl -ne 'chomp;if($_<=0){print"0\n"}else{for(my$i=0;;$i++){if((1<<$i)>$_){print 1<<($i-1),"\n";last}}}'

今度は計算している内容から考えて結果が同じになるようにした。浮動小数点演算をしていない。
また整数値が何ビットであるかも考慮しておらず、Perlの整数が32bitだった場合は2^32以上の値を入力されたら多分うまく動かない。
当然64bitだったら2^64以上の値の入力で多分うまく動かない。

547 名前:509 mailto:sage [2022/01/10(月) 02:23:50.20 ID:MGxmK4tZ.net]
>>522の修正
from math import frexp, ldexp
def foo(x): return 0.0 if x == 0 else ldexp(0.5, frexp(x)[1])

548 名前:デフォルトの名無しさん [2022/01/10(月) 03:27:40.49 ID:av6tewvz.net]
>>509
またまたPerlでワンライナー。

perl -MPOSIX -ne 'chomp;if($_==0.0){print"0\n"}else{print ldexp(0.5,(frexp($_))[1]),"\n"}'

これは>>524の真似(ていうかやってること同じ)。

549 名前:デフォルトの名無しさん mailto:sage [2022/01/10(月) 12:43:53.01 ID:SgLm6fjp.net]
>>511
それは答えになっていないかと
質問を変えます。下位側の指数部も意味を持つようにインプリメントするべきでしょうか?



550 名前:464 mailto:sage [2022/01/11(火) 02:38:04.94 ID:i2HiBm5J.net]
>>526
先人の実装例だと、
上位 + 下位 = double doubleの数値
という事になってますね(上位側の指数が決まると、下位側の指数も決まる)。
tps://na-inet.jp/na/qd_ja.pdf

勿論、そう実装しないのもあり。

551 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 03:06:24.10 ID:Y9TTYX77.net]
>>527
となると、
>>510
>binary64 中には仮数部に使用できるビット幅は 52 bits しかありません

よって下位側指数部無視なら 53bit + 52 bit = 105bit の実装となりますが?
下位側指数部有意ならば、下位側にもケチビットを適用できますが、今度は仮数部が 106 ビットとはいいきれなくなりますね(数によって変わる)

552 名前:デフォルトの名無しさん mailto:sage [2022/01/11(火) 03:08:13.70 ID:Y9TTYX77.net]
>>527
失礼 pdf が紹介されていることを見落としていました、精査します、紹介ありがとうございます

553 名前:デフォルトの名無しさん [2022/01/30(日) 18:02:46.10 ID:Np8aVX2s.net]
お題: 1より小さい実数を1以上2より下にせよ

< 0.123
> 1.23

< 0.0000123
> 1.23

554 名前:デフォルトの名無しさん mailto:sage [2022/01/30(日) 18:25:00.85 ID:A8jov ]
[ここ壊れてます]

555 名前:ols.net mailto: >>530

x / 10^[log10(x)]
[]
[ここ壊れてます]

556 名前:蟻人間 mailto:sage [2022/01/30(日) 20:39:55.64 ID:DZg7owi9.net]
お題: 質量0.2 kgの直方体の物体が摩擦のある水平な床の上にある。
物体の初速を右向きの0.5 [m/s]とすると、物体は転倒することなく底面が床に接したまま、約x秒後に自然停止した。xより垂直抗力F[N]と動摩擦係数kを求めよ。
重力加速度を 9.8 [m/s^2]とする。

557 名前:蟻人間 mailto:sage [2022/01/30(日) 20:58:19.92 ID:DZg7owi9.net]
お題(HTML/JavaScript): ユーザがGoogleから訪問した場合は、3秒間ブラウザを停止させるようにせよ。

558 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 07:45:34.60 ID:/+irRzAS.net]
>>530
負の数や2以上の数は?

559 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 16:02:38.13 ID:zoPPBktH.net]
>>534
・・・!



560 名前:デフォルトの名無しさん [2022/02/01(火) 18:02:38.08 ID:zoPPBktH.net]
お題: -1 < n < 1 の実数nを-10 < m < 10の実数m(ただし1桁目が0を除く)に桁上げせよ(>>530の改良)

< 0.123
> 1.23

< -0.00056
> -5.6

561 名前:デフォルトの名無しさん mailto:sage [2022/02/01(火) 20:01:29.11 ID:TQ6+L4kb.net]
負だったらabsolute取るだけのことじゃん

562 名前:デフォルトの名無しさん [2022/02/01(火) 23:48:43.79 ID:/+irRzAS.net]
>>536
perl

ワンライナー。以下はbashのコマンドラインから実行して試した。
入力は標準入力で一つづつ改行する。

perl -ne 'chomp;$n=$_;while(int(abs($n))<1){$n*=10}print "$n\n";'

やってることは見ての通り殆ど何も考えず10倍し続けるだけ。

563 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 17:49:01.62 ID:QCKFV9kK.net]
もうすぐ22日、今年は "22/2/22"といつもより多め
[お題] 偶数ゾロ目

URLのページに都道府県別の人口が載っている。
 URL: https://ideone.com/2w86hj
 今回使用するのは、2020/10のデータ

 同じ県は一回のみで、異なる県を 22 県選らぶ。
 (単純な選び方は全部で NCR(47, 22) = 約14.8兆通り)
 整数A,Bが与えられる(1<=A<=B<=1億)
 選択した22県の人口合計が A以上B以下となるのは何通りか?

1) 44444444 44444444 --> 214209
2) 22222222 44444444 --> ?
3) 44444444 66666666 --> ?

※上の三問を全部で5秒程度で
 想定解はあるが、もっとスマートな方法がありそう
 「またか」と思った人、以前の問題とは想定解はかなり違う

564 名前:デフォルトの名無しさん [2022/02/23(水) 19:08:44.10 ID:jKeAH0Dy.net]
>>536
やぱしn==0は除外?

565 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 00:35:12.16 ID:5B3hmiET.net]
>>540
一桁目が0は除外してね

566 名前:デフォルトの名無しさん [2022/02/24(木) 08:38:30.17 ID:GiducjAN.net]
難しい、こんなの小学生が解けるのか?

今年の中学受験の算数で一番の良問がこれらしい [976717553]
https://hayabusa9.5ch.net/test/read.cgi/news/1645558073/

567 名前:539 mailto:sage [2022/02/25(金) 17:25:00.82 ID:STd/IFZD.net]
>>539
旬だと思って出題

https://ideone.com/2w86hj 下部に追加

半分全列挙 + 尺取り法

早い言語でしかできない解答例でした

568 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:14:08.69 ID:RZ7O9d2K.net]
>>543

時間取れなくてやれてないが季節感あるネタ好き

569 名前:デフォルトの名無しさん [2022/02/26(土) 19:41:18.44 ID:4VT1Qgxn.net]
haskellでやったらやっぱり5秒はきつか



570 名前:チた []
[ここ壊れてます]

571 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 02:34:25.32 ID:VdMMR1Xg.net]
お題: RustかGoでバイナリーサーチを実装してください

572 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 12:30:16.47 ID:nN0Ys+dW.net]
お題: トライ木を使ってサジェスト機能を実装してください

$ prog
> w
world
would
will
wish

辞書は任意の大きさとする
入力は英語、または日本語とする

573 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:32:45.03 ID:Ycqbgo6j.net]
>>545
なんかHaskellってGHCのオプションに-O2とか指定すれば結構早くなった記憶がある
あとListじゃなくVector使うとか

574 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:41:12.56 ID:sy393qRd.net]
お題 バッタの大冒険
 a(1),a(2),⋯,a(n) を相異なる正の整数とし、M を n-1個の正の整数からなる集合と
する。また、M は s=a(1)+a(2)+⋯+a(n) を含まない。数直線の 0 の地点にいるバッタが
数直線の正の向きに n 回ジャンプする。 n 回のジャンプの距離は a(1),a(2),⋯,a(n) の並べ替えである。このとき並べ替えをうまく選べば、バッタがM の要素に対応するn-1点に一度も着地しないようにできることを証明せよ。

↑数学オリンピックの問題
もちろん証明はどうでもよろしい
お題は(ジャンプの幅のリスト、禁止点のリスト)から禁止点を交わしていく飛ぶ順を見つけるプログラムを実装せよです

入力
([3,5,8],[5,10])
出力
[8,5,3] #着地するのは8,13,16で禁止点5,10をかわしている

入力
([5,6,8,10,13,15],[2,18,24,29,45])
出力
[15,13,10,8,6,5] #着地するのは15,28,38,46,51で全ての禁止点をかわしている

入力
([3,26,30,32,36,44,53,62,68,82],[36,40,59,79,92,126,178,233,394])
出力
[82,68,62,53,44,36,32,30,26,3] #同文

575 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:13:54.18 ID:yn4DTgXG.net]
2番目の例着地するのは
15,28,38,46,52,57
ですた

576 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 20:44:30.68 ID:0IfoPmot.net]
>>549
は数学の問題としても面白いけどココはプログラムのお題スレなのでアルゴリズムそのもの考えるのは嫌な人のためにアルゴリズムひとつ紹介しておきます
以下の探索で線形オーダーで解を見つけられます
自分で考えたい人は無視してください

以下aを最大ジャンプとします
a=a(n)としておく

(A)一回目を最大ジャンプで飛んだとして最初の禁止点に届かないかギリギリ届くとき

一回目のジャンプが最大ジャンプしたと想定して残りのn-1回ジャンプで最初の禁止点を無視したn-2個の禁止点を交わしたジャンプ順b(1)...b(n-1)を作る
この順番でとんて行って最初に最初の禁止点をi回目に超えたとする
解のジャンプとして
b(1),b(2),...,b(i-1),a,b(i),...,b(n)
とすると全ての禁止点をかわしている

(B) 一回目を最大ジャンプで飛んだとすると最初の禁止点を超えて、しかも禁止点以外に着地できるとき

一回目のジャンプが最大ジャンプしたと想定して残りのn-1回ジャンプで最初の禁止点を無視したn-2個の禁止点を交わしたジャンプ順b(1)...b(n-1)を作る
解のジャンプとして
a,b(1),...,b(n-1)
とすると全ての禁止点をかわしている

(C) 一回目を最大ジャンプで飛んだとすると最初の禁止点を超えるが別の禁止点に着地してしまうとき

この状況だとa(1)〜a(n-1)のいずれかのジャンプa(i)でa(i)もa+a(i)のどちらも禁止点でないものが取れる( (∵) 全てのi:1〜n-1でa(i)かa+a(i)のどちらかが禁止点とするとこれだけでn-1個の禁止点全部尽くされてしまうけど、この中には最初の仮定である“一回目aで飛んだら禁止点”はこの中には出てこないので矛盾 )
それをa(n-1)としよう
最小の2回をa(n-1),a(n)と飛んだとしてこの時点で最初の禁止点と最初a(n)だと踏んでしまう禁止点の2点は超えているので残りの禁止点はn-3個以下しか残ってない
そこでa(1)〜a(n-2)

577 名前:をうまく並べ替えれば全部かわすことができる []
[ここ壊れてます]

578 名前:デフォルトの名無しさん [2022/05/03(火) 15:12:22.98 ID:FP7f4hyR.net]
問題がよくわからなくて解く以前の所で停止。そしてやる気消滅。

579 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 23:10:33.84 ID:JwGzWANE.net]
説明不足で申し訳ない
問題文は数オリの紹介サイトからそのままコピペしてきたのでわかりにくかったかもしれない

1番最初の例

([3,5,8],[5,10])

だとバッタは最初x=0の地点にいて+3,+5,+8のジャンプでx=16の地点に行こうとしている
しかしx=5,x=10の地点は着地禁止地点で着地できない
飛び方は全部で6通りあるがその中から禁止地点に着地しないものを選んで下さいという問題
3回くらいなら総当たりで答え出せるけどジャンプ10回禁止地点9ヶ所だと全数検索すると10!通り必要になって実用にならない
どうしますかというテーマだけどもちろん数学オリンピックの問題なので中々自分で答え出すのは難しい
でここは数学板ではないので同じ数オリサイトにあった解答を転記して「こんなアルゴリズムが知られているけどアルゴリズムをインプリメントできますか」がお題です



580 名前:デフォルトの名無しさん [2022/05/04(水) 00:16:07 ID:0lMETj8q.net]
お題: C/C++でスレッドセーフなstrtok関数を作れ
設計は各自で考えること

581 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 08:22:49.31 ID:WTZHV9SY.net]
政府公認のスカトロサークルだって!?じゅるり

582 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 02:33:11.33 ID:FeY8iOM4.net]
高度IT人材、富士通は最大年収3500万円へ

AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ

【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材

来年度から副業解禁 人材多様化へ―大同生命次期社長

第一生命HD、副業解禁 約1万5000人対象

第一生命HD、副業解禁 1万5000人対象―大手生保初

IHI、国内8000人の副業解禁 重厚長大企業も転機

IHI、社外兼業を解禁 社内副業もルール化

583 名前:デフォルトの名無しさん [2022/05/05(木) 16:49:02.33 ID:SGcHNlDo.net]
>>554
C言語

https://paiza.io/projects/xS5GP9DAU6KzhDsM6x7M6g

strtok_r() を strtok_r2() の名前にして自分で実装した。
strsep() も paiza.io のCのライブラリには何故かなかったので strsep2() にして自分で実装した。

584 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 08:28:38.45 ID:zQqHPRjb.net]
思い付きでお題考えてみた
検証してないんだけどどう?

お題: ランダムな部屋を移動する最短距離を求める

行列がある
任意の横幅Wと高さHで表現される部屋がランダムに1 <= N <= 5個生成される
この部屋を部屋内の座標からランダムに選択した別の部屋の部屋内の座標まで通路を作る
通路の要素は斜めには生成されず横と縦に生成される
通路はランダムに1つの部屋から0 <= R <= 3生成される

各部屋を各通路で繋げ任意の部屋Aと任意の部屋Bを選択する
このときAからBまでの最短経路を求めよ

585 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 10:03:08.65 ID:u3pPN9f9.net]
ランダムの部分いる?

586 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 19:40:13.01 ID:RtJ1FIjP.net]
日本語がよくわからんから数式で書いてくれ

587 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 19:57:58.11 ID:dPHs0KwZ.net]
数式だと答えになりそうだから図で書いてくれ

588 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 17:53:19 ID:UVEhLnaE.net]
さらに、閑古鳥をよびよせるか

[お題] 多倍

589 名前:キでは無理!?
整数 S, T が与えられる。(1 <= S <= T <= 400万)
S以上T以下の(連続する)整数の最小公倍数(LCM)をもとめる
答えは, 1000000007(10億7)の余りで出力

1) 6 8 --> 168
6,7,8 の最小公倍数、LCM(6, 7)= 42 --> LCM(42, 8)= 168
2) 10 30 --> 89546497
剰余前は、2329089562800
3) 2567890 3456789 --> ?
4) 1 4000000 --> ?
[]
[ここ壊れてます]



590 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 21:03:46.76 ID:f4mJcXLG.net]
>>562

Haskell

https://ideone.com/dPbmse

591 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 21:16:43.90 ID:bqW40Z5X.net]
√T以下の素数列挙
各数を素因数分解して各素数の指数の最大を求める
10億7の剰余で上の乗算を行う

592 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 22:51:31.74 ID:vGEyxbeO.net]
>>562 C
https://ideone.com/IWOE9a

593 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 19:19:40.97 ID:nM/DB7wD.net]
>>562
https://ideone.com/O9PQbN

想定解としては、(他の人同様)
 求める最小公倍数を素因数分解した形に作るイメージ
 400万以下の"素数及び素数べき乗"は、高々28.3万件。
 S以上T以下で、素数べき乗が割り切れるかどうかチェックしている。
 (方法は T/素数べき乗 > (S-1)/素数べき乗 ならあると, O(1)判定)
 ボトルネックは素数を求める部分なので、手抜きしている。

余談)
・4)を多倍長で計算すると173万桁だった(一分程度ででた)
・10^9+7 ではなく、下9桁を出力だと、4)は 0になる(5^9が範囲にあるから)

594 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 10:06:17.68 ID:GRk1+wVC.net]
age

595 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:47:14 ID:GJ0Vg4bO.net]
お題: 循環リストを検出するプログラムを書け

596 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:58:00.80 ID:il671KyI.net]
循環リスト
の定義を書いてください

597 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 02:10:30.75 ID:1mXsd8mZ.net]
お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ

123 -> INT
1,234 -> INT
1.23 -> FLOAT
a123 -> INVALID
12abc -> INVALID
1.23.435 -> INVALID

598 名前:デフォルトの名無しさん [2022/07/02(土) 04:54:46.54 ID:5fwFwNtd.net]
>>570
Kotlin

自分ではほとんど何も考えていない脱力感溢れるプログラム

https://paiza.io/projects/EK5QmNc2f4MgmmMLM3FcrQ

599 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 05:51:46.20 ID:y+j5RBoo.net]
>>570 Ruby

f = -> s {
case s
when /\A(?:0|[1-9]\d*)\z|\A(?:[1-9]\d{0,2})(?:,\d{3})*\z/
:INT
when /\A(?:0?|[1-9]\d*)\.\d+\z/
:FLOAT
else
:INVALID
end
}

%w[123 1,234 1.23 a123 12abc 1.23.435 .142857 1. 0 01 1,234,567 1234,567].each{|s|
puts '%s -> %s' % [s, f[s]]
}

# =>

123 -> INT
1,234 -> INT
1.23 -> FLOAT
a123 -> INVALID
12abc -> INVALID
1.23.435 -> INVALID
.142857 -> FLOAT
1. -> INVALID
0 -> INT
01 -> INVALID
1,234,567 -> INT
1234,567 -> INVALID



600 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 05:58:59.35 ID:At3W7bIA.net]
>>570
こう言うのは仕様をちゃんと提示してよ
123.
123.0
12,34
はどうなればいいのか

601 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 08:08:58.00 ID:syeRaQWQ.net]
そんな文句みたいな言い方するほどか?
他の問題に比べたらケースちゃんと提示してる方だし
そういうのは想定してないってなんとなくわかるだろ
競プロならちゃんと定義必要だろうけど

602 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 08:09:44.82 ID:syeRaQWQ.net]
123.0は確かに気になるけど

603 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:41:42.13 ID:At3W7bIA.net]
>>574
> そういうのは想定してないってなんとなくわかるだろ
お題なんだから想定しろよ
でないとそのケースはそうじゃなくて

604 名前:こうすべきとか言う奴が出てきて荒れる元だし []
[ここ壊れてます]

605 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:58:04.16 ID:dKfad4Z0.net]
はい!

606 名前:デフォルトの名無しさん [2022/07/02(土) 09:58:41.88 ID:COZLaCzb.net]
123.0はfloatだろ常考

607 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 12:04:36.48 ID:oDFjP9XJ.net]
黙って実装して自分なりの仕様を提示するテストケースを追加して提出した>>572の勝利

608 名前:ハノン mailto:sage [2022/07/02(土) 14:55:56.14 ID:w21fdpYM.net]
>>579
激しく同意

609 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 15:40:39.43 ID:ZFJdClOp.net]
>>579
クールだよな



610 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 16:54:51.10 ID:RqXE55Ja.net]
>>570
こういうアホがソフト仕様を書くと悲惨

611 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 17:49:49.50 ID:Vxz6zO/I.net]
久々に出題者現れたかと思ったらフルボッコでかわいそう

612 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 18:03:20.65 ID:+K04BJMF.net]
もっと気楽にやれよ
普段ゴミみたいな案件で意を汲み取れず怒られ理不尽な思いしてる底辺コーダーが叩き行為で鬱憤晴らししたいんだろうけどさw
仕様の隙間をどうするかをこういったところで一般共通認識得るのは有意義
その議論を「荒れる」と捉えるのは違うでしょ

613 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 20:54:40.02 ID:1mXsd8mZ.net]
お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ
version 1.0.1

123 -> INT
1,234 -> INT
1.23 -> FLOAT
a123 -> INVALID
12abc -> INVALID
1.23.435 -> INVALID
.142857 -> FLOAT
1. -> INVALID
0 -> INT
01 -> INVALID
1,234,567 -> INT
1234,567 -> INVALID
123.0 -> FLOAT

614 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 23:37:34.43 ID:12WH0HiU.net]
>>568
https://ideone.com/WdXv5B

615 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 06:43:46.91 ID:/5k6Ls0P.net]
.142857がOKで1.がNG
なんか違和感
どの言語の流儀?

具体例だけに頼らないで
定義っぽく書けない?

----
[整数部]、[整数部].[小数部]、.[小数部] のいずれかの形
[整数部] : 0123456789の列1文字以上、もしくはこれを3桁ずつ,で区切った形
2桁以上の場合は先頭は0ではない
[小数部] : 0123456789の列1文字以上
....

こんな感じ

616 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 07:10:28.62 ID:3/zKVKew.net]
0.DDD を .DDD と表記するのは欧米では情報系に限らず日常よく見られること
CSSもperlも昔のrubyも対応してたんじゃなかったかな

617 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 09:01:07.02 ID:udoKn6Zg.net]
1. がNGなのは?
どこの流儀?

618 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 09:17:25.30 ID:aLgpTdvv.net]
>>584
> 仕様の隙間をどうするかをこういったところで一般共通認識得るのは有意義
だからその一般認識がないから揉めるって話
既に違和感と言い出す奴とか欧米ガーとか流儀ガーとか言い出してるだろ
エディタの宗教戦争と同じで正解なんてないんだからお題を作った奴が決めないと収拾つかんよ

619 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 09:24:18.29 ID:3/zKVKew.net]
>>590
1から10まで教えてもらえないとなんもできないのかよ
エディタ宗教戦争を例に出してるけどあんなのにガチに捉えてるバカはお前くらいだ



620 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 09:34:46.48 ID:/kuq8Z/3.net]
お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ
BNFは↓とする

INT: digit+

621 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 09:37:29.23 ID:/kuq8Z/3.net]
お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ
BNFは↓とする
version 1.0.2

int: digits
float: digits ('.' digits)?
digits: digit+
digit: [0-9]+

622 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 10:08:31.69 ID:JHbRyeE7.net]
>>591
ガチに捉えるもなにも今でもやってるだろw

623 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 10:15:42.92 ID:JHbRyeE7.net]
>>593
カンマとかはなくなってるけど、仕様変更ですか?
あと
digits: [0-9]+
にしてdigitをやめるか
digit: [0-9]
にした方がいいかと思いますよ

624 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:27:53.93 ID:/kuq8Z/3.net]
>>595

お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ
BNFは↓とする
version 1.0.3

int: comma_

625 名前:digit
float: comma_digit '.' digit* | '.' digit*
comma_digit: digit_123 { ( ','? digit_3 ) }*
digit_3: digit digit digit
digit_123: digit digit? digit?
digit: [0-9]

どや?完璧だろこのBNF
これで文句ないな
[]
[ここ壊れてます]

626 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:41:01.89 ID:E32cFzvb.net]
>>596
"1."、"01"、"1234,567" が INVALID になりませんし "." だけでも FLOAT になるのはどうかと思いますが...

627 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:54:46.68 ID:/kuq8Z/3.net]
>>597
お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ
変換できない場合はINVALIDと出力せよ
BNFは↓とする
version 1.0.4

int: comma_digit
float: comma_digit '.' digit_09+ | '.' digit_09+
comma_digit: digit_123 { ( ','? digit_3 ) }*
digit_3: digit_09 digit_09 digit_09
digit_123: digit_19 digit_09? digit_09?
digit_19: [1-9]
digit_09: [0-9]

どや?

628 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 14:30:14.53 ID:+vJDgzA0.net]
勉強になる

629 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 15:35:40.90 ID:VBJi0e3g.net]
>>598
指摘された箇所すら直せないとかどう見ても向いてないからやめたら?
> "1234,567" が INVALID になりませんし



630 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 15:38:27.96 ID:7UQlj4nA.net]
ハズレ上司感

631 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 15:41:49.46 ID:yV0MWMu9.net]
>>570 ocaml
https://ideone.com/j9z2um

632 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:15:01.49 ID:/kuq8Z/3.net]
>>600
めんどくせ~な~
お前やれよ

633 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:24:52.83 ID:/kuq8Z/3.net]
>>600
version 1.0.5

int: comma_digit | normal_digit
float: ( comma_digit | normal_digit ) '.' digit_09+ | '.' digit_09+
comma_digit: digit_123 { ',' digit_3 }*
normal_digit: digit_19 digit_09*
digit_3: digit_09 digit_09 digit_09
digit_123: digit_19 digit_09? digit_09?
digit_19: [1-9]
digit_09: [0-9]

ていうか1234,567にはならんはずだぞ

634 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:30:18.21 ID:/kuq8Z/3.net]
>>600
version 1.0.6

int: comma_digit | normal_digit
float: ( comma_digit | normal_digit ) '.' digit_09+ | '.' digit_09+
comma_digit: digit_123 { ',' digit_3 }*
normal_digit: ( digit_19 digit_09+ ) | digit_09
digit_3: digit_09 digit_09 digit_09
digit_123: digit_19 digit_09? digit_09?
digit_19: [1-9]
digit_09: [0-9]

おら!完璧だろ!

635 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 17:25:11.12 ID:bGSSCSEx.net]
>>604
> ていうか1234,567にはならんはずだぞ
しれっと変えといてさすがにそれは恥ずかしいな
>>598> comma_digit: digit_123 { ( ','? digit_3 ) }*
>> 604 > comma_digit: digit_123 { ',' digit_3 }*

>>605
まあ、よしとしてやろう

636 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 20:20:25.60 ID:H80x+Ni5.net]
問題を解かずに出題の形式美に必死になるなんて、このスレ的にどうなのよ?

637 名前:蟻人間 mailto:sage [2022/07/03(日) 21:46:41.57 ID:wwKaul6r.net]
char buf[64];
fgets(buf, 64, stdin);
char *endptr;
strtol(buf, &endptr, 10);
if (*endptr == 0) {
puts("INT");
return;
}
strtod(buf, &endptr);
if (*endptr == 0) {
puts("FLOAT");
return;
}
puts("INVALID");

638 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 22:09:22.65 ID:hLP3lYAM.net]
>>570 dart
https://ideone.com/hT8xrN

639 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 20:02:47.21 ID:N6PR1KyM.net]
お題
非負整数xが16進数表記で与えられる。xのビットu~lの範囲を逆順にした値を出力せよ。

[入力]
x u l

[例]
0x80 7 0
=> 0x1 (8bit全体をreverse)

0xABCD 11 4
=> 0xA3DD (真ん中8bitをreverse, 0xBC=0b10111100 -> 0b00111101=0x3D)

0x2 99 1
=> 0x8000000000000000000000000 (2の99乗)



640 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 22:06:04.39 ID:ju1TxHLl.net]
>>610 Ruby

f = -> (*a) {_, e, s = a.map(&:to_i); '0x%X' % a[0].hex.digits(2).concat(Array.new(e, 0)).tap{_1[s..e] = _1[s..e].reverse}.reverse.reduce{|s, i| 2 * s + i}}

['0x80 7 0', '0xABCD 11 4', '0x2 99 1'].each{puts '%s -> %s' % [_1, f[*_1.split]]}

# =>
0x80 7 0 -> 0x1
0xABCD 11 4 -> 0xA3DD
0x2 99 1 -> 0x8000000000000000000000000

641 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 09:28:21.31 ID:72Wr/ML/.net]
>>610 octave
https://ideone.com/4MacE3

642 名前:デフォルトの名無しさん [2022/07/09(土) 21:45:11.70 ID:A5P06KhI.net]
>>610
Kotlin
https://paiza.io/projects/hUR6DylxGsrJBWKI-gmaKg

BigInteger 使ったので、ビット数がかなり多くても大丈夫。

643 名前:デフォルトの名無しさん [2022/07/24(日) 20:03:09.74 ID:RqwYi ]
[ここ壊れてます]

644 名前:vmm.net mailto: あげ []
[ここ壊れてます]

645 名前:デフォルトの名無しさん [2022/07/26(火) 20:19:27.06 ID:wEdk200U.net]
お題:数字をミラーリングせよ

入力 < 123
出力 > 123321

reverse系メソッドを使わなかったら加点とする

646 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 20:33:23.78 ID:gSFNKY8C.net]
>>615 Ruby
$><<(a=gets.scan /./)*'';$><<$a while$a=a.pop

-*- input -*-
123

-*- output -*-
123321

647 名前:デフォルトの名無しさん [2022/07/26(火) 22:30:32.74 ID:LilaKoZu.net]
>>615
Java

static String mirror(String src) {
 var dest = new char[src.length() * 2];
 var a = src.toCharArray();
 for (var i = 0; i < a.length; i++) {
  dest[i] = a[i];
  dest[dest.length - 1 - i] = a[i];
 }
 return new String(dest);
}

648 名前:アリ人間 mailto:sage [2022/07/26(火) 22:36:21.87 ID:SFGiBpCo.net]
>>615
派生お題: 文字列処理を使わずに与えられた整数を回文にせよ。

649 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 23:38:05.85 ID:ceC8PDvA.net]
>>615 octave
https://ideone.com/Aa9KII
f = @(a) a([1:end end:-1:1]);
f('123')



650 名前:デフォルトの名無しさん mailto:sage [2022/07/26(火) 23:41:29.56 ID:DU0tXUgh.net]
魔法の計算式とか無いん?

651 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 00:03:13.42 ID:MKIa5t3g.net]
俺も考えてみたけど調べても回分数のシグマ使わない一般式は無いみたいだな

652 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 00:09:31.00 ID:C/59UMec.net]
>>615 JavaScript
const mirror = (n, c, ...args) => c === null ? (answer => 0 <= n && answer <= Number.MAX_SAFE_INTEGER ? answer : RangeError(`${n} is invalid.`))(args.reduce((s, d) => s * 10 + d, n)) : c == undefined ? mirror(Number.parseInt(n), Number.parseInt(n), ...args) : mirror(n, c < 10 ? null : Math.floor(c / 10), ...args, c % 10);

// test
for (const [n] of [[-1, 'x'], [0, 'o'], [1, 'o'], [12345678, 'o'], [123456789, 'x'], [123.456, 'o (123321)']]) {
const answer = mirror(n);
console[answer instanceof RangeError ? 'error' : 'log'](answer);
}

653 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 01:46:36.04 ID:7bF+Pf0F.net]
octave綺麗

654 名前:96 mailto:sage [2022/08/02(火) 01:11:31.65 ID:6KqVNIq0.net]
>>615 Perl5

use feature qw{say signatures}; no warnings 'experimental';

sub f($i, @a) { $i and @a ? (f(@a), $i) : $i }

@a = split'',123;
say @a, f(@a);



実行結果
~ $ perl 20_615_mirror.pl
123321

655 名前:96 mailto:sage [2022/08/02(火) 01:20:34.60 ID:6KqVNIq0.net]
>>615 Perl5 (リスト処理版)

@a = split '', 123;
print @a, map{@a[$#a - $_]} 0..$#a;


実行結果
~ $ perl 20_615_mirror_list.pl
123321

656 名前:デフォルトの名無しさん mailto:sage [2022/08/02(火) 22:22:16.97 ID:9ppQHDnA.net]
>>615 ocaml
https://ideone.com/FFhxw9
let f s =
let csc c s = Char.escaped c ^ s ^ Char.escaped c in
let rec aux t = function 0 -> t | n -> aux (csc s.[n - 1] t) (n - 1)
in aux "" @@ String.length s
let () = print_endline @@ f "123"

657 名前:デフォルトの名無しさん [2022/08/02(火) 23:32:00 ID:49BZsXJW.net]
>>615
Kotlin

https://paiza.io/projects/2Pe625DoTzToywf3zB2lvA

わざわざ Iterator を実装して実現。

658 名前:デフォルトの名無しさん mailto:sage [2022/08/03(水) 00:34:26.60 ID:xChmGTXr.net]
>>615 ocaml
https://ideone.com/6Y

659 名前:qGis
let f s = s ^ String.init (String.length s) (fun i -> s.[String.length s - 1 - i])
let () = print_endline @@ f "123"
[]
[ここ壊れてます]



660 名前:デフォルトの名無しさん [2022/08/05(金) 11:38:46.19 ID:1Af6TgAi.net]
>>615
おもしれーことやってんじゃん
じゃあperlの再帰する正規表現で行くかな
https://paiza.io/projects/dxhWJaJSrcZdAFpJKe9uvQ

661 名前:デフォルトの名無しさん [2022/08/05(金) 13:16:58.45 ID:6eafuacR.net]
gnuWin32を基本使っています。
で行のソートなのですが、各行の末尾から逆向きの文字でソートって出来ませんか
たとえば
aaaaCB
bbbBA
cccccDB
とかあったとき、これを
bbbBA
aaaaCB
cccccDB
としたいのです。
もし難しそうであれば、各行を反転、つまり
abcde

edcba
とする方法でもいいです。

662 名前:デフォルトの名無しさん [2022/08/05(金) 13:43:08.90 ID:Vk8oFh91.net]
>>630
Java
Arrays.sort(a, (left, right) -> {
 var l = left.length() - 1;
 var r = right.length() - 1;

 while (l > -1 && r > -1) {
  var c = Character.compare(left.charAt(l), right.charAt(r));

  if (c != 0) {
   return c;
  }

  l--;
  r--;
 }

 if (l > -1) {
  return 1;
 }

 if (r > -1) {
  return -1;
 }

 return 0;
});

663 名前:96 mailto:sage [2022/08/05(金) 19:36:20 ID:Rv34IsoP.net]
>>630 Perl5が使える環境であれば…

~ $ cat 20_630_isort.pl
chomp (@a = <>);
sub f {join '', reverse split'', $_[0]}
print "$_\n" for sort{f($a) cmp f($b)} @a;

~ $ cat input.txt
aaaaCB
bbbBA
cccccDB

~ $ perl 20_630_isort.pl < input.txt > output.txt

~ $ cat output.txt
bbbBA
aaaaCB
cccccDB

664 名前:デフォルトの名無しさん mailto:sage [2022/08/05(金) 20:52:38 ID:C4r7F682.net]
>>630 ruby
https://ideone.com/lQz0m2
f = ->(a) {a.sort_by &:reverse}
p f.(%w(aaaaCB bbbBA cccccDB))

>>630 octave
https://ideone.com/AUCxr3
function i = sorti(varargin), [~, i] = sort(varargin{:}); end
f = @(a) a(sorti(cellfun(@(s) {flip(s)}, a)));
f({'aaaaCB' 'bbbBA' 'cccccDB'})

665 名前:96 mailto:sage [2022/08/05(金) 22:43:00.57 ID:Rv34IsoP.net]
>>632
しまった、これだとsortの計算量 N・log N に応じた回数、比較のための文字列逆転 sub f の呼出しが起き、
データの行数が多いと遅いな

666 名前:96 mailto:sage [2022/08/06(土) 00:54:37.07 ID:pYJx8bVL.net]
>>630 Perl5、計算量の抑制に配慮したバージョンと実行例

$ cat 20_630_isort2.pl
print $_->[0] for sort{$a->[1] cmp $b->[1]} map{[$_, scalar reverse $_]} <>;

$ cat input.txt
aaaaCB
bbbBA
cccccDB

$ perl 20_630_isort2.pl input.txt > output.txt

$ cat output.txt
bbbBA
aaaaCB
cccccDB

667 名前:96 mailto:sage [2022/08/06(土) 01:06:37.87 ID:pYJx8bVL.net]
>>635
これ各行の行末の改行まで含めてreverseしてsortキーとするので、
もし入力ファイルの最後の行に改行が欠けていて無かったらsort結果がおかしくなる。
そのような万が一の場合に対してもrubstさも持たすならこうか

chomp(@a = <>);
print "$$_[0]\n" for sort{$$a[1] cmp $$b[1]} map{[$_, scalar reverse]} @a;

668 名前:デフォルトの名無しさん [2022/08/06(土) 05:59:59.26 ID:UcInr7RU.net]
>>630
Kotlin
https://paiza.io/projects/bK5T2CQgxXwvVlcjKvw-dA

ただ処理を連結しただけだな。コマンドラインでパイプ使ったみたいな感じ。

669 名前:デフォルトの名無しさん [2022/08/06(土) 06:11:51.22 ID:UcInr7RU.net]
>>630
Linux 等の UNIX 系 OS で rev コマンドと sort コマンドが使える環境ならシェルのコマンドラインからこう入力するとできる。
(入力文字列は input.txt に入ってい



670 名前:驍ニして)。

rev input.txt | sort | rev

Windows の環境でやる場合は互換性のあるコマンドを利用するか、または Cygwin や WSL や WSL2 等の UNIX 互換環境の中でコマンドラインから実行できる。
[]
[ここ壊れてます]

671 名前:96 mailto:sage [2022/08/06(土) 08:20:40.77 ID:pYJx8bVL.net]
>>610 Perl5

use Bit::Vector;
$v = Bit::Vector->new(101);
for (<DATA>) {
 ($h, $s, $e) = /0x(\S+) (\S+) (\S+)/;
 $v->from_Hex("$h");
 $v->Interval_Reverse($e, $s);
 ($r) = $v->to_Hex() =~ /0+(\w+)/;
 print "$_ => 0x$r\n";
}
__DATA__
0x80 7 0
0xABCD 11 4
0x2 99 1

※インデントを見易くするため全角スペースに置換しています


実行結果

$ perl 20_610_rebitfld.pl
0x80 7 0
=> 0x1
0xABCD 11 4
=> 0xA3DD
0x2 99 1
=> 0x8000000000000000000000000

672 名前:デフォルトの名無しさん [2022/08/06(土) 10:15:53 ID:8a3zeEyr.net]
>>638
Linux環境ではrevというのがあるのですね
gnuWin32は全部揃ってないのですね。なんだかなあ
rev以外でもLinuxにあってgnuWin32にはないのがあるのかな
rev、自分で作ろうかな

673 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 11:17:00.60 ID:y9e1BfKB.net]
>>630 ocaml
https://ideone.com/zdWLHX
let rev s = String.init (String.length s) (fun i -> s.[String.length s - 1 - i])
let (<<) f g x = f (g x)
let f = List.map (fun (r, s) -> s) << List.sort compare << List.map (fun s -> (rev s, s))
let () = List.iter print_endline @@ f ["aaaaCB"; "bbbBA"; "cccccDB"];

674 名前:96 mailto:sage [2022/08/06(土) 15:02:55.35 ID:ddLJv/Kp.net]
>>640
gnuWin32 用の rev.exe が欲しいなら、書き起こさなくともutil-linux-ng パッケージに入っていると思うが…

util-linux-ng for Windows
gnuwin32.sourceforge.net/packages/util-linux-ng.htm

Util-Linux contains miscellaneous utilities:
col: filter reverse line feeds from input
colcrt: filter nroff output for CRT previewing
colrm: remove columns from a file
ddate: converts Gregorian dates to Discordian dates
getopt: parse command options (enhanced)
hexdump: ascii, decimal, hexadecimal, octal dump
line: read one line
rename: rename files
rev: reverse lines of a file or files ←
tailf: follow the growth of a log file
whereis: locate the binary, source, and manual page files for a command

作りたいというなら類似のsampleソースはゴマンと転がっとるし

C reverse string rev.c strrev - Google 検索
https://www.google.com/search?q=C+reverse+string+rev.c+strrev

C program to reverse a string | Programming Simplified
https://www.programmingsimplified.com/c-program-reverse-string

C_69 C Program to Reverse a String | with strrev() and without strrev() function - YouTube
https://www.youtube.com/watch?v=530jWnBMD2M

… 好きにしんしゃい

675 名前:96 mailto:sage [2022/08/06(土) 15:16:53.43 ID:ddLJv/Kp.net]
Cygwin などに使われている util-linux パッケージのオリジナルな現行のソースは

GitHub - util-linux/util-linux
https://github.com/util-linux/util-linux

かな。そのうち rev.c のソースは

util-linux/rev.c at master ・ util-linux/util-linux ・ GitHub
https://github.com/util-linux/util-linux/blob/master/text-utils/rev.c

ちな util-linux パッケージは2006年に fork した

676 名前:ニき名前に -ng をつけて util-linux-ng になったが
2010年に util-linux に名前を戻している。
cf.)
util-linux - Wikipedia
https://en.wikipedia.org/wiki/Util-linux

ついつい、調べ物をしてしまった…orz
[]
[ここ壊れてます]

677 名前:デフォルトの名無しさん [2022/08/06(土) 17:24:05.41 ID:8a3zeEyr.net]
>>642
ありがとう。そんなとこにあったのか

678 名前:デフォルトの名無しさん [2022/08/07(日) 09:51:45.46 ID:UY2OKMya.net]
>>642
linuxのrevでやってみました。ところが、全角日本語はやはりダメですね
なので、AHK

679 名前:デフォルトの名無しさん [2022/08/07(日) 09:52:47.25 ID:UY2OKMya.net]
>>642
linuxのrevでやってみました。ところが、全角日本語はやはりダメですね
なので、AHKで自作で作ってみました
rev input.txt | sort | rev
で問題なく動きました



680 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 16:26:03 ID:BSSIjy3s.net]
>>645
環境変数 LANG の設定の問題とか?
こっちでは日本語での rev できたよ。
CentOS 7 で bash で LANG=ja_JP.UTF-8 の状態。そこに Windows から TeraTerm で ssh ログインして試したらできた。

$ echo $LANG
ja_JP.UTF-8
$ ( echo 見城徹 ; echo 箕輪厚介 ; echo ガーシー ; echo 木原誠二官房副長官 ) | rev
徹城見
介厚輪箕
ーシーガ
官長副房官二誠原木
$

681 名前:デフォルトの名無しさん [2022/08/07(日) 18:30:22.20 ID:C65TbvUb.net]
お題
0~2がランダムに8個入力されます
8個の数字を:で結合して出力してください
0が連続する場合は連続する0を::に置換してください
0の連続を::に置換できるのは1回のみです
0の連続が複数存在する場合は長い方を置換してください
長さが同じ場合は先頭の方を置換してください
1個の0は置換してはいけません


0, 0, 0, 1, 2, 1, 2, 2 → ::1:2:1:2:2
2, 1, 2, 0, 0, 0, 1, 1 → 2:1:2::1:1
1, 1, 2, 2, 1, 0, 0, 0 → 1:1:2:2:1::
2, 0, 0, 2, 0, 0, 0, 2 → 2:0:0:2::2
1, 0, 0, 1, 2, 0, 0, 2 → 1::1:2:0:0:2
0, 1, 2, 0, 1, 1, 0, 2 → 0:1:2:0:1:1:0:2

682 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 19:28:27.32 ID:MpscsJR5.net]
>>648 Ruby

f = -> s { x = s.gsub(', ', ?:); y = x.scan(/0(?::0)+/).max&.count(?0) || 0; x.sub(/:?0(:0){#{y - 1}}+:?/, '::') }


[

'0, 0, 0, 1, 2, 1, 2, 2',

'2, 1, 2, 0, 0, 0, 1, 1',

'1, 1, 2, 2, 1, 0, 0, 0',

'2, 0, 0, 2, 0, 0, 0, 2',

'1, 0, 0, 1, 2, 0, 0, 2',

'0, 1, 2, 0, 1, 1, 0, 2'

].each{ |s| puts '%s -> %s' % [s, f[s]] }


# =>
0, 0, 0, 1, 2, 1, 2, 2 -> ::1:2:1:2:2
2, 1, 2, 0, 0, 0, 1, 1 -> 2:1:2::1:1
1, 1, 2, 2, 1, 0, 0, 0 -> 1:1:2:2:1::
2, 0, 0, 2, 0, 0, 0, 2 -> 2:0:0:2::2
1, 0, 0, 1, 2, 0, 0, 2 -> 1::1:2:0:0:2
0, 1, 2, 0, 1, 1, 0, 2 -> 0:1:2:0:1:1:0:2

683 名前:デフォルトの名無しさん [2022/08/07(日) 19:57:31.19 ID:xO94aiKw.net]
>>648
perl5
https://paiza.io/projects/5qVZ3qjP3YDPyVVywRVEEQ

684 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 20:01:42.93 ID:H+tq1Ypt.net]
正規表現のreplace一個で行けそうと思ったけど最長マッチみたいなの無理なのか

685 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 20:16:36.94 ID:MpscsJR5.net]
拡張正規表現の中にはチューリング完全なものもあるけどね

686 名前:デフォルトの名無しさん [2022/08/07(日) 20:17:47.43 ID:xO94aiKw.net]
そうか
単純に s/0{$n}/::/;
を連射して増やしていくだけでいいんだな
最後に成功したのを返す感じで

687 名前:デフォルトの名無しさん [2022/08/07(日) 20:58:47.87 ID:xO94aiKw.net]
>>648
perl5 # sub squash0 を>653 で書き替えた
https://paiza.io/projects/pNwwe9yNB_dczFaRbV3ZeA

688 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 22:19:54.37 ID:UmcKtz1r.net]
>>648 octave
https://ideone.com/3Udpgi
function s = f(a)
c = di

689 名前:ff(find([1 diff(a) 1]));
e = cumsum(c);
b = e - c + 1;
n = arrayfun(@(i) a(i), e);
[~, i] = max(c.*(n == 0));
s = arrayfun(@(n) {int2str(n)}, a);
if (1 < c(i))
s(b(i):e(i)) = ':';
end
s = regexprep(strjoin(s, ':'), ':::+', '::');
end
[]
[ここ壊れてます]



690 名前:655 mailto:sage [2022/08/07(日) 23:28:54.94 ID:UmcKtz1r.net]
結果同じだけど若干の整理可能だった

n = arrayfun(@(i) a(i), e);
[~, i] = max(c.*(n == 0));

[~, i] = max(c.*(a(e) == 0));

691 名前:96 [2022/08/08(月) 01:54:39.48 ID:Fkng8CYp.net]
>>648 Perl5

use List::Util 'max';
for (<DATA>) {
 %h = map{length($_) => $_} /(,?0(?:,0)+,?)/g;
 $n = max keys %h;
 chomp($i = $_);
 s/$h{$n}/::/ if $n;
 s/,/:/g;
 print "$i => $_";
}
__DATA__
0,0,0,1,2,1,2,2
2,1,2,0,0,0,1,1
1,1,2,2,1,0,0,0
2,0,0,2,0,0,0,2
1,0,0,1,2,0,0,2
0,1,2,0,1,1,0,2

※見易くするためインデントを全角スペースに置換してあります。


実行結果
$ perl 20_648.pl
0,0,0,1,2,1,2,2 => ::1:2:1:2:2
2,1,2,0,0,0,1,1 => 2:1:2::1:1
1,1,2,2,1,0,0,0 => 1:1:2:2:1::
2,0,0,2,0,0,0,2 => 2:0:0:2::2
1,0,0,1,2,0,0,2 => 1::1:2:0:0:2
0,1,2,0,1,1,0,2 => 0:1:2:0:1:1:0:2

692 名前:デフォルトの名無しさん [2022/08/08(月) 18:20:49.05 ID:911TGIju.net]
>>648
Common Lisp https://ideone.com/p9qSmC
JavaScript https://ideone.com/2pXZdF

693 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 20:35:58.72 ID:xa8ST9bT.net]
>>648 ocaml
https://ideone.com/j7yye2

694 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 21:08:31.81 ID:xa8ST9bT.net]
>>648 octave
https://ideone.com/Uyr9cV
・[1, 1, 1, 1, 1, 1, 1, 1]のとき正しくなかったのを修正

695 名前:デフォルトの名無しさん [2022/08/11(木) 15:24:25.24 ID:/k5aJ7yS.net]
>>648
Kotlin
https://paiza.io/projects/NFrxhMlgOO7dQdW20u_-kw

できたことはできたが、なんかもっと良いやり方がありそうな気もする。

696 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>648
敢えて正規表現使わずKotlinで。ややこしかったわ
https://ideone.com/JZcPdU

697 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>661
別の解き方が見れておもろい

698 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 22:42:32.18 ID:lr7eXs7b.net]
>>648 java
https://ideone.com/f5yjN8

699 名前:661 [2022/08/12(金) 00:33:44.04 ID:DNG+vRxr.net]
全部0の時に :: にならなかったので>>661はちょっと修正した。



700 名前:デフォルトの名無しさん [2022/08/13(土) 14:28:26.51 ID:JbrEzaSr.net]
お題
1~37からランダムに重複なく7つの数を選び出して小さい順にソートしてください
それを5つ出力してください


[2, 4, 9, 13, 20, 29, 36]
[1, 4, 12, 13, 15, 20, 33]
[1, 3, 5, 7, 11, 20, 24]
[3, 7, 8, 21, 27, 33, 34]
[1, 2, 14, 23, 26, 35, 36]

701 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 14:31:07.91 ID:JPhXlbrB.net]
>>666 Ruby
[*1..37].sample(7).sort

# => [4, 8, 15, 20, 24, 26, 37]

702 名前:デフォルトの名無しさん [2022/08/13(土) 18:53:16.03 ID:jyB6kjuE.net]
>>666 Common Lisp
https://ideone.com/NMCh3O

703 名前:デフォルトの名無しさん [2022/08/13(土) 19:08:33.35 ID:jyB6kjuE.net]
>>668
投稿後一部訂正、n の範囲チェックを追加

負数は弾く
(check-type n (integer 0 *))

上限はシーケンスの長さ
(loop repeat n

(loop (min n (length sequence))

704 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 19:54:15.55 ID:JW3gpbYe.net]
>>666 octave
https://ideone.com/Iml4xq
f = @() sort(randperm(37, 7));
cell2mat(arrayfun(@(~) {f()}, (1:5)'))

705 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 00:39:46.54 ID:YzvfyuVN.net]
>>666
Kotlin script

repeat(5) { println((1..37).toList().shuffled().slice(0..6).sorted()) }


実行例

[6, 7, 9, 10, 16, 2

706 名前:2, 27]
[2, 8, 9, 11, 16, 32, 33]
[11, 13, 18, 25, 26, 30, 34]
[2, 3, 12, 14, 20, 27, 37]
[7, 13, 14, 19, 27, 30, 35]
[]
[ここ壊れてます]

707 名前:671 mailto:sage [2022/08/14(日) 00:41:50.08 ID:YzvfyuVN.net]
>>671はこれでも同じだった (toList() 抜き)。

repeat(5) { println((1..37).shuffled().slice(0..6).sorted()) }

708 名前:96 mailto:sage [2022/08/14(日) 01:45:55.09 ID:jl8HjsTF.net]
>>666 Perl5

use List::Util 'shuffle';
@a = 1..37;
$" = ', ';
print "@{[(shuffle@a)[0..6]]}\n"
 for 1..5;


実行結果

$ perl 20_666_shuffle1-37x5.pl
3, 2, 10, 25, 9, 23, 27
35, 6, 30, 8, 37, 29, 36
20, 29, 19, 18, 37, 21, 23
12, 30, 29, 7, 3, 31, 26
34, 12, 1, 14, 28, 2, 21

709 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 01:54:16.92 ID:v+rcxIed.net]
>>673
ソートされてないじゃん



710 名前:96 mailto:sage [2022/08/14(日) 01:59:26.66 ID:jl8HjsTF.net]
>>666 Perl5、>>673 は sort するの忘れてた…orz


use List::Util 'shuffle';
@a = 1..37;
$" = ', ';
print "@{[sort{$a <=> $b} ((shuffle @a)[0..6])]}\n" for 1..5;


実行結果

$ perl 20_666_shuffle1-37x5.pl
5, 9, 22, 28, 30, 32, 36
1, 2, 7, 21, 23, 26, 36
6, 14, 15, 16, 19, 26, 28
13, 14, 15, 16, 30, 35, 37
1, 3, 10, 20, 27, 29, 30

711 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:35:56.93 ID:JoIEy2rI.net]
>>666 ocaml
https://ideone.com/3UpGQV
let seq b e =
let rec aux acc n =
if n < b then acc else aux (n :: acc) (pred n)
in aux [] e
let (<<) f g x = f (g x)
let take n =
let rec aux acc n = function [] -> acc | x :: xs ->
if n <= 0 then acc else aux (x :: acc) (pred n) xs
in List.rev << aux [] n
let shuffle =
List.map snd << List.sort compare << List.map (fun x -> (Random.bits (), x))
let string_of_ints =
Printf.sprintf "[%s]" << String.concat "; " << List.map string_of_int
let f () = string_of_ints @@ List.sort compare @@ take 7 @@ shuffle @@ seq 1 37
let () = Random.self_init ();
List.iter (print_endline << f << ignore) @@ seq 1 5

712 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>666 c
https://ideone.com/EHr86S

713 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 21:45:18.38 ID:b/j10zkL.net]
(1) aとbからなる文字列があるときその中で部分文字列bbaが最初に完成する文字数を求める
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3

(2) ちょうど50文字のaとbからなる全ての並びの文字列の内
50文字目(最後)にbbaが完成するのは何通りあるか?

長さ3文字で3文字目に完成するのはbbaのひとつだけ
長さ4文字で4文字目に完成するのはabbaとbbbaの二通り

714 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>678 Ruby
(1)
%w[ab aaa bba bbba babbab bbabbaa].each do |s|
i = s =~ /bba\K/
puts '%s -> %d' % [s, i ? i + 3 : 0]
end

# =>
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3

(2)
f = -> (n, a=[0, 0, 1]) {return a[n] if n<a.size; a<<f[n-1,a]+f[n-2,a]+1;a.last}

p f[49] # => 12586269024

715 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:30:32.35 ID:z6QFcjeU.net]
行列の掛け算を実装せよ
二次正方行列 A=((1 -2) (2 3)), B = ((-2 1)(3 -1)) について
AB, BA を求めよ
可能であれば二次正方行列以外の行列についても対応せよ
実装の細かい点については出題者は指定しないので良きに計らって結構。

<お願い>
行列の積において結合則成立の証明を教えてください

716 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:43:04.52 ID:0XTzAkvO.net]
>>678 c
https://ideone.com/hlf3c3
・(1)(2)ともに自信なし(たぶんお題の意味わかってない)

717 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:49:01.35 ID:gf0q/4T2.net]
>>680 Ruby Matrixクラス不使用
def product(a, b)


718 名前:[
[a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]],
[a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1]],
]
end

p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]])

# => [[-8, 3], [5, -1]]

# 夏休みの宿題は自分でやりましょう
[]
[ここ壊れてます]

719 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:51:54.64 ID:7JC7m3TJ.net]
>>682
>二次正方行列以外の行列についても対応せよ



720 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 23:05:21.92 ID:gf0q/4T2.net]
>>680 >>683
def product(a, b)
m = a.first.size
c = Array.new(a.size){[]}
a.size.times do |i|
b.first.size.times do |j|
c[j][i] = m.times.map{|k| a[k][i] * b[j][k]}.sum
end
end
c
end

p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]])
# => [[0, 7], [1, -9]]

p product([[-2, 1], [3, -1]], [[1, -2], [2, 3]])
# => [[-8, 3], [5, -1]]

721 名前:デフォルトの名無しさん [2022/08/14(日) 23:09:42.44 ID:ct8M+Uij.net]
NxMのデータをどう定義するか だけの問題だな
毎回悩む 下は後悔してるタイプ
(defparameter *position-IO*
(loop
for input in '(7 8 9
4 5 6
1 2 3)
for pos below 9
collect (cons input pos)))

722 名前:デフォルトの名無しさん [2022/08/15(月) 00:42:19.42 ID:PTEGgn5Q.net]
>>679
どういう頭してたらその法則性に気づくん???

723 名前:デフォルトの名無しさん [2022/08/15(月) 01:31:39.90 ID:b/MTJSvV.net]
>>678
Kotlin script

(1)
listOf("ab","aaa","bba","bbba","babbab","bbabbaa").forEach { print("$it ->"); it.indexOf("bba").let { if (it >= 0) println(it + 3) else println(0) } }

実行時の出力

ab ->0
aaa ->0
bba ->3
bbba ->4
babbab ->5
bbabbaa ->3

(2)
println(1L shl (50 - 3))

実行時の出力

140737488355328

724 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 01:56:11.12 ID:RG8mAl+Q.net]
(2)
出題の仕方が間違ってた
最後に唯一のbbaが現れるパターンと書くべきだった
自分の中ではこのことしか考えてなかったから
>>679さんは汲んでくれたようで、早さにも驚いたけど

725 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 09:19:59.19 ID:jWRkxbjN.net]
なるほど, 再帰的に構成すればいいのか
aから始まる時: a + x[n-1]
baから始まる時: ba + x[n-2]
bbから始まる時: bb...bba

726 名前:デフォルトの名無しさん [2022/08/15(月) 09:43:22.06 ID:90U51paY.net]
>>686
そういう漸化式は普通に受験で良くでてくる

727 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:00:11.92 ID:ioAOBwsA.net]
>>680
https://ideone.com/umJbre
https://ja.wikibooks.org/wiki/%E7%B7%9A%E5%9E%8B%E4%BB%A3%E6%95%B0%E5%AD%A6/%E8%A1%8C%E5%88%97%E3%81%A8%E8%A1%8C%E5%88%97%E5%BC%8F/%E7%AC%AC%E4%B8%89%E9%A1%9E/%E8%A1%8C%E5%88%97%E3%81%AE%E7%A9%8D#matrix's-associativity

728 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:16:58.66 ID:RVV7PTHo.net]
>>691 c
https://ideone.com/47VxwF
・二次元でintのみ

729 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:19:53.25 ID:RVV7PTHo.net]
>>680
https://ideone.com/47VxwF
・二次元でintのみ



730 名前:693 mailto:sage [2022/08/16(火) 16:05:44.79 ID:y+iYdbLW.net]
>>680 c
https://ideone.com/lWljpL
>>693から若干の整理
・インデントも修正

731 名前:デフォルトの名無しさん [2022/08/16(火) 19:29:50.25 ID:6LZk+vGC.net]
>>688
え?言ってる意味がわからない。どういうこと?

732 名前:デフォルトの名無しさん [2022/08/16(火) 20:01:21.15 ID:xodQRDI1.net]
bba+gge=momo

733 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>695
末尾以外にbbaが現れる文字列を除外するってことじゃろう

734 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:15:34.85 ID:dhC56AkH.net]
bbaが最後に達成されるんじゃなければ2^47計算するだけのなん

735 名前:フ面白みもない問題になるからそこで気付く人は気づくよね []
[ここ壊れてます]

736 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 23:04:49.04 ID:mbmTGUKF.net]
ついでに50文字で今度は最後がbbaじゃなくて
bbbのときとbabのときのそれぞれのパターン数を求めるって問題

737 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 01:28:19.97 ID:0f27vmNE.net]
>>697
なるほど。やっと意味がわかった。

738 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:04:15.12 ID:UFtMHmKs.net]
お題:分割されている顔文字を結合して表示してください
1つの顔文字は半角4字で構成。左右対称。2字ずつ半分に分割されてシャッフルされている
出力する顔文字の順番は自由とする

入力 < ^)(^
出力 > (^^)

入力 < ^)(-(^-)(vv)
出力 > (^^)(--)(vv)

739 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:59:27.47 ID:2ZT38iyw.net]
お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」をそれぞれ表示する方法を示してください
便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。
0 1 2 3 4 5 6 7 8
...
...............80
左から1列目の9マスは



740 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 15:10:22.08 ID:2ZT38iyw.net]
途中送信してしまった

お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」のマスをそれぞれ表示する方法を示してください
※便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。

0 1 2 3 4 5 6 7 8
...
...............80

例えば左から1列目の9マスは
[0 9 18 27 36 45 54 63 72]
となります。
等差を利用して数字だけを表示するものは不可です。
マスに何の値が入っていても表示できるようにしてください。

741 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 21:47:42.92 ID:GkJOOerG.net]
>>703 c
https://ideone.com/lBKsc9

742 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 23:34:27.13 ID:yTY/OYLu.net]
>>701
(><)

743 名前:デフォルトの名無しさん [2022/08/18(木) 02:15:12.90 ID:KCyiWPRI.net]
>>703
perl5
https://paiza.io/projects/amKhSF3cnp1Ny5-2yWLO4g

744 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 03:07:13.35 ID:dBOjwuYR.net]
>>701 JavaScript
> ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r))
[ '(^^)', '(--)(^^)(vv)', '(><)' ]

745 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>701 Ruby
f = -> str do
loop do
str.sub!(/(.)\)(.*)\(\1/, '(\1\1)\2') ||
str.sub!(/\((.)(.+)\1\)/, '(\1\1)\2') ||
(break str)
end
end

%w[ ^)(^ ^)(-(^-)(vv) (-(^-)^)].each do |s|
puts '%s -> %s' % [s, f[s.b]]
end

# =>
^)(^ -> (^^)
^)(-(^-)(vv) -> (^^)(--)(vv)
(-(^-)^) -> (--)(^^)

746 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>703 Ruby
PLACEHOLDER = [*0..80]

field = 9.times.reduce([]) do |s, y|
s << 9.times.map do |x|
PLACEHOLDER[9 * y + x]
end
end

puts field.map{|r| r.map{'%02d' % _1}.join}

# =>
000102030405060708
091011121314151617
181920212223242526
272829303132333435
363738394041424344
454647484950515253
545556575859606162
636465666768697071
727374757677787980

747 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>703 お題をよく読んでいなかった >>709の続き
row = -> (n, field) {field[n]}
column = -> (n, field) {field.map{_1[n]}}
block = -> (n, field) {9.times.map{n * 3 + n / 3 * 18 + _1 + _1 / 3 * 6}.map{field.flatten[_1]}}

puts row[7, field].join(?,)
# => 63,64,65,66,6

748 名前:7,68,69,70,71

puts column[7, field].join($/)
# =>
7
16
25
34
43
52
61
70
79

puts block[7, field].each_slice(3).map{_1.join(?,)}.join($/)
# =>
57,58,59
66,67,68
75,76,77
[]
[ここ壊れてます]

749 名前:704 mailto:sage [2022/08/18(木) 23:38:15.48 ID:YBxy/c4L.net]
>>703 c
https://ideone.com/0yXRih
>>704から若干の整理



750 名前:デフォルトの名無しさん [2022/08/19(金) 23:42:01.44 ID:GkIv/1vJ.net]
お題
<user>:<group>の数
<user>:<group>
<user>:<point>の数
<user>:<point>
が入力されます

<group>ごとに<point>を集計して<group>順に
<group>:<point>を出力してください

例)
// 入力
6
UserE:GroupC
UserD:GroupA
UserB:GroupC
UserA:GroupC
UserC:GroupB
UserF:GroupB
6
UserB:3
UserF:2
UserD:5
UserC:13
UserE:11
UserA:7

// 出力
GroupA:5
GroupB:15
GroupC:21

751 名前:デフォルトの名無しさん [2022/08/19(金) 23:58:05.14 ID:zRvvDV0W.net]
なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?

752 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:02:54.24 ID:xIohwuBb.net]
>>712 Ruby
g, p = str.split(/^\d+$/)[1, 2].map{_1.strip.each_line.map{|s| s.chomp.split(?:)}.to_h}
puts g.reduce(Hash.new(0)){|h, (k, v)| h[v] += p[k].to_i; h}.sort.map{_1.join(?:)}

# =>
GroupA:5
GroupB:15
GroupC:21

753 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 07:49:15.49 ID:/HXUcxOA.net]
// >>712 Node.js
import readline from 'node:readline';
const rl = readline.createInterface({input: process.stdin, output: process.stdout});
const all = [/* {user, group, point}, ... */];
let usergroup = false;
rl.on('line', line => {
line = line.trim();
if (line) {
if (/^\d+$/.test(line)) {
usergroup = !usergroup;
} else if (usergroup) {
const {groups} = line.match(/^(?<user>[^:]+):(?<group>[^:]+)$/);
all.push(groups);
} else {
const {groups: {user, point}} = line.match(/^(?<user>[^:]+):(?<point>\d+)$/);
Object.defineProperty(all.find(_ => _.user == user), 'point', {value: Number(point), enumerable: true});
}
} else {
rl.close();
}
});
rl.on('close', () => {
for (const [group, point] of Object.entries(all.reduce((gp, {group, point}) => {gp[group] = (gp[group] ?? 0) + point; return gp;}, {})).sort(([a], [b]) => a < b ? -1 : 1)) {
console.log(`${group}:${point}`);
}
});

754 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 17:09:35.31 ID:tvd+mgyM.net]
>>712 c
https://ideone.com/Edol3U

755 名前:デフォルトの名無しさん [2022/08/20(土) 21:26:59.76 ID:myFbjTal.net]
>>712
C#
https://paiza.io/projects/IAgPLTHFbJ-HmDcLHFrNYA

756 名前:デフォルトの名無しさん [2022/08/20(土) 22:24:09.90 ID:5JSGWnVi.net]
>>703ってこれじゃだめなのかな
7行で書ける
https://ideone.com/eKTMZr

757 名前:96 mailto:sage [2022/08/21(日) 02:42:00.00 ID:P6BPpVvp.net]
>>712 Perl5

use feature qw{say signatures}; no warnings "experimental::signatures";
sub ($n, @a) {
 $h{$$_[0]} = $$_[1] for map{[/(\w+)/g]} @_[1..$n];
 sub ($m, @) {
  $g{$h{$$_[0]}} += $$_[1] for map{[/(\w+)/g]} @_[1..$m];
 }->(@a[$n..$#a]);
 say "$_:$g{$_}" for sort keys %g;
}->(<>);

※見易くするためインデントを全角スペースに置換してあります。


実行結果:
https://ideone.com/GxsRSY

758 名前:デフォルトの名無しさん [2022/08/21(日) 06:03:07.44 ID:V5T4kdVo.net]
>>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?

759 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 07:03:57.35 ID:3JIuIXQv.net]
<group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし



760 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 08:49:24.60 ID:0ZMA3aWJ.net]
>>713
実際にここでも数字を使っている例が出て来てるからわかると思うけど
競プロなんかではよくあるフォーマットだよ

761 名前:デフォルトの名無しさん [2022/08/21(日) 18:07:19.66 ID:ecIOs+Jg.net]
>>666
C#
https://paiza.io/projects/sT_SLT3n0NNab0a-ZD7IHQ

762 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:28:38.88 ID:Y2TZP89X.net]
お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする

763 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:45:13.28 ID:ui07Fbeq.net]
>>724 Ruby
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit}

# =>
Hello, World!

764 名前:デフォルトの名無しさん [2022/08/21(日) 18:49:48.17 ID:ecIOs+Jg.net]
>>701
C#
https://paiza.io/projects/D1PZTVPBn2qnksCQnwYQmw?language=csharp

765 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:51:27.42 ID:ui07Fbeq.net]
>>725 訂正
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}

Thread.new{exit!}


# => H

766 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>703
C#
https://paiza.io/projects/HzrEP1l1vX4Z3JUqmHSUwg

767 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>724 c
https://ideone.com/xaMOR7

768 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>648
C#
https://paiza.io/projects/2cxaJzBNbukA4-EolW07Cw

769 名前:729 mailto:sage [2022/08/22(月) 19:20:01.17 ID:7CA3B9Dd.net]
>>724 c
https://ideone.com/k8R7TU
>>729 どう見ても正常終了です。本当にありがとうございました。
・子プロセスの強制終了を見届けてから自分自身も強制終了



770 名前:デフォルトの名無しさん [2022/08/25(木) 15:38:14.81 ID:bJn+zm7R.net]
>>724
その強制終了って人間が Ctrl + C を押すなどしてやるという意味?
間に合わずに全部出力し切った場合は GAME OVER 出すということ?

771 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 15:52:23.73 ID:BfuXla1W.net]
>>732
強制終了→exit(0)などでプログラム的に終了させる
GAME OVER→お題の達成失敗

772 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 16:09:53.36 ID:6j74uL6b.net]
54.144.0.0/12といったどこかで見たことあるような形式の文字列を入力すると
^(?!(54.144.|54.145.|54.146.|54.147.|54.148.|54.149.|54.150.|54.151.|54.152.|54.153.|54.154.|54.155.|54.156.|54.157.|54.158.|54.159.))
といったいい感じの文字列が標準出力に出力されるやつ、誰か作れますか?
例の他にも54.208.0.0/13 54.216.0.0/14 54.192.0.0/12 54.160.0.0/11 54.220.0.0/15といった似た感じの文字列が入力され
やはりいい感じに処理された別の文字列が出力されます

できればライセンスはゼロ条項BSDライセンスでお願いします

773 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
ま、まあ、作れなくはないかな…

774 名前:デフォルトの名無しさん [2022/08/25(木) 18:48:07.98 ID:0xws5w3m.net]
フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ
本人以外は

775 名前:デフォルトの名無しさん [2022/08/25(木) 20:40:48.98 ID:0z7AphVM.net]
>>734
Java
https://paiza.io/projects/Fot4E7hZfbJ95P_hSbI3NQ

776 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 21:10:16.35 ID:/BGaqBqg.net]
>>734 JavaScript
function _734(ip_range) {
const result = [];
const as = ip_range.split(/\D/).map(_ => Number(_));
const m = as.at(-1);
const q = Math.floor(m / 8

777 名前:);
const r = m % 8;
const e = 8 - r;
const l = as[q].toString(2).padStart(8, '0').slice(0, r);
for (let i = 0, sup = 2 ** e; i < sup; i++) {
as.splice(q, 1, Number.parseInt(l + i.toString(2).padStart(e, '0'), 2));
result.push(as.slice(0, q + 1));
}
return '^(?!(' + result.map(_ => `${_.join('\\.')}${q < 3 ? '\\.' : ''}`).join('|') + '))';
}
[]
[ここ壊れてます]

778 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 22:00:47.00 ID:JPPVgQ9Y.net]
beer licenseでよければ書くが

779 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:09:37.08 ID:NIKxWs5c.net]
割とすぐに出来るもんなんですね
どちらも実用上問題なさそうな、いい感じの実行結果です

>738は最新の実行環境に心当たりがなかったので確認に手間どりましたが
Chromeのコンソールから実行して確認できました
(cscriptで実行しようとしたらat()に対応してなかったので)

いやー勉強になります、ありがとう



780 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:49:22.52 ID:0rX9u4fb.net]
>>740
スレタイも読めないアホは消えろ

781 名前:96 mailto:sage [2022/08/26(金) 05:19:52.33 ID:GgZblxs6.net]
>>740
人をタダで利用してない?

782 名前:デフォルトの名無しさん [2022/08/26(金) 11:51:47.61 ID:d54FvNjc.net]
>>733
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。

783 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 14:32:15.45 ID:71YXfdUw.net]
>>743
その実装でもいいよ
題意はいかにHello, World!出力中にプログラムを終了させるかだから
sleep挟んでもいい

784 名前:デフォルトの名無しさん [2022/08/26(金) 18:44:07.03 ID:NQ4mbOjq.net]
>>733
#!/usr/bin/env sh
cat <<"EOL" | perl -ne '/(Hello, World)(?:[!])/ ? die " $1 got failed." : print'
> foo
> bar
> baz
> Hello, World
> Hello, World
> Hello, World!
> you can't see me, right?
> EOL
foo
bar
baz
Hello, World
Hello, World
Hello, World got failed. at -e line 1, <> line 6.

785 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:28:18.28 ID:NIKxWs5c.net]
はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが

もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます

786 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:31:39.94 ID:NIKxWs5c.net]
ついでというかなんというか>734の自分のお題に対する自己回答です(色々と手抜きしてありますが)
#!/usr/bin/ksh
function proc {
typeset A B C D E F N M L I
IFS='.','/' read A B C D E <<XYZ
$1
XYZ
let N="(${E}+8)/8" let M="8-(${E}%8)"
if [ $N -eq 5 ]; then echo -n "${A}.${B}.${C}.${D}"; return; fi
set -A BASE dummy "" "${A}." "${A}.${B}." "${A}.${B}.${C}."
set dummy $A $B $C $D; shift $N; F=$1; let L="$F-1+(1<<$M)"
for I in `seq $F $L`; do echo -n "|${BASE[$N]}${I}."; done; }
if [ $# -eq 0 ]; then echo "need CIDR/s"; exit 65; fi
set -A CIDR dummy $@;
echo -n "^(?!dummy"; for I in `seq 1 $#`; do proc ${CIDR[$I]}; done; echo ")"
exit 0

787 名前:96 mailto:sage [2022/08/29(月) 02:30:43.54 ID:QAZMtAov.net]
>>734 Perl5

for (<>) {
 print;
 @a = /(\d+)/g;
 $w = pop @a;

 $o = ($w - 1) >> 3;
 $m = $w - $o * 8;
 $n = 2**(8 - $m);

 $l = join '.', @a[0..$o-1];
 $l .= '.' if '' ne $l;

 $h = $a[$o] & (255 << (8 - $m));

 $r = $o < 3 ? '.' : '';
 @b = map{$l . ($h + $_) . $r} 0..($n - 1);

 print '^(?!(' . join('|', @b) . "))\n";
 print "\n";
}

※見易くするためインデントを全角スペースに置換しています。


実行例:
https://ideone.com/VBJMMo

788 名前:96 mailto:sage [2022/08/29(月) 02:55:16.14 ID:QAZMtAov.net]
>>748
128.0.0.0/1 の結果が変
バグ入りだ、ゴメンチャイ

789 名前:96 mailto:sage [2022/08/29(月) 03:01:45.22 ID:QAZMtAov.net]
あれ?いいのかな?
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ



790 名前:デフォルトの名無しさん [2022/09/09(金) 22:29:09.28 ID:zwPgoVui.net]
お題
長方形の1辺の長さのリストと正方形の面積のリストが入力されます

それぞれの正方形の面積について
長方形の1辺の長さのリストから2つを選んで掛け合わせ長方形の面積を計算します
長方形の面積が正方形の面積以上でかつ最小の面積となる組み合わせを探して出力してください
見つからなかった場合はerrorを出力してください

(例)
// 1辺の長さのリスト
[17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]

// 正方形の面積のリスト
[390, 240, 37, 396, 198, 99, 242, 53, 329, 202]

// 出力
390:error
240:16,17
37:3,13
396:error
198:11,18
99:6,17
242:16,17
53:3,18
329:error
202:13,16

791 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:02:00.41 ID:Un8DgV3E.net]
>>751
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
c = a.group_by(&:itself).values.map{_1.size > 2 ? _1[0, 2] : _1}.flatten.permutation(2).map{[_1 * _2, [_1, _2].sort]}.uniq.sort.to_h
b.each{|s| puts '%d: %s' % [s, c.find{_1[0] >= s}&.[](1)&.join(?,) || :error]}

# =>
390: error
240: 16,17
37: 3,13
396: error
198: 11,18
99: 6,17
242: 16,17
53: 3,18
329: error
202: 13,16

792 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:46:43.88 ID:3788iROh.net]
>>751 ruby
https://ideone.com/hBHe51
def f(as, bs)
c = as.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort_by(&:first).each_cons(2)
bs.map do |b|
d = c.find {|e, f| e[0] < b && b <= f[0]}
"#{b}:#{d ? d[1][1..2].join(',') : 'error'}"
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)

793 名前:753 mailto:sage [[ここ壊れてます] .net]
>>751
https://ideone.com/2UDrLT
>>753を若干の整理
>>752さんのを見て&.を勉強
def f(a, b)
c = a.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort
b.map {|b| "#{b}:#{c.find {|e| b <= e[0]}&.[](1..2)&.join(',') || 'error'}"}
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)

794 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:34:04.51 ID:sDbT/M8A.net]
みんな解くのはえーなぁ

795 名前:96 mailto:sage [2022/09/10(土) 02:29:07.85 ID:7pWsuKpo.net]
>>751 Perl5

$ls = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
$ss = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
sub f {2 < @_ ? (f(@_[1..$#_]), map{[$_[0] * $_, $_[0], $_]} @_[1..$#_]) : ()}
@rs = sort{$$a[0] <=> $$b[0]} f @$ls;
for $aa (@$ss) {
 @b = grep{$aa <= $$_[0]} @rs;
 print @b ? "$aa:$b[0][1],$b[0][2]\n" : "$aa:error\n";
}


実行結果
$ perl 20_751.pl
390:error
240:17,16
37:3,13
396:error
198:18,11
99:17,6
242:17,16
53:3,18
329:error
202:13,16

796 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:29:46.54 ID:q8enYz1J.net]
>>751 octave
https://ideone.com/WGkm27
function c = f(a, b)
u = unique(sort(nchoosek(a, 2), 2), 'rows');
p = prod(u, 2);
c = cell(size(b));
for i = 1:numel(b)
d = min(p(b(i) <= p));
if isempty(d)
c{i} = sprintf('%d:error', b(i));
else
s = strjoin(arrayfun(@(n) {num2str(n)}, u(p == d, :)), ',');
c{i} = sprintf('%d:%s', b(i), s);
end
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
cellfun(@disp, f(a, b))

797 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 13:32:08.25 ID:q8enYz1J.net]
>>751 c
https://ideone.com/Cqx8M3
#include <stdio.h>
void f(int *a, int *b, int na, int nb) {
int i, j, k, found, min, x, y;
for (i = 0; i < nb; i++) {
found = 0;
for (j = 0; j < na; j++)
for (k = 0; k < na; k++)
if (j != k && b[i] <= a[j] * a[k] && (!found || a[j] * a[k] < min))
found = 1, min = a[j] * a[k], x = a[j], y = a[k];
if (!found) printf("%d:error\n", b[i]);
else printf("%d:%d,%d\n", b[i], x, y);
}
}
int main() {
int a[] = {17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1};
int b[] = {390, 240, 37, 396, 198, 99, 242, 53, 329, 202};
f(a, b, sizeof a / sizeof *a, sizeof b / sizeof *b);
return 0;
}

798 名前:デフォルトの名無しさん [2022/09/10(土) 19:18:11.93 ID:PLqR4TKQ.net]
>>751
Kotlin

可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな?

https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A

240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。

799 名前:デフォルトの名無しさん [2022/09/10(土) 22:25:19.23 ID:7X0yi8nW.net]
お題

>>751の問題について

長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします

https://downloadx.getuploader.com/g/angel556/90/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95.png
この図は50を探すところを描いています

青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします
長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります
右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします

>>751の問題をしゃくとり法で解いてください



800 名前:デフォルトの名無しさん [2022/09/10(土) 22:51:25.27 ID:7X0yi8nW.net]
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく

801 名前:デフォルトの名無しさん [2022/09/10(土) 22:52:41.16 ID:7X0yi8nW.net]
いや、いいのか!? ダメだ混乱してきたもうパニックですわ

802 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 22:57:53.10 ID:sDbT/M8A.net]
おちつけ

803 名前:デフォルトの名無しさん [2022/09/10(土) 23:12:42.56 ID:7X0yi8nW.net]
>>760
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね

50を探す場合、56,55,51が候補です
https://downloadx.getuploader.com/g/angel556/91/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95_%E8%A8%82%E6%AD%A3.png

804 名前:素数を数えるんだ [2022/09/10(土) 23:25:22.59 ID:22kPJ9rf.net]
2, 3, 5, 7, 11, 13, 17, 19......

805 名前:デフォルトの名無しさん [2022/09/11(日) 01:04:25.98 ID:/LH0BDzE.net]
お題
2~19までの素数を生成し掛け算の表を出力してください

806 名前:デフォルトの名無しさん [2022/09/12(月) 01:50:52.46 ID:xawmAmgS.net]
>>751
Java
https://paiza.io/projects/9bNWiYGC-KndYn1QmRsYIA

807 名前:デフォルトの名無しさん [2022/09/12(月) 10:44:10.79 ID:VxR6iqOp.net]
>>764
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q

出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。

808 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 18:32:56.65 ID:eGlSQ2pk.net]
>>751
ttps://ideone.com/mFYcmC

>>764
ttps://ideone.com/vwjQvN

809 名前:デフォルトの名無しさん [2022/09/13(火) 22:22:38.95 ID:B0VHMNYc.net]
>>766
C#
https://paiza.io/projects/mR6tnluHgitHnC0VJWc6Wg



810 名前:デフォルトの名無しさん [2022/09/13(火) 22:25:19.07 ID:V4Kz63G0.net]
お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色

811 名前:デフォルトの名無しさん [2022/09/14(水) 12:47:57.36 ID:LkrioAg+.net]
お題

フェアフィールドの公式は、西暦1年1月1日から指定した日付までの日数を求めるもので次の式です
日数 = (365 * Y) + (Y / 4) - (Y / 100) + (Y / 400) + (306 * (M + 1) / 10) + D - 428

UNIX時間は、西暦1970年1月1日午前0時0分0秒からの経過秒数です

フェアフィールドの公式を用いてUNIX時間から年月日を求めて出力してください

(例)
1000000000 → 2001-09-09T01:46:40
1234567890 → 2009-02-13T23:31:30

812 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 15:20:59.73 ID:s+3MjQLV.net]
>>772 bat
@echo off &setlocal
call :Conv_uTime2iso 1000000000
call :Conv_uTime2iso 1234567890
pause&exit /b
:Conv_uTime2iso
set /a "GD=(UT=%~1)/86400+719468, h=100+(R=UT%%86400)/3600, n=100+(R%%=3600)/60, s=100+R%%60, y=400*(GD/146097), y+=100*(i=(R=GD%%146097)/36524), y+=(R%%=36524)/1461*4, y+=j=(R%%=1461)/365, R=R%%365+365*(L=(i|j)/4), f=(k=(R*5+2)/153)/10, d=R+101-(306*k+4)/10, m=k+103-f*12, y+=f-L"
echo %y%-%m:~-2%-%d:~-2%T%h:~-2%:%n:~-2%:%s:~-2%

813 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 05:31:46.38 ID:LgD4XKTt.net]
//>>772 JavaScript
function _772(epoch) {
/**/epoch = BigInt(epoch);if (epoch < 0n) {throw new RangeError('');}
/**/const lastDateOfMonth = (_ => Object.fromEntries(Array.from([, , , ..._.slice(2), _[0], _[1]].entries()).filter(([, v]) => v)))(Array.from(new Array(12).keys()).map(m => BigInt(new Date(2_022, m + 1, 0, 0, 0 - new Date().getTimezoneOffset()).getDate())));
/**/const FAIRFIELD = fairfield(1_969n, 12n, 31n) + epoch / 86_400n + 1n;
/**/let [Y, M, D] = [1_969n, 13n, 1n];
/**/for (; D <= 58n; D++) {if (FAIRFIELD == fairfield(Y, M, D)) {return {Y: 1_970n, M: 1n + D / 31n, D: D % 31n};}}
/**/for (Y = 1_970n; Y <= Number.MAX_SAFE_INTEGER; Y++) {
/**//**/for (M = 3n, D = 1n; D <= 366n; D++) {
/**//**//**/if (FAIRFIELD == fairfield(Y, M, D)) {
/**//**//**//**/if (D == 366n) {
/**//**//**//**//**/if (isLeapFullYear(Y + 1n)) {
/**//**//**//**//**//**/

814 名前:return {Y: Y + 1n, M: 2n, D: 29n};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: 3n, D: 1n};
/**//**//**//**//**/}
/**//**//**//**/} else {
/**//**//**//**//**/for (; lastDateOfMonth[M] <= D; D -= lastDateOfMonth[M++]);
/**//**//**//**//**/if (M <=12n) {
/**//**//**//**//**//**/return {Y, M, D};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: M % 12n, D};
/**/}}}}}
/**/function isLeapFullYear(Y) {return Y % 4n == 0n && Y % 100n != 0n || Y % 400n == 0;}
/**/function fairfield(Y, M, D) {return Y * 365n + Y / 4n - Y / 100n + Y / 400n + 306n * (M + 1n) / 10n + D - 428n;}
}
[]
[ここ壊れてます]

815 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 22:07:10.52 ID:AaudQZzp.net]
うるう秒のテーブルがないと求められなくない?

816 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:34:31.77 ID:ETiYX3D6.net]
400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感

817 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:35:51.49 ID:ETiYX3D6.net]
違う
適当にバイアス付けて÷365.2425だ

818 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:05:26.42 ID:/mniU0r8.net]
フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという

819 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:13:35.77 ID:mMDmJ4/Z.net]
グレゴリオ歴のとこに解説載ってるよ
https://ja.m.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6



820 名前:デフォルトの名無しさん [2022/09/16(金) 21:18:24.66 ID:k/2PI65L.net]
>>772
Java
https://paiza.io/projects/GkxKdFMCsjdM1lSoxk8mhQ

821 名前:デフォルトの名無しさん [2022/09/17(土) 17:48:30.91 ID:fw6a0lZo.net]
お題
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。


[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)

822 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 18:42:03.76 ID:ZMguHADz.net]
>>781
零因子の発掘ですか、濃ゆいお題ですね…

823 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 11:34:42.07 ID:qZaavGGf.net]
お題:循環参照を開放せよ。

java
https://ideone.com/xe64l4
・ガベコレの対象になったのを確認まででヨシとす

c++
https://ideone.com/1gXTAX

824 名前:デフォルトの名無しさん [2022/09/18(日) 12:52:34.73 ID:BMeW7wRv.net]
>>783
Java
https://paiza.io/projects/KPlcyOa7-yBMKlBes0ImXg

825 名前:デフォルトの名無しさん [2022/09/18(日) 16:37:27.93 ID:BMeW7wRv.net]
>>783
Python
https://paiza.io/projects/xCNkUNUSXbwUSWTf8OEA-Q

826 名前:デフォルトの名無しさん [2022/09/19(月) 02:47:41.37 ID:/08McGz8.net]
>>783
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng

Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。

827 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 01:13:05.90 ID:uYRJl5GL.net]
>>772
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど

828 名前:デフォルトの名無しさん [2022/09/24(土) 04:40:38.82 ID:6vPOYH6k.net]
>>772
だめ。その式に当てはめると必ずずれる。

829 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 07:42:29.88 ID:aunrhsr3.net]
うるう秒を考慮しないとずれる



830 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 09:42:29.34 ID:v3rIJe0P.net]
>>788
問題には書かれていないけれどその式は条件によって前処理が必要
・1-2月は前年として扱う。 1年を3-14月として計算
m=1 or 2 の時 y=y-1, m=m+12

>>789
UNIXTIMEにうるう秒なんて無い

831 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 11:33:11.17 ID:aunrhsr3.net]
>>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう

832 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:13:55.28 ID:v3rIJe0P.net]
>>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない

833 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:34:24.41 ID:aunrhsr3.net]
>>792
レスありがとう。不勉強だったわ。

834 名前:デフォルトの名無しさん [2022/09/24(土) 16:57:05.53 ID:6vPOYH6k.net]
>>790
出題ミスか。
これまでに作られたプログラムはその辺のことを考慮したプログラムになっていたのかな?
だったら分かってたんだからその辺の事を書いておいて欲しかったな。

835 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:38:52.94 ID:Fvr5cAu6.net]
wikiにはそこまで詳しい解説はなかったけど式みたらわかったけどな
⌊(m+1)/30.6⌋
という項
⌊x/30.6⌋という関数は0,1,2,3,4となる値が
31,30,31,30,31,31,(繰り返し)‥①
と変化してコレを周期153で繰り返す
月の長さは3月から見ると
31,30,31,30,31,31,30,31,30,31,31,28(29)
となってるから①を一月分左に平行移動すれば良いとわかる
からの⌊(m+1)/30.6⌋

836 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:45:27.51 ID:Fvr5cAu6.net]
>>795

間違えた
⌊m×30.6⌋という関数は0,1,2,3,4,‥の時の値が
31,31,30,31,30
の繰り返し
件の公式のmの項はコレを一月分ずらしてる

837 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 02:17:31.98 ID:UDkh+W3M.net]
お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ

838 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 09:47:46.29 ID:+QlM3L0o.net]
seed変数はパラメータ渡しで良いですか

839 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:05:59.31 ID:WptV1D3q.net]
>>797 c
https://ideone.com/PIpRmD
void f() {
static int i = 0, j, k = 4;
if (i == 0) j = rand() % k;
puts(i == j ? "failed" : "ok");
i = (i + 1) % k;
}



840 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 22:51:23.95 ID:7XofIB3A.net]
>>797 Ruby
def f
$f_cnt||=0
puts$f_cnt==3||(rand(4)==~-$f_cnt+=1)?:failed: :ok
end

841 名前:デフォルトの名無しさん [2022/09/30(金) 04:16:06.13 ID:F2zw9Wj+.net]
>>797
Kotlin

https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w

Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。

引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。

842 名前:デフォルトの名無しさん [2022/10/01(土) 01:23:09.73 ID:I5nFps2z.net]
>>797
Java
https://paiza.io/projects/AOePb_OJDX44jb_jRddrsw?language=java

843 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
お題: あみだ https://imgur.com/6XtTF0E.png
画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。
N: 縦線の本数(列数)
M: 橋が架けられている行数
B: M行N-1列の二次元配列で、橋が架けられていたら1、そうでない場合は0が格納されています。
あらかじめ、あみだの入力には左から0〜N-1までの整数が割り振られていることにします。また、同じ行に橋が二つ連続で隣り合うことは禁止されています。
一応の制約: 2 <= N <= 100, 1 <= M <= 100
あみだに橋が1つも存在しない場合、M=1となり、Bは1行N-1列の大きさで、すべての要素が0の2次元配列になることにします。

お題1: N, M, Bが与えられるので、あみだの出力を求めてください。(入出力のフォーマットは各自で適宜変更してもいいです。)
入力例(画像のもの):
4
4
1 0 1
0 1 0
1 0 0
0 1 0
出力例:
3 0 1 2

お題2: Nとあみだの出力が与えられるので、Mをできるだけ小さくしたあみだを求め、Mと Bの一例 を表示してください。
入力例:
5
2 4 0 1 3
出力例:
3
0 1 0 1
1 0 1 0
0 1 0 0
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。

844 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 00:03:47.74 ID:Em47unOv.net]
reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな

845 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 12:25:25.51 ID:CId/Nblu.net]
Gapとか使えばいいんじゃね

846 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 15:00:17.69 ID:AiOpkeUk.net]
reduced expression の長さ自体の計算は簡単だけどこの問題は"reduced expressionの長さを求めよ"ではないからそこまで数学的に単純じゃないよ

847 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 20:53:48.73 ID:uiS3Rjx/.net]
>>803
お題1
ttps://paiza.io/projects/tUaZay_JvtZRkIaUhjYF7Q

お題2
ttps://paiza.io/projects/1yDZy-Vx-C9Q9Z_Oc03Mtw

お題1とお題2でそれぞれ入力と出力をあわせるようにした
Mをできるだけ小さくって難しいな
これでいいのかわからん

848 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:09:44.88 ID:TC3V9vEZ.net]
アルゴリズムが存在するのは明らかだしひとつ答え見つけるアルゴリズムも簡単
でもreduced expression見つけるアルゴリズムと同程度のアルゴリズムとなると途端に難しくなる

reduced expressionの場合には置換σのreduced expressionを見つけるには
(1) σ = idであるか否か判定する、σ=idなら空列を返して終了
(2) そうでない場合σ(i) > σ(i+1)であるiを見つける、見つけたiに対してτ=σ(i i+1)とおいてτほreduced expression sを求める
(3)

849 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:16:09.04 ID:TC3V9vEZ.net]
(3) s ( i i+1 )を返して終了
でもとまる
ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる
しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん
初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい
多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする



850 名前:441 [2022/10/11(火) 10:43:04.37 ID:Q+yx5xdI.net]
>>803
最近やっとpythonを学び始めたレベルだから合ってるかわからん
コメントとかもちゃんと書いたほうがいいのだろう

851 名前:
暇な人添削してくれると嬉しい

お題1
https://ideone.com/uQ0lEu
お題2
https://ideone.com/IvtRj2
[]
[ここ壊れてます]

852 名前:デフォルトの名無しさん [2022/10/11(火) 12:04:38.77 ID:xv8Y5zzF.net]
しゃぶれよ

853 名前:96 mailto:sage [2022/10/13(木) 07:01:45.31 ID:JNehkz2R.net]
>>773
自分でやれ

854 名前:デフォルトの名無しさん [2022/10/22(土) 02:49:22.02 ID:ql0xnxKt.net]
やってるやん

855 名前:デフォルトの名無しさん [2022/10/24(月) 10:24:26.56 ID:sCRx2Xsd.net]
お題
プリンタAは1分間に1ページ印刷できます
プリンタBは3分間に1ページ印刷できます
プリンタCは5分間に1ページ印刷できます

プリンタを3台同時に動かして100ページを印刷します
100ページを印刷し終わるのに何分掛かるか求めてください

856 名前:デフォルトの名無しさん [2022/10/24(月) 12:38:35.85 ID:PxuF7JuF.net]
>>814
perl5
https://paiza.io/projects/6hPV0H0VMJ6oloujnOVF8w

857 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 13:32:21.38 ID:LLDppSf/.net]
>>815
バグってるぞ
65分だと99枚しか印刷されない

858 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 14:17:54.79 ID:l9s5dDsa.net]
>>814 cmd
set /a "p=100, n=15*p/23+!!(15*p%23)"

859 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 15:31:07.39 ID:FSEywfH4.net]
haskell

pages n = sum $ map ( div n ) [ 1,3,5 ]
main = print $ head [ n | n <- [1..], pages n >= 100 ]



860 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 20:20:16.51 ID:112hix5y.net]
>>814
aow = 100
power = (1 + 1r/3 + 1r/5)
printf(aow / power) // => 65.21739130434783

861 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:40:57.89 ID:SGYFZ2pJ.net]
>>814 octave
https://ideone.com/BOXjxs
f = @(n) ceil(n * 15 / 23);

862 名前:デフォルトの名無しさん [2022/10/25(火) 01:46:09.54 ID:m3snEfri.net]
>>814
Kotlin

何も考えずただカウントして求めるように書いた。

https://paiza.io/projects/8SWBhDQ_Bfr2ICXJpLmxhQ

863 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 06:54:39.16 ID:LZqPXT/2.net]
>>817,820
逆算はページ数によってはダメ
例えば3ページの時、3分4ページが正解だけど
(B=2/3)+(C=2/5) で1繰り上がって2分が出て来る

864 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 07:50:54.84 ID:V4E25MPr.net]
A, B, Cでそれぞれ45/23, 15/23, 9/23ページ印刷すれば45/23分で3ページ印刷し終わるよ

865 名前:デフォルトの名無しさん [2022/10/25(火) 08:18:47.97 ID:5cB2OctB.net]
100ページだからセーフ

866 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 13:35:12.41 ID:xp4U3IJL.net]
>>814
JavaScript
https://paiza.io/projects/I8_n6kEMrNGxbh-vwbTkqQ

867 名前:デフォルトの名無しさん [2022/10/25(火) 20:38:44.30 ID:Er29dtqL.net]
甘えんな
印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ

868 名前:デフォルトの名無しさん [2022/10/25(火) 21:08:38.15 ID:idE58GAF.net]
すまん、1分に3枚じゃなくて3分に1枚かorz

869 名前:デフォルトの名無しさん [2022/10/25(火) 22:03:54.71 ID:b0dw4lqu.net]
>>814
Java
https://paiza.io/projects/3CptMd1jsIwuiYqU1IQYyg?language=java



870 名前:デフォルトの名無しさん [2022/10/25(火) 22:28:13.40 ID:F6XUw+z/.net]
じゃあ1分に1枚、3枚、5枚のプリンターでの印刷というお題も出すか。

871 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 22:38:49.46 ID:d0t/LHiA.net]
>>814 octave
https://ideone.com/0V6LlD
function m = f(n, m)
if nargin == 1
m = f(n, 0);
elseif sum(idivide(m, [1 3 5])) < n
m = f(n, m + 1);
end
end

>>814 ocaml
https://ideone.com/4iPTJS
let f n =
let rec aux m =
if n <= (m + m / 3 + m / 5) then m else aux (m + 1)
in aux 0

872 名前:デフォルトの名無しさん [2022/10/25(火) 23:47:11.01 ID:b0dw4lqu.net]
>>829
Java

public static void main(String[] args)
{
 var pages = 100;
 var s = IntStream.of(1, 3, 5).sum();
 System.out.println((pages + s - 1) / s);
}

873 名前:デフォルトの名無しさん [2022/10/26(水) 13:26:51.44 ID:FciA0hc1.net]
お題
オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」
オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」
オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」
オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」
オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」
オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」
オーク達「ぐっふっふ……」

論理演算を用いて答えを求めてください

874 名前:デフォルトの名無しさん [2022/10/26(水) 13:33:52.83 ID:FciA0hc1.net]
オークCとオークEがめんどくさいな

875 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 15:30:35.63 ID:DM8ZU7Du.net]
全てが媚薬を盛って全員が嘘をついている

これで全員の発言と矛盾がないと思う

876 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 16:28:02.83 ID:xzd5i3vP.net]
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
は正しいと仮定しないとなんでもありありになっちゃうだろ

877 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:06:43.51 ID:VWCwwszG.net]
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」

コレウソついてるのは一匹“だけ”つて意味だよね?
“少なくとも一匹はウソついてる”
じゃないよね?

878 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:20:40.38 ID:S3XzLK/s.net]
このタイプの論理問題ってよく見かけるな
初出ってどこなんだろうな

879 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:23:29.30 ID:gD5qQ1ZG.net]
>>836
> “少なくとも一匹はウソついてる”
だと、全員嘘つきでもいいからなんでもありになっちゃう気がする



880 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 20:30:42.10 ID:dmTYCGjA.net]
>>832
Haskell
まだ自信なし

https://ideone.com/7p50VK

881 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:23:18.21 ID:OrdcPqRc.net]
オーク達「」が真であることは、
この世界の神である出題者が保証してるわけだな?

882 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:38:57.12 ID:Bjop1AC4.net]
出題者が嘘をついていて、オークがそのような発言をしていない可能性もある

883 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 01:22:34.18 ID:s7i1htqL.net]
>>832
Haskell

一ヶ所間違ってたので訂正
あとウソつきはちょうど1人という条件つけたら解一個になった

https://ideone.com/vAXrzD

884 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 09:19:06.82 ID:Uf+5HE/G.net]
Haskell

ウソつき1人としてループを5×5に
5人しかいないので大して変わらないけど

https://ideone.com/zxaBcf

885 名前:デフォルトの名無しさん [2022/10/27(木) 14:26:07.23 ID:QRorZadJ.net]
>>832
Java
https://paiza.io/projects/VlDcOv5HhoHc1rQjRbF3dA?language=java

886 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:11:19.58 ID:O3TXZpYa.net]
お題
Kの倍数の桁の和
自然数nに対してf(n)をnの10進表示の各桁の和とします
(例 f(1024) = 1+2+4 = 7)
自然数kに対してg(k)を
g(k) = { f(n) | nはkの倍数である自然数 }
とします
入力kに対してg(k)を出力するコードを書いて下さい

887 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:33:57.73 ID:uuZ1gbyy.net]
>>845
g(k)って必ずしも有限集合にならなくない?

888 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:39:30.16 ID:O3TXZpYa.net]
>>946
orz
訂正
g(k) = min{ f(n) | nはkの倍数である自然数 }

889 名前:デフォルトの名無しさん [2022/10/30(日) 00:28:15.63 ID:BQOGiCuF.net]
お題
プレーヤーの前に閉じた3つのドアがあります
1つのドアの後ろには景品の新車があります
2つのドアの後ろにははずれを意味するヤギがいます
プレーヤーは新車のドアを当てると新車がもらえます
プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます
ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます
ここでプレーヤーはドアを変更すべきだろうか?

乱数を使ったシミュレーションで答えを求めてください



890 名前:デフォルトの名無しさん [2022/10/30(日) 03:55:05.76 ID:KHak5nKt.net]
>>848
モンティ・ホール問題だな。

Kotlin
https://paiza.io/projects/8jlKawdSqlrp5JHr0uWC4w

891 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:09:55.23 ID:oF72FRjI.net]
ドアを変更するかどうかのところはランダムにする必要無くない?
二択なので一方に決めていれば残りが逆側の確率

892 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 10:05:48.56 ID:Rpnmj8SE.net]
まぁ
交換戦略「必ず交換する」
非交換戦略「決して交換しない」
確率交換戦略「ある分布に従って確率的に交換するかしないか決める」
で答えが変わる事を確認せよだからな
ある意味最初2つの戦略も最後の戦略の特別な場合

893 名前:デフォルトの名無しさん [2022/10/30(日) 11:47:05.86 ID:0KuBg4yb.net]
お題N x Nのルービックキューブのパターン数を求めよ

894 名前:デフォルトの名無しさん [2022/10/30(日) 18:39:10.46 ID:KHak5nKt.net]
>>850
なるほど。

895 名前:デフォルトの名無しさん [2022/10/30(日) 18:54:42.34 ID:Sqe0pI7B.net]
モンティ・ホール問題のシミュレートのように見えて実はちょっと違う
モンキーホール問題だったのだ

896 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 20:02:07.15 ID:4vBwn6CZ.net]
>>848 octave
https://ideone.com/LGCuAh

897 名前:デフォルトの名無しさん [2022/10/31(月) 00:39:33.45 ID:MKojko7I.net]
お題 ジュールトムソン効果っぽいものをシミュレーションで再現せよ

898 名前:デフォルトの名無しさん [2022/11/04(金) 07:13:30.92 ID:jLlmakBU.net]
お題:1~10までの合計を求めよ
*ただしライブラリ、ループ文を使わないこと

899 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 07:18:56.49 ID:yh54R4RT.net]
>>857 PHP
55



900 名前:デフォルトの名無しさん [2022/11/04(金) 08:24:04.42 ID:TDQ1gw2t.net]
(1+10)*5

901 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 12:00:50.88 ID:ryvUUS8Q.net]
>>857 cmd
set /a "A=1, B=10, (B-A+1)/2*(A+B)+(B-A+1)%2*(A+B)/2" &rem A≦B

902 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 15:50:39.28 ID:q0UsXtCi.net]
1+2+3+4+5+6+7+8+9+10

903 名前:デフォルトの名無しさん [2022/11/04(金) 15:52:05.99 ID:TBUnPbqZ.net]
>>857
$ dc -e'1 10+5*p'
55
$

904 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:28:57.36 ID:q0UsXtCi.net]
整数とは書いてないな
三角数とか実数とか何か別のものを想定してるかもしれない

905 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:32:28.85 ID:q0UsXtCi.net]
高級言語なら大抵暗黙のうちにライブラリは使ってるだろうし内部的にループも使ってるかもしれない

ループの定義も問題になるかと
gotoは?再帰は?列挙は?...

906 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:36:48.58 ID:BHFqhq9y.net]
>>863
その場合は
> 1~10までの合計
の定義を書かないとね

907 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:55:47.69 ID:q0UsXtCi.net]
「その場合」に限定する理由は無いよね?

908 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 17:35:42.12 ID:u3TD418O.net]
>>866
整数なら
> 1~10までの合計
についてほぼ合意できる定義があると思うけど?

909 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 18:32:31.67 ID:iggZ7AM6.net]
そう思ってない人もいる



910 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 18:59:46.26 ID:u3TD418O.net]
思ってない人は具体的にどう言う定義があるのか書けばいいんじゃね?

911 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:06:50.77 ID:iggZ7AM6.net]
ちょっと前のレスくらい読め

912 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:18:35.30 ID:u3TD418O.net]
ん?
ならなにを言いたいのかわからんわ

913 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:20:02.13 ID:iggZ7AM6.net]
わからないなら無理に書き込まなくていいよ

914 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:54:59.56 ID:u3TD418O.net]
ごめん、説明できないならいいや

915 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 14:37:23.18 ID:wb4h3pkZ.net]
>>857 octave
https://ideone.com/1JUukk
f = @(a, b) (a + b) * (b - a + 1) / 2;

916 名前:デフォルトの名無しさん [2022/11/05(土) ]
[ここ壊れてます]

917 名前:22:37:38.99 ID:ik3uUvNv.net mailto: >>857
Java
https://paiza.io/projects/qlqEQa2EzsIMTABY1ujOcg?language=java
[]
[ここ壊れてます]

918 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 23:35:33.60 ID:WGyFluMA.net]
10*11/2

919 名前:デフォルトの名無しさん [2022/11/06(日) 03:33:15.03 ID:V4pkDxVq.net]
>>857
Kotlin

https://paiza.io/projects/uWXy93c98CoNzF0o2H_wgQ

ループ文は使わず再帰でなんとかした。

(1..10).sum() や (1..10).reduce { a, n -> a + n } でも結果は出るが sum() や reduce() がライブラリにある拡張関数なので没。
10 * 11 / 2 とか 55 を直接出すのはプログラム作る意味がほとんどないような感じがするので止めた。



920 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 04:47:10.33 ID:p1AlQ8ne.net]
お題が、正方形や三角形の面積を求めるのと
同程度に簡単な式だしなあ

921 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 08:11:23.79 ID:l6ScHNeb.net]
Haskell
sum [1..10]

922 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 08:35:41.45 ID:5UCgIOa9.net]
>>861で終了じゃん
最適化して55でも良いけど

中途半端に和の公式使ってるヤツってアホなの?

923 名前:デフォルトの名無しさん [2022/11/06(日) 09:08:00.03 ID:aYMPlSSq.net]
一垓にそうは言えないのでは
ループを使わないの意味が多くの数でもすぐ答えがでそうな処理を見たいのかもしれない

924 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:25:21.24 ID:p1AlQ8ne.net]
掛け算割り算だと中途半端でアホで
足し算だと利口だとおっしゃる

925 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:33:05.99 ID:5UCgIOa9.net]
和の公式を使うくらいなら55の方が良い
って話

なんで中途半端な最適化をするの?

926 名前:デフォルトの名無しさん [2022/11/06(日) 09:38:06.42 ID:gK09y9Q8.net]
1^n + 2^n +・・・+(10^25)^n
n=10、 n=-17
の手段選ばすとかは?
25条はぎりふつうループでは困難かとおもえる数値を適当にいまおもいついた

927 名前:デフォルトの名無しさん [2022/11/06(日) 10:54:00.31 ID:Zb5xxfES.net]
= 10+(9+1)+(8+2)+(7+3)+(4+6)+5
= 10+10+ 10+ 10+ 10+ 5
= 10 + (10 * ((10/2)-1))+5
= (10 * ((10/2)-1))+10+5
= x(0.5x-1)+1.5x

928 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 12:06:08.03 ID:5iQhHwnm.net]
こうどなじょうほうせん を愉しむための問題でしょ

929 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 15:29:02.07 ID:RIYDMAGE.net]
と思って>>863を書いたんだけど



930 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 15:33:43.73 ID:RIYDMAGE.net]
1~10の合計
1から10までの合計
じゃなくて
1~10までの合計
っていうのも気になった

931 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 17:04:56.12 ID:PNCv3I6p.net]
1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか

932 名前:デフォルトの名無しさん [2022/11/06(日) 18:24:36.01 ID:S6zCBHE1.net]
するだろ
https://i.imgur.com/jPwi4sZ.jpg

933 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:35:07.31 ID:mzFwuoQr.net]
>>890
合計にはdx関係ないぞ...

934 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:37:14.41 ID:PNCv3I6p.net]
低レベルすぎて草
1以上10以下の実数全体の集合をAとすると
#A = ?_1 ゆえに Σ_{λ∈A}λ は有限の値を取らない

935 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:38:48.30 ID:PNCv3I6p.net]
文字化けしたか
「#A = 連続体濃度」

936 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:48:29.30 ID:qhQ571Br.net]
なんか足すと一見無限になりそうだけど
ある区間a<bの間にa<c<bとなるcが取れなくなることはありえないよね?

937 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:07:23.07 ID:9PA1hevU.net]
>>889
和が存在しないとうならそれが答え
3を含むが3.5を含まないという説得力のある説明が出来るならよろしく

938 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:12:17.73 ID:PNCv3I6p.net]
>>895
和が発散する説明はすでにしてあるんだが何を言いたいの

939 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:14:51.13 ID:9PA1hevU.net]
Q:和を求めよ
A:和は存在しない



940 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:15:52.52 ID:9PA1hevU.net]
発散とか収束とか
意味をわかって使わないと恥ずかしいぞ

941 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:17:22.08 ID:PNCv3I6p.net]
>>895みたいなこと言う奴が解析の基礎すら理解できてるとすら思えないが

942 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:17:36.32 ID:9PA1hevU.net]
>>892が最高に恥ずかしい

943 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:19:08.56 ID:9PA1hevU.net]
>>899
最高に笑える書き込みありがとう

944 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:19:25.97 ID:PNCv3I6p.net]
数学的に具体的な反論が一切ないじゃん
バカなの

945 名前:デフォルトの名無しさん [2022/11/06(日) 19:21:59.86 ID:aYMPlSSq.net]
ぽまえら
餅付いて >>857 を嫁

946 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:23:24.47 ID:9PA1hevU.net]
>>892を見ただけでアホだとわかる

947 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:24:24.94 ID:PNCv3I6p.net]
>>904
暴言は結構なんで、数学的に反論してくれませんか?
まあ頭が悪くてできないんでしょうけど

948 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:28:25.36 ID:9PA1hevU.net]
>>905
何に反論してほしいの?

多分視野が狭くて何を主張されてるのかわかってないと思うんで
一回落ち着いた方がいいぞ

その上で
君が主張を明確にして
それに対して反対意見があれば反論してあげる

949 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:30:41.70 ID:9PA1hevU.net]
1以上10以下の実数の総和が存在しないことなんて
誰でもわかる
和が存在するなんて主張はしてないから勘違いしないように



950 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:31:28.37 ID:PNCv3I6p.net]
>>906
>1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか
に対してお前は>>895みたいなクソ発言してるわけだがこのクソ発言の妥当性を説明して見ろよ

951 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:35:38.89 ID:9PA1hevU.net]
和が存在しないというならそれが答え
の意味がわからなかったかな?

その次の文は和の存在とは関係ない
君への宿題

952 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:37:43.37 ID:PNCv3I6p.net]
>>909
任意のRの開区間に対してその元の和が有限の値になる場合何てないんだから
「和が存在しないというならそれが答え」なんて発言は問題の本質を理解していないバカの発言だろ
人に宿題出す前に算数からやり直せよ

953 名前:デフォルトの名無しさん [2022/11/06(日) 19:40:06.40 ID:eRXytuty.net]
【悲報】アスペ君、今日も元気。。。

954 名前:デフォルトの名無しさん [2022/11/06(日) 19:46:26.35 ID:Zb5xxfES.net]
プログラミングのお題なんだから1+2+に決まってるだろ。
少数を含めた1から10までに考えられる数値を足すとかできるわけねえだろ。

955 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:47:59.95 ID:9PA1hevU.net]
>>910
問題の本質というなら
解釈の多様性が本質

和の存在は解釈とは無関係
存在しないなら「存在しない」が答えとなるだけの話

956 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:48:45.29 ID:9PA1hevU.net]
>>912
floatやdoubleなら有限だね

957 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:49:37.79 ID:PNCv3I6p.net]
>>913
お気持ちで数学を語るのやめてくれませんかね
はなはだ不愉快です
「任意のRの開区間に対してその元の和」に対して有限の値を取らないという以外にどんな有意味なモデルが取り得るんですかね
バカすぎて日本語の意味すら理解できてなさそうだけど

958 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:49:56.13 ID:9PA1hevU.net]
決まってるといくら主張しても
お題に書いてないんだから
どう解釈されても出題者が悪い

959 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:51:41.99 ID:9PA1hevU.net]
>>915
お前が数学の話を語りたがってるだけで
私はただ解釈の多様性の話をしてるだけ



960 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:52:43.83 ID:9PA1hevU.net]
>>863に数学っぽい話あったか?

961 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:52:59.97 ID:PNCv3I6p.net]
>>917
実数の開区間の和が有限じゃないことにいちゃもん付けてきたのはオタクでしょ?
有限の値を取らない意外にどんな有意義な解釈が成り立つんですか?
きちんと説明しなさい

962 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:53:54.13 ID:9PA1hevU.net]
>>919
それ別の人

963 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:55:00.86 ID:9PA1hevU.net]
>>890と同一人物だと思って
トンチンカンな書き込みを繰り返してたのたね
恥ずかしい

964 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:55:05.02 ID:PNCv3I6p.net]
>>920
>和が存在しないとうならそれが答え
って和が存在する有意義なモデルがあるって言う前提で話してますよね?
もしそうじゃないならこれはどういう意図で行ったんですか?
ちなみに続く3.5云々の意味もよく分かってません

965 名前:デフォルトの名無しさん [2022/11/06(日) 19:56:03.75 ID:aYMPlSSq.net]
もうこりゃ発散とか収束とか言う前に就職の心配したほうがいいな

966 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:57:33.13 ID:9PA1hevU.net]
>>922
落ち着いてから書き込んでね

967 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:59:09.36 ID:PNCv3I6p.net]
>>924
敗北宣言ですか
これにこりたら今後二度とお気持ちで数学を語るのはやめてください
研究者やエンジニアが迷惑するので

968 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:01:35.14 ID:9PA1hevU.net]
数学を語りたがってるのはお前と>>890だけだって
だから落ち着け

969 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:06:58.14 ID:9PA1hevU.net]
おれの主張は>>863だから
もちろん本気で出題者がそう思っているという主張ではなくて
解釈の余地があるという問題提起



970 名前:デフォルトの名無しさん [2022/11/06(日) 20:07:53.80 ID:Zb5xxfES.net]
問題は出題者の意図を読み取ることが重要
1~10までの整数の和の事だろうなと考えるのが低レベルとは思えない。
常識で考えればそうなる

できればその高レベルのプログラムとやらを説明してほしいものだな。

971 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:12:04.95 ID:9PA1hevU.net]
一応プログラム板なんだからさ
解釈の多様性を多少は意識しようよ
プログラミング言語だったら「動作未定義」

曖昧な仕様書で中国人に発注したら
一番都合の良い解釈をされてとんでもないソフトになるぞ

972 名前:デフォルトの名無しさん [2022/11/06(日) 20:17:19.25 ID:Zb5xxfES.net]
プログラムのお題なんだから、
プログラムで実現できないってのは答えにはならんよ。

国語の問題じゃねえんだから、
プログラムとして成立する答えを出せよ

973 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:24:40.28 ID:9PA1hevU.net]
国語の問題じゃねえんだから
出題者の意図を好意的に汲み取る必要はないんだよ

974 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:26:21.60 ID:mzFwuoQr.net]
>>930
だからちゃんと仕様出せやってことだろ
>>863は半分ネタだと思うけど、実数だと言うなら実数について「1~10までの合計」を定義しないとお題にならんよ

975 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:32:00.92 ID:9PA1hevU.net]
>>932
私は出題者じゃないし実数だなんて主張もしてない

いろんな解釈があるならお題にならん
解釈の余地は可能な限り減らせ

976 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:38:00.65 ID:mzFwuoQr.net]
>>933
お前にアンカーしてるわけでもないのに絡んでくるとかあたおかすぎる

977 名前:デフォルトの名無しさん [2022/11/06(日) 20:59:57.69 ID:Zb5xxfES.net]
1から10までの整数の和では無い可能性があるから、
その場合はプログラムでは実現できないって言いたいだけだろ

整数の和として答えてるプログラムを低レベルってどういことやねん。
素直に受け取ればいいものを曲解して不可能に持って行ってるだけだろ

978 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:02:11.02 ID:9PA1hevU.net]
「整数の和として答えてるプログラムを低レベルってどういことやねん。」
だれがそんなことかいた?

979 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:04:22.43 ID:9PA1hevU.net]
>>935
>>931



980 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:07:02.93 ID:tOVlE3Vc.net]
>>857
python: https://ideone.com/mJmWy7
やさしいお題、助かります!

981 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 06:42:16.97 ID:C4s2+P7f.net]
仕事では御免だが
解釈の余地を残すことが娯楽では大切だって良く分かる例

982 名前:デフォルトの名無しさん [2022/11/07(月) 15:08:59.94 ID:4okW5BTf.net]
お題:1/1+1/2+...+1/nの合計を求め、分母と分子を整数で出力せよ。
*ただしライブラリを使わないこと

983 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:35:37.09 ID:Sowq9nFL.net]
>>940 Ruby

(1..n).map{ 1r/_1 }.sum

984 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:48:12. ]
[ここ壊れてます]

985 名前:36 ID:wln8XcGb.net mailto: >>940
haskell
https://ideone.com/DtEB7R
[]
[ここ壊れてます]

986 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 17:42:49.96 ID:dFD6FGsc.net]
gcdとかsumとかprintはライブラリじゃないの?

987 名前:デフォルトの名無しさん [2022/11/07(月) 18:21:56.48 ID:UfWjgfnM.net]
1+・・・+1/n の小数点n桁目はいくらか

988 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 18:47:35.11 ID:Fdh4LiCB.net]
>>944
こっちの方がおもしろいかも
小数第○位って昔は言ったけど今は言わない?

989 名前:デフォルトの名無しさん [2022/11/07(月) 20:48:13.34 ID:OXo72DE3.net]
>>940
Java
https://paiza.io/projects/cuy0WENv4Ghi-7jq9eTIbw



990 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 20:49:01.52 ID:FonngYyy.net]
>>943
Pythonではprintは組み込み関数だな
他は知らんけど

991 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:06:30.94 ID:Fdh4LiCB.net]
組み込み関数はライブラリじゃないと
ライブラリと呼ばない言語なら何でもありか

992 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:08:54.69 ID:Fdh4LiCB.net]
C言語上のただのintの乗算でもライブラリが必要な環境もあるわけだけど

993 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:34:22.19 ID:q2YPtCXX.net]
アルゴリズムが見たいのでしょうね

994 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:35:14.79 ID:kmERiYaX.net]
まあ今時組込とかでもなきゃintの乗算でライブラリ呼び出す環境もあまりないけどそもそも入出力はライブラリ任せだからねぇ

995 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 23:30:13.24 ID:3GzmFPX6.net]
>>943
Haskell ?
だとsumやgcdはpreludeで標準関数扱い
基本import〜が必要ない奴は標準扱い

996 名前:デフォルトの名無しさん [2022/11/08(火) 01:53:36.92 ID:s644Ul/+.net]
>>940
Kotlin

https://paiza.io/projects/93xp9A_EpkG2QbWBuOvAoQ

分子と分母を別々に保持して足し続けただけ。約分はしていない。

997 名前:デフォルトの名無しさん mailto:sage [2022/11/08(火) 21:45:51.73 ID:dCnZkmaL.net]
>>940
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

998 名前:デフォルトの名無しさん mailto:sage [2022/11/08(火) 21:46:18.88 ID:dCnZkmaL.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

999 名前:デフォルトの名無しさん [2022/11/09(水) 00:46:04.53 ID:oWTDq5DR.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end



1000 名前:デフォルトの名無しさん [2022/11/09(水) 00:46:10.95 ID:oWTDq5DR.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

1001 名前:デフォルトの名無しさん [2022/11/09(水) 01:55:16.87 ID:QvIAsso6.net]
なぜ同じ書き込みが4つもある?

1002 名前:デフォルトの名無しさん mailto:sage [2022/11/09(水) 02:02:28.03 ID:Ewgu9c/a.net]
お題スレの7不思議に加えよう

1003 名前:デフォルトの名無しさん [2022/11/09(水) 12:49:26.26 ID:AHjhHUHj.net]
お題
入力した文字列を以下の4種類に分けた文字列を作成する関数を作成してください
・アルファベット大文字
・アルファベット小文字
・数字
・それ以外の文字

1004 名前:デフォルトの名無しさん [2022/11/09(水) 18:55:40.68 ID:dDwxEUkd.net]
Array.from(input).filter(c=>c.match(/[A-Z]/)).join("")
+ Array.from(input).filter(c=>c.match(/[a-z]/)).join("")
+ Array.from(input).filter(c=>c.match(/[0-9]/)).join("")
+ Array.from(input).filter(c=>c.match(/[^A-Za-z0-9]/)).join("")

1005 名前:デフォルトの名無しさん mailto:sage [2022/11/09(水) 20:05:26.68 ID:1g3d+RJJ.net]
>>960 octave
https://ideone.com/SHPVub
function c = f(s)
u = isstrprop(s, 'upper');
l = isstrprop(s, 'lower');
d = isstrprop(s, 'digit');
c = {s(u) s(l) s(d) s(~(u | l | d))};
end

1006 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 01:00:36.16 ID:UXFdZVAF.net]
>>960
Haskell
https://ideone.com/jMHNnq

isUpper = flip elem [ 'A' .. 'Z' ]
isLower = flip elem [ 'a' .. 'z' ]
isNum = flip elem [ '0' .. '9' ]
isOthers = id
. all not
. zipWith ( $ ) [ isUpper, isLower, isNum ]
. repeat

sieve str = [ filter cond str |
cond <- [ isUpper, isLower, isNum, isOthers ] ]

testStr = "foldl1 :: Foldable t => (a -> a -> a) -> t a -> a"

main = mapM_ print $ sieve testStr

1007 名前:デフォルトの名無しさん [2022/11/10(木) 01:50:3 ]
[ここ壊れてます]

1008 名前:8.82 ID:j8kXq8l6.net mailto: >>547
Java
https://paiza.io/projects/Dxe5e0qmmy73WWNdzTvCbg
[]
[ここ壊れてます]

1009 名前:デフォルトの名無しさん [2022/11/10(木) 02:29:28.73 ID:kjI8mJgQ.net]
>>961
俺も正規表現でやりたいけどこっちのほうが5倍速かった…
コンパイル言語に比べたら目くそ鼻くそだがこんだけ違うと考えちゃうな
const str = 'aA0!bB1@cC2#dD3$eE4%'.repeat(500);
let oomoji = [], komoji = [], suuji = [], sonota = [];
for (const c of str) {
let cp;
switch (true) {
case 65 <= cp && cp <= 90:
oomoji.push(c);
break;
case 97 <= cp && cp <= 122:
komoji.push(c);
break;
case 48 <= cp && cp <= 57:
suuji.push(c);
break;
default:
sonota.push(c);
}
}
[oomoji, komoji, suuji, sonota] = [oomoji, komoji, suuji, sonota]
.map(a => a.join``);
// console.table({oomoji, komoji, suuji, sonota});



1010 名前:デフォルトの名無しさん [2022/11/10(木) 02:37:16.98 ID:kjI8mJgQ.net]
>>965
5倍じゃなくて3倍だったわ
perf.linkで測ったコード、
let cp = c.codePointAt();

let cp;
になってたわ寝ぼけてた

1011 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 07:33:44.51 ID:oQpocXYl.net]
>>960
ASCII のみで良い?
それとも Unicode?

1012 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 07:56:41.06 ID:3FlvzqxM.net]
>>960 Ruby

-> s { s.scan(/[A-Z]+|[a-z]+|\d+|[\W_]+/) }

1013 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 14:11:20.86 ID:oQpocXYl.net]
>>960
Kotlin

https://paiza.io/projects/Qfx9ljGCsICVDui8fcn-0A

Unicodeで作った。サロゲートペアの文字もちゃんと扱える。
判別には Java の Character クラスのメソッドを利用している。
これだといわゆる全角の数字は数字扱いになるが漢数字は数字と分類してくれない。
ローマ数字はアルファベット大文字扱い。
日本語の「あ」とかもアルファベットとして扱われるが大文字でも小文字でもないのでそれ以外の文字に追加されるようにした。
コントロールコードは \uXXXX 形式になるようにした。

1014 名前:デフォルトの名無しさん [2022/11/10(木) 18:57:30.40 ID:3zaWz6R+.net]
>>960
PowerShell

function StrClassify($s)
{
  "\P{Lu}", "\P{Ll}", "\P{N}", "[\p{Lu}\p{Ll}\p{N}]" |% {$s -creplace $_}
}

StrClassify "Κωνσταντινούπολιςは1453年にİstanbulと改称された。`n"
StrClassify "塩化銅(Ⅱ)は水中で CuCl₂ ⇄ Cu²⁺ + 2Cl⁻ のように電離する。"

[実行結果]
Κİ
ωνσταντινούπολιςstanbul
1453
は年にと改称された。

CCCC
ulul
Ⅱ₂²2
塩化銅()は水中で ⇄ ⁺ + ⁻ のように電離する。

1015 名前:デフォルトの名無しさん [2022/11/10(木) 20:35:16.34 ID:V5vZiHvW.net]
>>944をやってみたらPythonで300くらいでオーバーフローになった
分子と分母をべつべつに計算してp/qだったとすると
int(10^n * p / q ) % 10 が求める答えのはずだが、この計算ができなかった

1016 名前:デフォルトの名無しさん [2022/11/10(木) 20:44:38.28 ID:V5vZiHvW.net]
ここで問題変更でp/qの小数点n桁目を求める問題にすればいいか
オーバーフローしないように×10ずつして整数部分は無視していけば整数演算の範囲内にできるか
忘れたがユークリッド互除法みたいな?

1017 名前:デフォルトの名無しさん [2022/11/10(木) 20:50:26.16 ID:m98zu82a.net]
input.replace(/[^A-Z]/g,"")
+ input.replace(/[^a-z]/g,"")
+ input.replace(/[^0-9]/g,"")
+ input.replace(/[A-Za-z0-9]/g,"")

1018 名前:デフォルトの名無しさん [2022/11/10(木) 20:51:12.57 ]
[ここ壊れてます]

1019 名前: ID:m98zu82a.net mailto: [/[^A-Z]/g, /[^a-z]/g, /[^0-9]/g, /[A-Za-z0-9]/g]
.map(r => input.replace(r,"")).join("")
[]
[ここ壊れてます]



1020 名前:971 [2022/11/10(木) 21:10:50.60 ID:V5vZiHvW.net]
>>944オーバーフローせずにできた

https://ideone.com/EzCu8k

1021 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 21:27:26.89 ID:p27a51fr.net]
>>944
Haskell

https://ideone.com/2tUIFo

import Data.Ratio

hnn n = flip mod 10 $ truncate $ (* ( 10^n)) $ sum $ map recip [ 1%1..n%1 ]

main = print $ hnn 300

1022 名前:デフォルトの名無しさん [2022/11/10(木) 21:45:52.91 ID:KPTSzoDK.net]
お題 小数点第n位を求めるプログラムを作成せよ

1023 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 21:58:11.94 ID:JknzoKCK.net]
>>977
何の?

1024 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 12:27:18.79 ID:eQP0gwqb.net]
ルート4の

1025 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 13:33:07.98 ID:XogJxnoW.net]
そんなむず過ぎるお題は過疎るのだ却下

1026 名前:デフォルトの名無しさん [2022/11/11(金) 18:36:58.77 ID:Jm4DMnci.net]
>>978
入力された実数

1027 名前:デフォルトの名無しさん [2022/11/11(金) 20:10:51.65 ID:+Uq9lyYZ.net]
(x*10**n)%10

1028 名前:デフォルトの名無しさん [2022/11/12(土) 01:53:40.01 ID:Y/i2pfZ3.net]
お題
配列データと、同じ長さの確率の配列(合計値1)が与えられた時に、対応する確率で配列からデータを出力せよ


aa,bb,cc
0.4,0.5,0.1

→aa 40%, bb 50%, cc 10%で出力

1029 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 08:50:36.22 ID:yCEPOpQl.net]
>>983 Ruby

a = %w[aa bb cc]
p = [0.4, 0.5, 0.1]
f = -> (a, p) { r = rand; a[(0..a.size-2).find{ r < p[0.._1].sum } || a.size - 1] }
10.times{ print f[a, p] }

# => aabbccbbaaaaaabbbbbb



1030 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:10:20.03 ID:g2vYgSbJ.net]
>>983
Haskell
https://ideone.com/UErkR7

import System.Random
import Data.List

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem is ws r = let
folder a b = a : map ( + a ) b
selecter r ( i, ( f, t ) ) = f <= r && r < t
ts = foldr folder [ ] ws
fs = 0 : ts
ifts = zip is $ zip fs ts
in fst $ head $ filter ( selecter r ) ifts

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds

1031 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:19:35.32 ID:uOtU06vW.net]
>>983 octave
https://ideone.com/mIKDyu
f = @(a, r) a(rand < cumsum(r))(1);

1032 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 14:34:06.57 ID:Q9bJaddO.net]
>>983 ocaml
https://ideone.com/aDR0Do
let (<<) f g x = f (g x)
let cumsum =
List.rev << fst << List.fold_left (fun (a, s) f -> s +. f :: a, s +. f) ([], 0.)
let f xs =
let r = Random.float 1. in
fst << List.find ((<) r << snd) << List.combine xs << cumsum

1033 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 16:47:04.36 ID:We3Ba5Li.net]
>>983
コレでよかった
Haskell
https://ideone.com/WtPXzw

import System.Random

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem (i:is) (w:ws) r | r < w = i
chooseItem (i:is) (w:ws) r = chooseItem is ws ( r - w )

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds

1034 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:19:40.29 ID:MirHjvCf.net]
>>983
別名法とかいうアルゴリズム
https://ideone.com/J0p12R

1035 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 19:13:20.80 ID:MirHjvCf.net]
https://ideone.com/8utmEg
元からあったコードをちょっといじったんだけど変換ミスがあった

1036 名前:デフォルトの名無しさん [2022/11/13(日) 18:45:40.25 ID:zjrUNZaB.net]
>>983
Kotlin

https://paiza.io/projects/dh1A84MN5OxLQkw7r2yL7Q

1037 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 19:01:26.14 ID:ZCYlhUwL.net]
次スレ


1038 名前:vログラミングのお題スレ Part21
https://mevius.5ch.net/test/read.cgi/tech/1668333636/
[]
[ここ壊れてます]

1039 名前:デフォルトの名無しさん [2022/11/15(火) 08:06:01.58 ID:XL64sJsG.net]
うめ



1040 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 09:22:13.74 ID:x0rg5fHd.net]
お題:1辺がn文字の正四角形を表示せよ
1 <= n <= 8 とする

1041 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 10:16:55.01 ID:V1sKjJZc.net]
haskell

https://ideone.com/4Kd3el

sqStr n = ""
++ "\x250f" ++ r "\x2501" ++ "\x2513" ++ "\n"
++ r ( "\x2503" ++ r "\x2001" ++ "\x2503" ++ " \n" )
++ "\x2517" ++ r "\x2501" ++ "\x251b" ++ "\n"
where r = concat . replicate ( n-2 )

main = putStr $ sqStr 10

1042 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 20:16:12.10 ID:r20LvnA2.net]
>>994 octave
https://ideone.com/k9cAWw
function s = f(n)
s = repmat('#', n);
s(2:end-1, 2:end-1) = ' ';
end

1043 名前:デフォルトの名無しさん [2022/11/17(木) 21:39:57.15 ID:BbSHYj/y.net]
うめ

1044 名前:デフォルトの名無しさん [2022/11/17(木) 21:40:03.49 ID:BbSHYj/y.net]
うめ

1045 名前:デフォルトの名無しさん [2022/11/17(木) 21:40:08.22 ID:BbSHYj/y.net]
うめ

1046 名前:デフォルトの名無しさん [2022/11/17(木) 23:04:00.66 ID:W9+RkUIs.net]


1047 名前:1001 [Over 1000 Thread ID:Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 516日 23時間 1分 3秒

1048 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<324KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef