プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part21
https://mevius.5ch.net/test/read.cgi/tech/1668333636/
探検
プログラミングのお題スレ Part22
1デフォルトの名無しさん
2023/08/03(木) 13:52:13.20ID:/xW45k0z305デフォルトの名無しさん
2024/03/09(土) 23:59:51.39ID:C74EWG6S306デフォルトの名無しさん
2024/03/10(日) 01:20:18.65ID:8NU5B5F+ >>304
面倒なので全て460円を引くと
A=0円 B=120円 C=140円
10個で760円という問題
面倒なのでさらに20で割ると
A=0円 B=6 C=7円
10個で38円という問題
つまり唯一奇数のCは偶数個が確定
Cが6個以上だと42円以上でオーバーしてNG
Cが4個だと28円で残り10円をA,Bで作れないからNG
Cが2個だと14円で残り24円はBが4個で残り4個がA
Cが0個だと0円で残り38円をA,Bで作れないからNG
つまり解は(A,B,C)=(4,4,2)しかない
面倒なので全て460円を引くと
A=0円 B=120円 C=140円
10個で760円という問題
面倒なのでさらに20で割ると
A=0円 B=6 C=7円
10個で38円という問題
つまり唯一奇数のCは偶数個が確定
Cが6個以上だと42円以上でオーバーしてNG
Cが4個だと28円で残り10円をA,Bで作れないからNG
Cが2個だと14円で残り24円はBが4個で残り4個がA
Cが0個だと0円で残り38円をA,Bで作れないからNG
つまり解は(A,B,C)=(4,4,2)しかない
307デフォルトの名無しさん
2024/03/10(日) 11:20:30.42ID:Doj9A/yB >>306
すごすぎるだろ、日本の未来を頼む
すごすぎるだろ、日本の未来を頼む
308デフォルトの名無しさん
2024/03/10(日) 19:06:13.20ID:qBLPZ6x8309デフォルトの名無しさん
2024/03/10(日) 20:08:55.20ID:6qxPF4Wx 2pass案は多少工夫したらかなり速い
n ␣␣m ␣296␣ ␣301-1 ␣301-2 ␣303␣ ␣2pass
5k␣␣5 ␣ 0.5s ␣ 0.1s ␣ 0.5s ␣ 0.4s ␣ 0.1s
25k ␣5 ␣12.7s ␣ 2.5s ␣13.9s ␣11.1s ␣ 1.7s
100k␣5 ␣3m52s ␣49.3s ␣4m13s ␣3m26s ␣38.9s
1M* ␣6 ␣8h23m ␣2h50m ␣8h51m ␣6h43m ␣1h11m
*n=100万は1万サンプルの部分ループ500k≦r<510kから100倍
>>301の296と301-2の比較記述と違う傾向があるのはキャッシュ階層の違いだと思う
2passは301-1に近いけど1pass目でのランダムアクセスサイズを落としながらも
誤判定率を低く抑える(0.2%~2%)工夫をするのがお楽しみだと思う
n ␣␣m ␣296␣ ␣301-1 ␣301-2 ␣303␣ ␣2pass
5k␣␣5 ␣ 0.5s ␣ 0.1s ␣ 0.5s ␣ 0.4s ␣ 0.1s
25k ␣5 ␣12.7s ␣ 2.5s ␣13.9s ␣11.1s ␣ 1.7s
100k␣5 ␣3m52s ␣49.3s ␣4m13s ␣3m26s ␣38.9s
1M* ␣6 ␣8h23m ␣2h50m ␣8h51m ␣6h43m ␣1h11m
*n=100万は1万サンプルの部分ループ500k≦r<510kから100倍
>>301の296と301-2の比較記述と違う傾向があるのはキャッシュ階層の違いだと思う
2passは301-1に近いけど1pass目でのランダムアクセスサイズを落としながらも
誤判定率を低く抑える(0.2%~2%)工夫をするのがお楽しみだと思う
310デフォルトの名無しさん
2024/03/14(木) 14:43:15.33ID:ZraPd1+Q t
311デフォルトの名無しさん
2024/03/27(水) 23:42:08.75ID:sRZ89+IF >>304
a = (600, 580, 460)
m = min(a)
h = set()
def buy(b, yen):
if yen < m: return
for i in range(0, len(a)):
v = a[i]
if yen >= v:
b[i] += 1
if yen == v:
h.add(str(b))
else:
buy(b, yen - v)
b[i] -= 1
buy([0, 0, 0], 5360)
for s in h: print(s)
a = (600, 580, 460)
m = min(a)
h = set()
def buy(b, yen):
if yen < m: return
for i in range(0, len(a)):
v = a[i]
if yen >= v:
b[i] += 1
if yen == v:
h.add(str(b))
else:
buy(b, yen - v)
b[i] -= 1
buy([0, 0, 0], 5360)
for s in h: print(s)
312デフォルトの名無しさん
2024/03/27(水) 23:55:15.74ID:qNf/D02g >>304
Haskell
[(a, b, c) | a <- [0..20], b <- [0..20], c <- [0..20], a * 460 + b * 580 + c * 600 == 5360]
output: [(0,2,7),(4,4,2)]
Haskell
[(a, b, c) | a <- [0..20], b <- [0..20], c <- [0..20], a * 460 + b * 580 + c * 600 == 5360]
output: [(0,2,7),(4,4,2)]
313デフォルトの名無しさん
2024/03/28(木) 00:00:41.99ID:0Zoa9Vsx 合計10個という条件忘れてた。
[(a, b, c) | a <- [0..20], b <- [0..20], c <- [0..20], a + b + c == 10, a * 460 + b * 580 + c * 600 == 5360]
output: [(4,4,2)]
[(a, b, c) | a <- [0..20], b <- [0..20], c <- [0..20], a + b + c == 10, a * 460 + b * 580 + c * 600 == 5360]
output: [(4,4,2)]
314デフォルトの名無しさん
2024/03/31(日) 11:57:53.31ID:enek7T1c 大幅に手直しした
特に前回数値が一部出てこない状態になっていたので色々と手動で最適化した
新しいアイディアを思いつかない限りはシングルスレッドでの限界に近いと思う
n m 301-1 303 2pass 2pass'
5k 5 0.1s 0.4s 0.1s 0.1s
25k 5 2.5s 11.1s 2.3s* 1.7s
100k 5 49.3s 3m26s 38.9s 27.7s
1M* 6 2h50m 6h43m 1h11m 48m10s
2M* 6 17h06m 28h27m 5h47m 3h13m
Max* 6 35h51m 51h23m 11h09m 5h47m
*前回>>309 2pass n=25kの再計測値
*n=1Mは部分ループ500k<=r<510kから100倍
*n=2Mは部分ループ500k<=r<505kから400倍
*Max:=2642245は3乗がUINT64に収まる最大
*n=Maxは部分ループ500k<=r<500k+3785から2642245/3785倍
ヒント含みの数値がこちら
n D1 D2 D3 = 5000 5001 5003 5009
false_positive = 23 / 5001 = 0.46%
total_t_pass1 = 64.220 ms 2.568 ns/iter
total_t_pass2 = 0.044 ms 0.381 ns/iter
real 0m0.097s
特に前回数値が一部出てこない状態になっていたので色々と手動で最適化した
新しいアイディアを思いつかない限りはシングルスレッドでの限界に近いと思う
n m 301-1 303 2pass 2pass'
5k 5 0.1s 0.4s 0.1s 0.1s
25k 5 2.5s 11.1s 2.3s* 1.7s
100k 5 49.3s 3m26s 38.9s 27.7s
1M* 6 2h50m 6h43m 1h11m 48m10s
2M* 6 17h06m 28h27m 5h47m 3h13m
Max* 6 35h51m 51h23m 11h09m 5h47m
*前回>>309 2pass n=25kの再計測値
*n=1Mは部分ループ500k<=r<510kから100倍
*n=2Mは部分ループ500k<=r<505kから400倍
*Max:=2642245は3乗がUINT64に収まる最大
*n=Maxは部分ループ500k<=r<500k+3785から2642245/3785倍
ヒント含みの数値がこちら
n D1 D2 D3 = 5000 5001 5003 5009
false_positive = 23 / 5001 = 0.46%
total_t_pass1 = 64.220 ms 2.568 ns/iter
total_t_pass2 = 0.044 ms 0.381 ns/iter
real 0m0.097s
315デフォルトの名無しさん
2024/03/31(日) 11:58:50.32ID:enek7T1c n D1 D2 D3 = 25000 25003 25005 25006
false_positive = 171 / 25003 = 0.68%
total_t_pass1 = 1654.681 ms 2.647 ns/iter
total_t_pass2 = 1.407 ms 0.329 ns/iter
real 0m1.709s
false_positive = 2211 / 100005 = 2.21%
total_t_pass1 = 27338.298 ms 2.734 ns/iter
total_t_pass2 = 78.402 ms 0.355 ns/iter
real 0m27.692s
n D1 D2 D3 = 1000000 1000002 1000009 1000015
false_positive = 18 / 10000 = 0.18%
total_t_pass1 = 28674.338 ms 2.867 ns/iter
total_t_pass2 = 5.642 ms 0.313 ns/iter
real 0m28.897s
n D1 D2 D3 = 2000000 2000003 2000013 2000015
false_positive = 13 / 5000 = 0.26%
total_t_pass1 = 28777.424 ms 2.878 ns/iter
total_t_pass2 = 8.620 ms 0.332 ns/iter
real 0m29.015s
n D1 D2 D3 = 2642245 2642246 2642253 2642258
false_positive = 315 / 3785 = 8.32%
total_t_pass1 = 29210.857 ms 2.921 ns/iter
total_t_pass2 = 336.864 ms 0.405 ns/iter
real 0m29.800s
false_positive = 171 / 25003 = 0.68%
total_t_pass1 = 1654.681 ms 2.647 ns/iter
total_t_pass2 = 1.407 ms 0.329 ns/iter
real 0m1.709s
false_positive = 2211 / 100005 = 2.21%
total_t_pass1 = 27338.298 ms 2.734 ns/iter
total_t_pass2 = 78.402 ms 0.355 ns/iter
real 0m27.692s
n D1 D2 D3 = 1000000 1000002 1000009 1000015
false_positive = 18 / 10000 = 0.18%
total_t_pass1 = 28674.338 ms 2.867 ns/iter
total_t_pass2 = 5.642 ms 0.313 ns/iter
real 0m28.897s
n D1 D2 D3 = 2000000 2000003 2000013 2000015
false_positive = 13 / 5000 = 0.26%
total_t_pass1 = 28777.424 ms 2.878 ns/iter
total_t_pass2 = 8.620 ms 0.332 ns/iter
real 0m29.015s
n D1 D2 D3 = 2642245 2642246 2642253 2642258
false_positive = 315 / 3785 = 8.32%
total_t_pass1 = 29210.857 ms 2.921 ns/iter
total_t_pass2 = 336.864 ms 0.405 ns/iter
real 0m29.800s
316デフォルトの名無しさん
2024/03/31(日) 22:30:39.09ID:4FIGx2uN >>304
ぶっちゃけ、他の言語の人と同じっぽくないので心配なんだが…。
自分なりにHaskellで全探索じゃないバージョン書いてみた。
Haskell
[(a, b, c) | a <- [0..10], b <- [0..10 - a], c <- [0..10 - (a + b)], a * 460 + b * 580 + c * 600 == 5360, a + b + c == 10]
答えは同じ[(4,4,2)]。
ぶっちゃけ、他の言語の人と同じっぽくないので心配なんだが…。
自分なりにHaskellで全探索じゃないバージョン書いてみた。
Haskell
[(a, b, c) | a <- [0..10], b <- [0..10 - a], c <- [0..10 - (a + b)], a * 460 + b * 580 + c * 600 == 5360, a + b + c == 10]
答えは同じ[(4,4,2)]。
317デフォルトの名無しさん
2024/04/01(月) 04:52:23.91ID:iTC1bSa8 少し一般化して、N個の商品があり、i番目の商品はA_i円です
合計M個購入し、価格の合計がS円であるような購入の仕方を998244353で割った余りを求めてください
だとO(N M S)より小さい計算量で解けるのかな
合計M個購入し、価格の合計がS円であるような購入の仕方を998244353で割った余りを求めてください
だとO(N M S)より小さい計算量で解けるのかな
318デフォルトの名無しさん
2024/04/01(月) 16:50:08.47ID:0Kkx57P3 2個、4個、8個…みたいにメモ化すればMはlogMにできるかもしれんね
空間がlogM倍されそうだが
空間がlogM倍されそうだが
319デフォルトの名無しさん
2024/04/13(土) 11:43:17.27ID:itq2kjOw ヘロンの公式を実装せよ
使用言語:C
使用言語:C
32017
2024/04/13(土) 16:57:10.76ID:SxW/5mRR >>319
https://paiza.io/projects/_ZdSzHtV9YdEzV-oOySQWQ
Wikipedia でヘロンの公式を調べてそのまま実装しただけで、ほとんど何も考えてない。
https://paiza.io/projects/_ZdSzHtV9YdEzV-oOySQWQ
Wikipedia でヘロンの公式を調べてそのまま実装しただけで、ほとんど何も考えてない。
321デフォルトの名無しさん
2024/04/13(土) 23:01:22.75ID:wFZkrOeZ >>319
https://ideone.com/YCi6qe
ヘロンが作ったもう1つの式である平方根を加算と除算の繰り返しで求める式も使用。
sqrt関数を呼び出すより実行形式ファイルサイズがほんの少しだけ小さくなる。
https://ideone.com/YCi6qe
ヘロンが作ったもう1つの式である平方根を加算と除算の繰り返しで求める式も使用。
sqrt関数を呼び出すより実行形式ファイルサイズがほんの少しだけ小さくなる。
322デフォルトの名無しさん
2024/04/14(日) 00:59:32.83ID:ujzJ2+0Y323デフォルトの名無しさん
2024/04/14(日) 18:34:21.49ID:MHeAinLP 解答例
#include <stdio.h>
#include <math.h>
void heron(double, double, double);
int main(void)
{
double a, b, c;
printf("3辺a, b, cを入力せよ ");
scanf("%lf,%lf,%lf", &a, &b, &c);
heron(a, b, c);
}
void heron(double x, double y, double z) // heronの定義
{
double s, t;
s = (x+y+z)*0.5;
t = s*(s-x)*(s-y)*(s-z);
printf("3角形の面積は S=%g\n", sqrt(t));
return;
}
#include <stdio.h>
#include <math.h>
void heron(double, double, double);
int main(void)
{
double a, b, c;
printf("3辺a, b, cを入力せよ ");
scanf("%lf,%lf,%lf", &a, &b, &c);
heron(a, b, c);
}
void heron(double x, double y, double z) // heronの定義
{
double s, t;
s = (x+y+z)*0.5;
t = s*(s-x)*(s-y)*(s-z);
printf("3角形の面積は S=%g\n", sqrt(t));
return;
}
324デフォルトの名無しさん
2024/04/14(日) 18:36:52.16ID:MHeAinLP >>321 さすがですね
325デフォルトの名無しさん
2024/04/15(月) 21:01:04.41ID:dSNEYg5r >>322
p < 0 のとき(= 三角形を作れない場合)は浮動小数点数の特性に関係なく無限ループになる。
sqrt(p) と同様にNANを返すには、if (p < 0) return 0 / (p - p); を追加すれば良い。
p > 0 のときは無限ループにならないはず。以下が検証プログラム。
https://ideone.com/mzemEM
x = sqrt(p), y = p / x とすると、浮動小数点数の特性により x == y とならない場合は存在する。
このとき、xとyの仮数部を整数と見なした値(以降では「仮数整数」と呼ぶ)の差は1なので、
z = (x + y) / 2 はxとyのうち仮数整数が偶数の方に一致する。zを新たなxとして代入しyとzを
再計算すれば、今度はxの仮数整数が偶数なのでzはxに必ず一致し、>>321の収束判定条件が成立する。
具体例で見ると、p = 2 のときはxの仮数整数が奇数なので x != z となるが、zを新たなxとして代入し
再計算すれば x == z が成立する。桁上がりが起こる p = 3.9999999999999996 のときも、同様に
再計算で x == z が成立する。p = 3 のときはxの仮数整数が偶数なので x == z が成立し再計算は不要。
p < 0 のとき(= 三角形を作れない場合)は浮動小数点数の特性に関係なく無限ループになる。
sqrt(p) と同様にNANを返すには、if (p < 0) return 0 / (p - p); を追加すれば良い。
p > 0 のときは無限ループにならないはず。以下が検証プログラム。
https://ideone.com/mzemEM
x = sqrt(p), y = p / x とすると、浮動小数点数の特性により x == y とならない場合は存在する。
このとき、xとyの仮数部を整数と見なした値(以降では「仮数整数」と呼ぶ)の差は1なので、
z = (x + y) / 2 はxとyのうち仮数整数が偶数の方に一致する。zを新たなxとして代入しyとzを
再計算すれば、今度はxの仮数整数が偶数なのでzはxに必ず一致し、>>321の収束判定条件が成立する。
具体例で見ると、p = 2 のときはxの仮数整数が奇数なので x != z となるが、zを新たなxとして代入し
再計算すれば x == z が成立する。桁上がりが起こる p = 3.9999999999999996 のときも、同様に
再計算で x == z が成立する。p = 3 のときはxの仮数整数が偶数なので x == z が成立し再計算は不要。
326デフォルトの名無しさん
2024/04/15(月) 22:06:46.39ID:MxMoolaJ327デフォルトの名無しさん
2024/04/17(水) 05:47:35.77ID:F2fqxIYT ヘロンの公式はそのままだと、数値計算での安定性が良くないらしいぞ
解決策は、Wikipediaの英語版の方に…
tps://en.wikipedia.org/wiki/Heron%27s_formula#Numerical_stability
解決策は、Wikipediaの英語版の方に…
tps://en.wikipedia.org/wiki/Heron%27s_formula#Numerical_stability
328327
2024/04/17(水) 05:52:23.77ID:F2fqxIYT そしてこんなとこでもカハンせんせーの名前がが
329デフォルトの名無しさん
2024/04/17(水) 16:28:33.14ID:7JRzlbtx の長さ
この公式で計算される面積は、理論的には正しい値です。しかし、実際には、以下の理由で誤差が生じる可能性があります。
数値計算の誤差: 計算機で数値を扱う場合、有限桁しか扱えないため、丸め誤差が生じます。特に、辺の長さの値が大きく異なる三角形の場合、この誤差が顕著になります。
四捨五入誤差: 計算結果を小数点以下n桁まで表示する場合、n桁目以降の数字を切り捨てます。この四捨五入誤差も、面積の誤差に影響を与えます。
by Gemini
この公式で計算される面積は、理論的には正しい値です。しかし、実際には、以下の理由で誤差が生じる可能性があります。
数値計算の誤差: 計算機で数値を扱う場合、有限桁しか扱えないため、丸め誤差が生じます。特に、辺の長さの値が大きく異なる三角形の場合、この誤差が顕著になります。
四捨五入誤差: 計算結果を小数点以下n桁まで表示する場合、n桁目以降の数字を切り捨てます。この四捨五入誤差も、面積の誤差に影響を与えます。
by Gemini
330デフォルトの名無しさん
2024/04/17(水) 23:38:33.35ID:k4k/eSae >>327に載っている参考文献
William M. Kahan, ‘Miscalculating Area and Angles of a Needle-like Triangle’
http://www.cs.berkeley.edu/~wkahan/Triangle.pdf
のTable 1の問題がパソコン等でのC++プログラムでも再現されるか試してみた。
https://ideone.com/r4toUS
Table 1とは違い、Accurate Δが概ね正確な場合にHeron's Δ'が大きく懸け離れた不正確な値に
なってしまうことはなく、ほぼ同じ値になり差はごく僅かしかない。Table 1のような不安定性は
Table 1の計算に使われたプログラマブル関数電卓に特有の問題で、パソコン等のプログラムでは
再現されない。(パソコン等のdoubleの方が精度が高いので当然と言えば当然だが)
一方、(a, b, c) = (5278.64055, 94721.35941, 99999.99996)の場合は、逆にHeron's Δ' = 0が
正確なのにAccurate Δ = 9.53674324543714が大きく懸け離れた不正確な値になってしまう
重大な欠点がある。これは、Accurate Δの式の根号内の第2因数c - (a - b)が正確には0なのに
3.63797880709171e-12と計算されてしまい、この誤差が他の因数との乗算により増幅されるから。
Heron's Δ'の式の根号内の第4因数s - cは0と計算されるので問題ない。
double向けの入力値(a, b, c) = (31622.77777777662, 0.000000000023, 31622.77777777661)を
作れば、Heron's Δ' = 2.30085990753844e-07, Accurate Δ = 3.20111707955507e-07となり、
相対差は確かに大きくなるが、200ビットで計算したほぼ正確な値3.27490470056059e-07から
見れば両方とも不正確だから、Accurate Δの利点はない。
だから、パソコン等のプログラムでは改良版の式を使う必要がないどころか使うべきではなく、
ヘロンの公式をそのまま使う方が良い。
William M. Kahan, ‘Miscalculating Area and Angles of a Needle-like Triangle’
http://www.cs.berkeley.edu/~wkahan/Triangle.pdf
のTable 1の問題がパソコン等でのC++プログラムでも再現されるか試してみた。
https://ideone.com/r4toUS
Table 1とは違い、Accurate Δが概ね正確な場合にHeron's Δ'が大きく懸け離れた不正確な値に
なってしまうことはなく、ほぼ同じ値になり差はごく僅かしかない。Table 1のような不安定性は
Table 1の計算に使われたプログラマブル関数電卓に特有の問題で、パソコン等のプログラムでは
再現されない。(パソコン等のdoubleの方が精度が高いので当然と言えば当然だが)
一方、(a, b, c) = (5278.64055, 94721.35941, 99999.99996)の場合は、逆にHeron's Δ' = 0が
正確なのにAccurate Δ = 9.53674324543714が大きく懸け離れた不正確な値になってしまう
重大な欠点がある。これは、Accurate Δの式の根号内の第2因数c - (a - b)が正確には0なのに
3.63797880709171e-12と計算されてしまい、この誤差が他の因数との乗算により増幅されるから。
Heron's Δ'の式の根号内の第4因数s - cは0と計算されるので問題ない。
double向けの入力値(a, b, c) = (31622.77777777662, 0.000000000023, 31622.77777777661)を
作れば、Heron's Δ' = 2.30085990753844e-07, Accurate Δ = 3.20111707955507e-07となり、
相対差は確かに大きくなるが、200ビットで計算したほぼ正確な値3.27490470056059e-07から
見れば両方とも不正確だから、Accurate Δの利点はない。
だから、パソコン等のプログラムでは改良版の式を使う必要がないどころか使うべきではなく、
ヘロンの公式をそのまま使う方が良い。
331デフォルトの名無しさん
2024/04/18(木) 07:16:50.63ID:8T8m8Yde >(a, b, c) = (5278.64055, 94721.35941, 99999.99996)
>c - (a - b)が正確には0なのに3.63797880709171e-12と計算されてしまい
この例に限らず、たいていの場合a,b,cはdoubleでexactに格納されて無くて
この例では「c - (a - b)が正確には0」なのをチョイスしただけでは?
>c - (a - b)が正確には0なのに3.63797880709171e-12と計算されてしまい
この例に限らず、たいていの場合a,b,cはdoubleでexactに格納されて無くて
この例では「c - (a - b)が正確には0」なのをチョイスしただけでは?
332デフォルトの名無しさん
2024/04/18(木) 07:30:10.21ID:PYBA8OB3 パソロジカルな三角形をパラメトライズして面積を積分する検証はどう?
数式計算での正確な値
Heronで面積計算した時の数値積分
Accurateで面積計算した時の数値積分
を比べるのがフェアかなぁと
数式計算での正確な値
Heronで面積計算した時の数値積分
Accurateで面積計算した時の数値積分
を比べるのがフェアかなぁと
333デフォルトの名無しさん
2024/04/18(木) 07:34:09.77ID:PYBA8OB3 > 200ビットで計算したほぼ正確な値3.27490470056059e-07
この例だけ見るとAccurate Δの方が優れているように見えるので
>>331の様なチェリーピックはどちらの計算式でも出来るので平均的に近似が近い方が精度的に優れているかと
この例だけ見るとAccurate Δの方が優れているように見えるので
>>331の様なチェリーピックはどちらの計算式でも出来るので平均的に近似が近い方が精度的に優れているかと
334デフォルトの名無しさん
2024/04/18(木) 22:41:59.70ID:y7NBfn6/ >>331
その通り。そして、(a, b, c) = (10000.1, 10000.2, 20000.3)とすれば、正しい面積は0なのに
Heron's Δ' = 2.69745899635295とAccurate Δ = 1.34872949817647は両方とも大間違いになる。
この場合のようにHeron's Δ'での問題がAccurate Δで改善されないだけでなく、>>331の引用の
場合のようにHeron's Δ'では結果的に問題ないのにAccurate Δでは新たな問題が生じてしまうのは、
参考文献の11ページで述べられた
An algorithm stood convicted of numerical instability if it could be replaced by
a new algorithm at least about as fast and accurate as the old for all data,
and good for all data for which the old algorithm was bad.
すべてのデータに対して旧アルゴリズムと少なくとも同じくらい高速かつ正確であり、
かつ旧アルゴリズムが悪くなるすべてのデータに対して良くなる新アルゴリズムによって
置き換えることができるとしたら、旧アルゴリズムは数値的に不安定と判定される。
という判定条件を満たさないから、Accurate Δは改良版としての適性を欠く。
>>333
その例では有効桁数がHeron's Δ'は0桁、Accurate Δは1桁しかなく、どちらの品質も絶対的に
劣悪で、それらの間の相対的な優劣に大した意味はない。
そもそも針のように異様に細長い三角形が重箱の隅をつつくような話で、普通はそんな場合は
想定しなくても良く、ヘロンの公式で充分。そこを敢えてつつくなら、ヘロンの公式だけでなく
改良式もぼろが出てしまうだけ。
その通り。そして、(a, b, c) = (10000.1, 10000.2, 20000.3)とすれば、正しい面積は0なのに
Heron's Δ' = 2.69745899635295とAccurate Δ = 1.34872949817647は両方とも大間違いになる。
この場合のようにHeron's Δ'での問題がAccurate Δで改善されないだけでなく、>>331の引用の
場合のようにHeron's Δ'では結果的に問題ないのにAccurate Δでは新たな問題が生じてしまうのは、
参考文献の11ページで述べられた
An algorithm stood convicted of numerical instability if it could be replaced by
a new algorithm at least about as fast and accurate as the old for all data,
and good for all data for which the old algorithm was bad.
すべてのデータに対して旧アルゴリズムと少なくとも同じくらい高速かつ正確であり、
かつ旧アルゴリズムが悪くなるすべてのデータに対して良くなる新アルゴリズムによって
置き換えることができるとしたら、旧アルゴリズムは数値的に不安定と判定される。
という判定条件を満たさないから、Accurate Δは改良版としての適性を欠く。
>>333
その例では有効桁数がHeron's Δ'は0桁、Accurate Δは1桁しかなく、どちらの品質も絶対的に
劣悪で、それらの間の相対的な優劣に大した意味はない。
そもそも針のように異様に細長い三角形が重箱の隅をつつくような話で、普通はそんな場合は
想定しなくても良く、ヘロンの公式で充分。そこを敢えてつつくなら、ヘロンの公式だけでなく
改良式もぼろが出てしまうだけ。
335デフォルトの名無しさん
2024/04/18(木) 22:55:38.47ID:n9UdHBZN 総合すると有効桁じゃなくて精度が2桁良いし実装上は大差ないから改良版を使う、と言う方が自然では?
336デフォルトの名無しさん
2024/05/01(水) 12:56:47.83ID:nIC3qyB/ スレ落ちそうなのであげ
337デフォルトの名無しさん
2024/05/01(水) 15:39:17.16ID:hqp8cDbc >>336
嵐を呼び込むために・・・
嵐を呼び込むために・・・
338デフォルトの名無しさん
2024/05/01(水) 22:59:10.72ID:4hNncNW1 何でこんなに過疎化しちゃったのか。前に頻繁に出題していた人がいなくなったのか。
339デフォルトの名無しさん
2024/05/02(木) 10:32:38.87ID:ijoO2C2L お題を出してみてください
340デフォルトの名無しさん
2024/05/02(木) 16:59:52.63ID:DPVqLIsI341デフォルトの名無しさん
2024/05/02(木) 17:21:22.07ID:pg1ymc2D34217
2024/05/02(木) 18:44:04.16ID:LxBZq7I4 >>340
なるほど。それをやるか。
なるほど。それをやるか。
34317
2024/05/14(火) 05:34:03.62ID:ou5vbzLn じゃあ10年前のこのお題(URLを書くとNGになるようなので書かない)。
プログラミングのお題スレ Part4
115 :デフォルトの名無しさん:2014/06/21(土) 18:36:45.72 ID:/fMJIWig.net
お題:文字列Aを1回以上繰り返した文字列Bが与えられたとき
文字列Aを求める。ただしAの候補が複数ある場合は最短のものとする。
例
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> a
123412312341231234123123412312341231234123 -> 1234123
oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx -> oxoxoxoxoxoxoxoxx
プログラミングのお題スレ Part4
115 :デフォルトの名無しさん:2014/06/21(土) 18:36:45.72 ID:/fMJIWig.net
お題:文字列Aを1回以上繰り返した文字列Bが与えられたとき
文字列Aを求める。ただしAの候補が複数ある場合は最短のものとする。
例
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> a
123412312341231234123123412312341231234123 -> 1234123
oxoxoxoxoxoxoxoxxoxoxoxoxoxoxoxoxx -> oxoxoxoxoxoxoxoxx
344デフォルトの名無しさん
2024/05/14(火) 17:27:18.46ID:AXiunB2g ttps://ideone.com/KrUq7e
Z-algorithm を使って O(|B|) で解いてみた
Z-algorithm を使って O(|B|) で解いてみた
345 警備員[Lv.4][初]
2024/05/14(火) 20:59:46.84ID:xk+62xOP346 警備員[Lv.18]
2024/05/23(木) 14:16:50.64ID:zV267ZMC あれ?どんぐりの都合か?URL書いてあると書けなくなったような?
347 警備員[Lv.18]
2024/05/23(木) 14:17:56.56ID:zV267ZMC URLの先頭のhを抜いて書いてみよう。
>>343
Kotlin
こちらは普通に自作したやつ。
ttps://paiza.io/projects/OYy-A5rfKg7RqLzv-DKMIA
こちらは正規表現使ってとても小さくなったやつ。
ttps://paiza.io/projects/jgmtMRDhKfcjYfGAglEl3g
>>343
Kotlin
こちらは普通に自作したやつ。
ttps://paiza.io/projects/OYy-A5rfKg7RqLzv-DKMIA
こちらは正規表現使ってとても小さくなったやつ。
ttps://paiza.io/projects/jgmtMRDhKfcjYfGAglEl3g
348デフォルトの名無しさん
2024/06/01(土) 10:16:34.91ID:hzaQXY32 お題: コロン区切りの時分秒の時刻が与えられるので時分秒をそれぞれ掛け算した結果を表示せよ
例:
04:05:06
120
例:
04:05:06
120
349デフォルトの名無しさん
2024/06/01(土) 11:08:12.83ID:hzaQXY32 お題: バイト列が与えられる。先頭から解析した場合にバイトが1だったら次の4バイトを読み込んで整数として出力し、バイトが2だったら次のバイトを0が来るまで読み込んで文字列として出力せよ
入力
1 1 0 0 0 2 65 66 67 0 1 128 0 0 0
出力
1ABC128
入力
1 1 0 0 0 2 65 66 67 0 1 128 0 0 0
出力
1ABC128
350デフォルトの名無しさん
2024/06/01(土) 12:57:50.32ID:M5I0DyuF 知らんがな
351デフォルトの名無しさん
2024/06/01(土) 23:31:08.51ID:oEZc8FHN >>348
R
https://ideone.com/x4hIYG
>>349
C (データ識別子は1か2しかないものとし、整数のエンディアンは実行環境依存とする)
https://ideone.com/aJts6n
R
https://ideone.com/x4hIYG
>>349
C (データ識別子は1か2しかないものとし、整数のエンディアンは実行環境依存とする)
https://ideone.com/aJts6n
352 警備員[Lv.19]
2024/06/02(日) 04:45:03.04ID:yi3OE76t >>348
Perl
bash のコマンドラインから入力して実行(ワンライナー)
$ perl -ne 'if(/(\d+):(\d+):(\d+)/){print $1*$2*$3,"\n"}else{print"入力エラー\n"}'
1:2:3
6
3:4:5
60
04:05:06
120
$
Perl
bash のコマンドラインから入力して実行(ワンライナー)
$ perl -ne 'if(/(\d+):(\d+):(\d+)/){print $1*$2*$3,"\n"}else{print"入力エラー\n"}'
1:2:3
6
3:4:5
60
04:05:06
120
$
353 警備員[Lv.20]
2024/06/02(日) 05:19:02.45ID:yi3OE76t354デフォルトの名無しさん
2024/06/03(月) 13:25:02.42ID:21u+58W3 >>348
Windows のPowershell 上で、Ruby の1-liner を使う
末尾の改行を削除して、: で分割して、
文字列を数値型に変換してから、全ての要素を掛ける。
%Q で、ダブルクォーテーションをエスケープする。つまり、split(":")
echo '01:2:09' | ruby -ne 'puts $_.chomp.split(%Q[:]).map(&:to_i).inject(:*)'
18
Windows のPowershell 上で、Ruby の1-liner を使う
末尾の改行を削除して、: で分割して、
文字列を数値型に変換してから、全ての要素を掛ける。
%Q で、ダブルクォーテーションをエスケープする。つまり、split(":")
echo '01:2:09' | ruby -ne 'puts $_.chomp.split(%Q[:]).map(&:to_i).inject(:*)'
18
355デフォルトの名無しさん
2024/06/03(月) 15:28:01.42ID:p+D7Hh++ >ruby -ne 'p eval($_.gsub(":","*"))'
1:2:9
18
1:2:9
18
356デフォルトの名無しさん
2024/06/07(金) 06:27:47.87ID:ZJzD8UbY お題:引数sとnを取りシーザー暗号化を行う関数を作れ
sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列
同様の関数で「Hello, World!」を暗号化し復号化せよ
sは平文、nはずらす文字数(負数可)、返り値は暗号化後の文字列
同様の関数で「Hello, World!」を暗号化し復号化せよ
357デフォルトの名無しさん
2024/06/07(金) 09:04:03.36ID:tQi+9x5m #! ruby
class String
def to_c(n)
if %r|^n|=~n
n=(n.sub(%r|^n|,"").to_i+26)%26
lb=("A".."Z").to_a.join
sb=("a".."z").to_a.join
la=lb[n..25]+lb[0..n-1]
sa=sb[n..25]+sb[0..n-1]
return self.tr(lb,la).tr(sb,sa)
else
return self
end
end
end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!"
p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!"
p "Hello,World!".to_c("s") #=>"Hello,World!"
p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!"
p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
class String
def to_c(n)
if %r|^n|=~n
n=(n.sub(%r|^n|,"").to_i+26)%26
lb=("A".."Z").to_a.join
sb=("a".."z").to_a.join
la=lb[n..25]+lb[0..n-1]
sa=sb[n..25]+sb[0..n-1]
return self.tr(lb,la).tr(sb,sa)
else
return self
end
end
end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!"
p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!"
p "Hello,World!".to_c("s") #=>"Hello,World!"
p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!"
p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
358デフォルトの名無しさん
2024/06/07(金) 09:04:13.66ID:tQi+9x5m #! ruby
class String
def to_c(n)
if %r|^n|=~n
n=(n.sub(%r|^n|,"").to_i+26)%26
lb=("A".."Z").to_a.join
sb=("a".."z").to_a.join
la=lb[n..25]+lb[0..n-1]
sa=sb[n..25]+sb[0..n-1]
return self.tr(lb,la).tr(sb,sa)
else
return self
end
end
end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!"
p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!"
p "Hello,World!".to_c("s") #=>"Hello,World!"
p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!"
p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
class String
def to_c(n)
if %r|^n|=~n
n=(n.sub(%r|^n|,"").to_i+26)%26
lb=("A".."Z").to_a.join
sb=("a".."z").to_a.join
la=lb[n..25]+lb[0..n-1]
sa=sb[n..25]+sb[0..n-1]
return self.tr(lb,la).tr(sb,sa)
else
return self
end
end
end
p "Hello,World!".to_c("n3") #=>"Khoor,Zruog!"
p "Hello,World!".to_c("n-5") #=>"Czggj,Rjmgy!"
p "Hello,World!".to_c("s") #=>"Hello,World!"
p "Khoor,Zruog!".to_c("n-3") #=>"Hello,World!"
p "Czggj,Rjmgy!".to_c("n5") #=>"Hello,World!"
359デフォルトの名無しさん
2024/06/07(金) 21:13:26.78ID:U/DqAKAj360デフォルトの名無しさん
2024/06/07(金) 23:24:01.54ID:KUK95Vnh Haskell
範囲外の数値は平文字をそのまま返すこととした。
import Data.Char
cearsar n |(-26) <= n && n <= 26 = map (f n)
where
f x = chr.(+x).ord
cearsar _ = cearsar 0
sample:
ghci> cearsar 50 "Hello, World!"
"Hello, World!"
ghci> cearsar 3 "Hello, World!"
"Khoor/#Zruog$"
ghci> cearsar (-3) "Khoor/#Zruog$"
"Hello, World!"
範囲外の数値は平文字をそのまま返すこととした。
import Data.Char
cearsar n |(-26) <= n && n <= 26 = map (f n)
where
f x = chr.(+x).ord
cearsar _ = cearsar 0
sample:
ghci> cearsar 50 "Hello, World!"
"Hello, World!"
ghci> cearsar 3 "Hello, World!"
"Khoor/#Zruog$"
ghci> cearsar (-3) "Khoor/#Zruog$"
"Hello, World!"
361デフォルトの名無しさん
2024/06/07(金) 23:28:58.71ID:KMptjexu TA = [ * ?\x20 .. ?\x7E ]
TS = TA.join
def caesar( s, n ) s.tr( TS, TA.rotate( n ).join ) end
s = "Hello, World!"
p caesar( s, 0 ) #=> "Hello, World!"
p caesar( s, 1 ) #=> "Ifmmp-!Xpsme\""
p caesar( s, -1 ) #=> "Gdkkn+~Vnqkc "
p caesar( s, 20240607 ) #=> "Jgnnq.\"Yqtnf#"
p caesar( caesar( s, 20240607 ), -20240607 ) #=> "Hello, World!"
p caesar( 'HAL9000', 1 ) #=> "IBM:111"
TS = TA.join
def caesar( s, n ) s.tr( TS, TA.rotate( n ).join ) end
s = "Hello, World!"
p caesar( s, 0 ) #=> "Hello, World!"
p caesar( s, 1 ) #=> "Ifmmp-!Xpsme\""
p caesar( s, -1 ) #=> "Gdkkn+~Vnqkc "
p caesar( s, 20240607 ) #=> "Jgnnq.\"Yqtnf#"
p caesar( caesar( s, 20240607 ), -20240607 ) #=> "Hello, World!"
p caesar( 'HAL9000', 1 ) #=> "IBM:111"
3639
2024/06/13(木) 14:34:57.00ID:XgNTPGgf >>349
> 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」
正直、意味がわからんかった
例で見ると
1 1 0 0 0 → 1
1 128 0 0 0 → 128
ということだが
1に続く4バイトを加算して出力するって意味だったのかいな
> 「バイトが1だったら次の4バイトを読み込んで整数として出力し、」
正直、意味がわからんかった
例で見ると
1 1 0 0 0 → 1
1 128 0 0 0 → 128
ということだが
1に続く4バイトを加算して出力するって意味だったのかいな
364デフォルトの名無しさん
2024/06/13(木) 14:48:43.48ID:sldne70j >>363
整数が4バイト型という脳内補完だった
整数が4バイト型という脳内補完だった
365デフォルトの名無しさん
2024/06/13(木) 14:54:19.57ID:lNMgjwmg366デフォルトの名無しさん
2024/06/13(木) 14:59:03.73ID:fAZ1qthZ367デフォルトの名無しさん
2024/06/13(木) 15:00:51.22ID:lNMgjwmg3689
2024/06/13(木) 17:03:39.85ID:XgNTPGgf >>365
ああそういうことか「4バイトを読み込んで整数」と書いてあるのはそういう意味だったのか
ならわかるかも。
オレは4バイト一個一個が整数だと捉えて、それを「4バイトを読み込んで整数」とは何のこっちゃと?になってたわ
ああそういうことか「4バイトを読み込んで整数」と書いてあるのはそういう意味だったのか
ならわかるかも。
オレは4バイト一個一個が整数だと捉えて、それを「4バイトを読み込んで整数」とは何のこっちゃと?になってたわ
3699
2024/06/13(木) 17:07:01.55ID:XgNTPGgf すまんね68系で育ったもんですぐ連想できなんだ
370デフォルトの名無しさん
2024/06/14(金) 21:10:23.18ID:H7FTNa+g371デフォルトの名無しさん
2024/06/14(金) 21:15:46.04ID:cNkcubsv 例を示しての出題だから
372 警備員[Lv.23]
2024/06/15(土) 16:15:42.96ID:h/vMPGM+ >>356
Kotlin
面倒なのでASCIIコード(0x20-0x7e)でしかシフトしないやつを作った。
まあでも Kotlin は Java 同様に内部でUnicodeで扱っているので平仮名とか漢字とか全然違う言語の文字とかも比較的楽に追加できると思う。
https://paiza.io/projects/5H9H1zSjDnVshGCf4JaQJg
Kotlin
面倒なのでASCIIコード(0x20-0x7e)でしかシフトしないやつを作った。
まあでも Kotlin は Java 同様に内部でUnicodeで扱っているので平仮名とか漢字とか全然違う言語の文字とかも比較的楽に追加できると思う。
https://paiza.io/projects/5H9H1zSjDnVshGCf4JaQJg
373デフォルトの名無しさん
2024/06/19(水) 15:22:47.09ID:xfTENZQh374デフォルトの名無しさん
2024/06/20(木) 17:43:48.64ID:0f6ktMCR375デフォルトの名無しさん
2024/06/20(木) 20:17:47.11ID:0f6ktMCR376デフォルトの名無しさん
2024/06/21(金) 02:17:42.15ID:wIxdZD1d 迷路。やっつけで汚い。乱数自前
C
https://paiza.io/projects/5vyyygrG7exduzqDa-jBAA
Rust
https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
C
https://paiza.io/projects/5vyyygrG7exduzqDa-jBAA
Rust
https://paiza.io/projects/g1UmjFWydgmjAEZAgqS5xw
377デフォルトの名無しさん
2024/06/21(金) 05:01:41.33ID:wIxdZD1d378デフォルトの名無しさん
2024/07/26(金) 09:46:37.73ID:PcAUXe08 お題:配管サイズの「A呼称」「B呼称」の相互変換
tps://www.keyence.co.jp/ss/products/process/flowmeter/technique/size.jsp
などに掲載されている「A呼称」から「B呼称」への変換。及びその逆変換。
「A呼称」は整数値で(8とか)、「B呼称」は実数(0.125とか)または分母を8とする分数の分子(1とか)で表すものとする。
規格に存在しない場合(42Aとか)は考慮しなくてもよい。
表を引くだけなら簡単過ぎるので、ツェラーの公式の様な「技巧的」な解法を求む。
tps://www.keyence.co.jp/ss/products/process/flowmeter/technique/size.jsp
などに掲載されている「A呼称」から「B呼称」への変換。及びその逆変換。
「A呼称」は整数値で(8とか)、「B呼称」は実数(0.125とか)または分母を8とする分数の分子(1とか)で表すものとする。
規格に存在しない場合(42Aとか)は考慮しなくてもよい。
表を引くだけなら簡単過ぎるので、ツェラーの公式の様な「技巧的」な解法を求む。
379デフォルトの名無しさん
2024/07/27(土) 06:14:08.30ID:QMQQaL7S REM 呼称変換.bat
chcp 65001
ruby -x "%~f0"
ruby tmp.rb
goto end
#~
#!ruby
#encoding: utf-8
Encoding.default_external='UTF-8'
require 'base64'
st=<<'EOS'
IyFydWJ5CiNlbmNvZGluZzogdXRmLTgKRW5jb2RpbmcuZGVmYXVsdF9leHRl
cm5hbD0nVVRGLTgnCgpjbGFzcyBPYmplY3QKICBkZWYgdG9fZmwKICAgIHJl
dHVybiBldmFsKHNlbGYuc3BsaXQoIisiKS5tYXB7fGV8CiAgICAgIGUuc3Bs
aXQoIi8iKS5tYXB7fGZ8IGYudG9fZi50b19zfS4KICAgICAgam9pbigiLyIp
fS5qb2luKCIrIikpCiAgZW5kCmVuZAoKY2xhc3MgTnVtZXJpYwogIEBAYT1b
Niw4LDEwLDE1LDIwLDI1LDMyLDQwLDUwLDY1LAogICAgICA4MCw5MCwxMDAs
MTI1LDE1MCwxNzUsMjAwLDIyNV0KICBAQGI9WyIxLzgiLCIxLzQiLCIzLzgi
LCIxLzIiLCIzLzQiLCIxIiwKICAgICAgIjErMS80IiwiMSsxLzIiLCIyIiwi
MisxLzIiLCIzIiwKICAgICAgIjMrMS8yIiwiNCIsIjUiLCI2IiwiNyIsIjgi
LCI5Il0KICBAQGM9QEBiLm1hcHt8ZXwgZS50b19mbH0KICBkZWYgYV90b19i
CiAgICBuPXNlbGYKICAgIGlmIG48MjUwCiAgICAgIGE9NgogICAgICBAQGEu
ZWFjaHt8ZXwgYT1lIGlmIGUvbjw9MS4wfQogICAgICBiPUBAYltAQGEuaW5k
ZXgoYSldCiAgICAgIGM9QEBjW0BAYS5pbmRleChhKV0KICAgICAgcmV0dXJu
ICIoYT0je2F9KSBiPSN7Yn09I3tjfSIKICAgIGVsc2UKICAgICAgYT0obi81
MCkudG9faSo1MAogICAgICBiPWEvMjUKICAgICAgcmV0dXJuICIoYT0je2F9
chcp 65001
ruby -x "%~f0"
ruby tmp.rb
goto end
#~
#!ruby
#encoding: utf-8
Encoding.default_external='UTF-8'
require 'base64'
st=<<'EOS'
IyFydWJ5CiNlbmNvZGluZzogdXRmLTgKRW5jb2RpbmcuZGVmYXVsdF9leHRl
cm5hbD0nVVRGLTgnCgpjbGFzcyBPYmplY3QKICBkZWYgdG9fZmwKICAgIHJl
dHVybiBldmFsKHNlbGYuc3BsaXQoIisiKS5tYXB7fGV8CiAgICAgIGUuc3Bs
aXQoIi8iKS5tYXB7fGZ8IGYudG9fZi50b19zfS4KICAgICAgam9pbigiLyIp
fS5qb2luKCIrIikpCiAgZW5kCmVuZAoKY2xhc3MgTnVtZXJpYwogIEBAYT1b
Niw4LDEwLDE1LDIwLDI1LDMyLDQwLDUwLDY1LAogICAgICA4MCw5MCwxMDAs
MTI1LDE1MCwxNzUsMjAwLDIyNV0KICBAQGI9WyIxLzgiLCIxLzQiLCIzLzgi
LCIxLzIiLCIzLzQiLCIxIiwKICAgICAgIjErMS80IiwiMSsxLzIiLCIyIiwi
MisxLzIiLCIzIiwKICAgICAgIjMrMS8yIiwiNCIsIjUiLCI2IiwiNyIsIjgi
LCI5Il0KICBAQGM9QEBiLm1hcHt8ZXwgZS50b19mbH0KICBkZWYgYV90b19i
CiAgICBuPXNlbGYKICAgIGlmIG48MjUwCiAgICAgIGE9NgogICAgICBAQGEu
ZWFjaHt8ZXwgYT1lIGlmIGUvbjw9MS4wfQogICAgICBiPUBAYltAQGEuaW5k
ZXgoYSldCiAgICAgIGM9QEBjW0BAYS5pbmRleChhKV0KICAgICAgcmV0dXJu
ICIoYT0je2F9KSBiPSN7Yn09I3tjfSIKICAgIGVsc2UKICAgICAgYT0obi81
MCkudG9faSo1MAogICAgICBiPWEvMjUKICAgICAgcmV0dXJuICIoYT0je2F9
380デフォルトの名無しさん
2024/07/27(土) 06:15:03.76ID:QMQQaL7S KSBiPSN7Yn0iCiAgICBlbmQKICBlbmQKICBkZWYgYl90b19hCiAgICBuPXNl
bGYKICAgIGlmIG48MTAKICAgICAgYz0wLjEyNQogICAgICBAQGMuZWFjaHt8
ZXwgYz1lIGlmIGUvbjw9MS4wfQogICAgICBhPUBAYVtAQGMuaW5kZXgoYyld
CiAgICAgIGI9QEBiW0BAYy5pbmRleChjKV0KICAgICAgcmV0dXJuICIoYj0j
e2J9PSN7Y30pIGE9I3thfSIKICAgIGVsc2UKICAgICAgYj1uLnRvX2kKICAg
ICAgYT1iKjI1CiAgICAgIHJldHVybiAiKGI9I3tifSkgYT0je2F9IgogICAg
ZW5kCiAgZW5kCmVuZAoKd2hpbGUgMQogIGFyPVsi77yh5ZG856ew44GL44KJ
77yi5ZG856ewIiwi77yi5ZG856ew44GL44KJ77yh5ZG856ewIiwi57WC5LqG
Il0KICBtc2c9YXIubWFwLndpdGhfaW5kZXh7fGUsaXwiI3tpKzF9OiN7ZX0i
fS5qb2luKCJcbiIpKyJcbiIKICBwcmludCBtc2crImlucHV0IG51bWJlciA+
ICIKICBuPSRzdGRpbi5nZXRzLnRvX2kKICBicmVhayBpZiBuPT0zCiAgbmV4
dCBpZiBuPT0wCiAgd2hpbGUgMQogICAgcHJpbnQgIiN7YXJbbi0xXX06aW5w
dXQgdmFsdWUgPiAiCiAgICBtPSRzdGRpbi5nZXRzLmNob21wCiAgICBicmVh
ayBpZiBtPT0iIgogICAgbT1tLnRvX2ZsCiAgICBwdXRzIG0uYV90b19iIGlm
IG49PTEKICAgIHB1dHMgbS5iX3RvX2EgaWYgbj09MgogIGVuZAplbmQK
EOS
File.write("tmp.rb",Base64.decode64(st))
__END__
:end
bGYKICAgIGlmIG48MTAKICAgICAgYz0wLjEyNQogICAgICBAQGMuZWFjaHt8
ZXwgYz1lIGlmIGUvbjw9MS4wfQogICAgICBhPUBAYVtAQGMuaW5kZXgoYyld
CiAgICAgIGI9QEBiW0BAYy5pbmRleChjKV0KICAgICAgcmV0dXJuICIoYj0j
e2J9PSN7Y30pIGE9I3thfSIKICAgIGVsc2UKICAgICAgYj1uLnRvX2kKICAg
ICAgYT1iKjI1CiAgICAgIHJldHVybiAiKGI9I3tifSkgYT0je2F9IgogICAg
ZW5kCiAgZW5kCmVuZAoKd2hpbGUgMQogIGFyPVsi77yh5ZG856ew44GL44KJ
77yi5ZG856ewIiwi77yi5ZG856ew44GL44KJ77yh5ZG856ewIiwi57WC5LqG
Il0KICBtc2c9YXIubWFwLndpdGhfaW5kZXh7fGUsaXwiI3tpKzF9OiN7ZX0i
fS5qb2luKCJcbiIpKyJcbiIKICBwcmludCBtc2crImlucHV0IG51bWJlciA+
ICIKICBuPSRzdGRpbi5nZXRzLnRvX2kKICBicmVhayBpZiBuPT0zCiAgbmV4
dCBpZiBuPT0wCiAgd2hpbGUgMQogICAgcHJpbnQgIiN7YXJbbi0xXX06aW5w
dXQgdmFsdWUgPiAiCiAgICBtPSRzdGRpbi5nZXRzLmNob21wCiAgICBicmVh
ayBpZiBtPT0iIgogICAgbT1tLnRvX2ZsCiAgICBwdXRzIG0uYV90b19iIGlm
IG49PTEKICAgIHB1dHMgbS5iX3RvX2EgaWYgbj09MgogIGVuZAplbmQK
EOS
File.write("tmp.rb",Base64.decode64(st))
__END__
:end
381デフォルトの名無しさん
2024/07/30(火) 12:03:21.52ID:zP/xDheD お題
C言語のトライグラフ(可能ならダイグラフも)と普通のテキストとの相互変換。
ファイルまたは標準入力から読んで変換した結果を標準出力に出力する。
面倒なら文字列変換する関数とそれをテストするメイン関数のみでも良い。
C言語のトライグラフ(可能ならダイグラフも)と普通のテキストとの相互変換。
ファイルまたは標準入力から読んで変換した結果を標準出力に出力する。
面倒なら文字列変換する関数とそれをテストするメイン関数のみでも良い。
382 警備員[Lv.8]
2024/08/03(土) 07:16:23.70ID:HS6IEZQf お題
Unicode 文字列を UTF-9 へ変換する。また UTF-9 を Unicode 文字列に変換する。
ただし1バイトが9bitではないコンピュータを使用する場合は9bit以上で扱いやすいbit数の変数(例えば 16bitの変数)を代用して下9bitのみを使用する等しても良い。
UTF-9 の仕様は RFC 4042 を見るか、または下記URLのページを参照。
https://www.wdic.org/w/WDIC/UTF-9%20%28RFC%29
Unicode 文字列を UTF-9 へ変換する。また UTF-9 を Unicode 文字列に変換する。
ただし1バイトが9bitではないコンピュータを使用する場合は9bit以上で扱いやすいbit数の変数(例えば 16bitの変数)を代用して下9bitのみを使用する等しても良い。
UTF-9 の仕様は RFC 4042 を見るか、または下記URLのページを参照。
https://www.wdic.org/w/WDIC/UTF-9%20%28RFC%29
383 警備員[Lv.9]
2024/08/03(土) 17:38:42.19ID:HS6IEZQf >>381
Kotlin
Digraph, Trigraph の変換と逆変換
https://paiza.io/projects/FPUStm3O4tZZMYi1Cw2ruw
https://paiza.io/projects/4vD2Ux8Jd6EzLIynkzTXtw
Map と正規表現使った簡単な変換なので他の言語で作っても大差ないと思う。
Kotlin
Digraph, Trigraph の変換と逆変換
https://paiza.io/projects/FPUStm3O4tZZMYi1Cw2ruw
https://paiza.io/projects/4vD2Ux8Jd6EzLIynkzTXtw
Map と正規表現使った簡単な変換なので他の言語で作っても大差ないと思う。
384デフォルトの名無しさん
2024/08/03(土) 20:58:23.65ID:S2fEkJP0 お題
整数の格子がある(伝われ)
任意の2点間を線で結ぶ(座標成分は実数)
格子と交わるところで線を分割せよ
整数の格子がある(伝われ)
任意の2点間を線で結ぶ(座標成分は実数)
格子と交わるところで線を分割せよ
385デフォルトの名無しさん
2024/08/03(土) 21:19:51.17ID:VMb0ie+F >>384
jwwの外部変形としてこんな感じで交点で分割させるの作ったことあるけどプログラミングスレののお題としては座標指定もなく漠然としすぎていていかがなものか。ちょっと伝わんなかった。
jwwの外部変形としてこんな感じで交点で分割させるの作ったことあるけどプログラミングスレののお題としては座標指定もなく漠然としすぎていていかがなものか。ちょっと伝わんなかった。
386デフォルトの名無しさん
2024/08/03(土) 21:36:58.95ID:dM8NlTKR387デフォルトの名無しさん
2024/08/03(土) 21:50:20.46ID:VMb0ie+F >>386
二直線の交点は連立方程式を解けば良くて行列を使えば簡単だけど、どういう回答が求められてるのかが分からず途方に暮れております
二直線の交点は連立方程式を解けば良くて行列を使えば簡単だけど、どういう回答が求められてるのかが分からず途方に暮れております
388デフォルトの名無しさん
2024/08/03(土) 22:08:55.42ID:/AInVOhB >>386
出直し
出直し
389デフォルトの名無しさん
2024/08/03(土) 22:28:33.50ID:Dl6/uvrz クイズと「プログラミングのお題」との決定的な違い
検証するための入力(問題)と出力(解答)例が明記されているかどうか
検証するための入力(問題)と出力(解答)例が明記されているかどうか
390デフォルトの名無しさん
2024/08/03(土) 22:29:35.16ID:S2fEkJP0 テンプレに書いてなかったしいいやって思っちゃった
ここまで伝わらんもんなのか…
ここまで伝わらんもんなのか…
391デフォルトの名無しさん
2024/08/03(土) 22:35:56.24ID:S2fEkJP0 具体例を計算するのはめんどくさいけど、例えばさっきの絵で言えば右上が始点で左下が終点なら始点側から順番に座標を出力するとかね
392デフォルトの名無しさん
2024/08/03(土) 22:41:57.69ID:Dl6/uvrz393デフォルトの名無しさん
2024/08/03(土) 22:42:49.82ID:t4RpIT1N >>390
そういうことは伝える努力をしてから言おうな
そういうことは伝える努力をしてから言おうな
394デフォルトの名無しさん
2024/08/03(土) 22:44:30.36ID:S2fEkJP0 めんどくさい
そこまでして出そうと思わんから興味ないならスルーで
そこまでして出そうと思わんから興味ないならスルーで
395デフォルトの名無しさん
2024/08/03(土) 22:52:49.60ID:/AInVOhB この頭の悪さを見るに学校の課題か何かを丸投げしようとしてるのかな
396デフォルトの名無しさん
2024/08/03(土) 23:04:31.31ID:Dl6/uvrz 入出力例があると仕様が定まってプログラミングのお題が成立する
入出力例がないと宿題を手伝わせようとしているだけの可能性も否定できないね
入出力例がないと宿題を手伝わせようとしているだけの可能性も否定できないね
397デフォルトの名無しさん
2024/08/04(日) 00:49:43.30ID:iskScWib398デフォルトの名無しさん
2024/08/04(日) 04:51:29.74ID:9TVMMXOl399デフォルトの名無しさん
2024/08/09(金) 23:38:00.57ID:PnKZlDGe お題:与えられた線分を指定された長さLで分割せよ。ただし最後に余る分は長さLでなくてもよい。
線分([始点,終点])=[[0,0],[100,100]]
L=50
↓
[[[0,0],[50,50]],[[50,50],[100,100]]]
線分([始点,終点])=[[0,0],[100,100]]
L=50
↓
[[[0,0],[50,50]],[[50,50],[100,100]]]
400 警備員[Lv.7]
2024/08/10(土) 04:24:35.61ID:C1sXjWXk401デフォルトの名無しさん
2024/08/10(土) 08:05:08.91ID:cX2Nc5cZ ごめん、ミスった
402デフォルトの名無しさん
2024/08/10(土) 08:07:10.85ID:cX2Nc5cZ 修正
線分([始点,終点])=[[0,0],[120,0]]
L=50
↓
[[[0,0],[50,0]],[[50,0],[100,0]],[[100,0],[120,0]]]
線分([始点,終点])=[[0,0],[120,0]]
L=50
↓
[[[0,0],[50,0]],[[50,0],[100,0]],[[100,0],[120,0]]]
403デフォルトの名無しさん
2024/08/10(土) 08:54:23.54ID:DYGkQoQe REM 座標計算.bat
chcp 65001
ruby -x "%~f0"
goto end
#~
#!ruby
#encoding: utf-8
Encoding.default_external='UTF-8'
require "matrix"
while 1
print "input start point > " #0,0
p1=$stdin.gets.split(",").map{|e| e.to_f}
print "input end point > " #120,0
p2=$stdin.gets.split(",").map{|e| e.to_f}
print "input length > " #50
l=$stdin.gets.to_f
exit if l<=0
p1[1]=0 unless p1[1]
p2[1]=0 unless p2[1]
v1=Vector.elements(p1)
v2=Vector.elements(p2)
m=(v2-v1).r
n=(m/l).to_i
a=(0..n).map{|e| l*e}
b=a.map{|e| v1+(v2-v1)*(e/(v2-v1).r)}.map{|e| e.to_a}
b<<p2
p b.uniq
end
__END__
:end
chcp 65001
ruby -x "%~f0"
goto end
#~
#!ruby
#encoding: utf-8
Encoding.default_external='UTF-8'
require "matrix"
while 1
print "input start point > " #0,0
p1=$stdin.gets.split(",").map{|e| e.to_f}
print "input end point > " #120,0
p2=$stdin.gets.split(",").map{|e| e.to_f}
print "input length > " #50
l=$stdin.gets.to_f
exit if l<=0
p1[1]=0 unless p1[1]
p2[1]=0 unless p2[1]
v1=Vector.elements(p1)
v2=Vector.elements(p2)
m=(v2-v1).r
n=(m/l).to_i
a=(0..n).map{|e| l*e}
b=a.map{|e| v1+(v2-v1)*(e/(v2-v1).r)}.map{|e| e.to_a}
b<<p2
p b.uniq
end
__END__
:end
404デフォルトの名無しさん
2024/08/20(火) 15:28:18.45ID:YrWgN0+y お題:今日、または任意の日付から、もういくつ寝るとお正月かを求めよ。(昼寝は除く)
レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- バービー、 台湾有事の発言の波紋で「たまったもんじゃない」「高市さんに真意は聞きたい」「国民に向けて説明してほしい」 [muffin★]
- 20代の3割が「テレビ見ない」現実…そして静かに広がる「究極のテレビ離れ」とは [muffin★]
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- んなっしょい🍬禁止🈲のお🏡
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】ガラパゴス島国ジャップ、自分達の容姿が優れてると錯覚してしまう [383063292]
