プログラミングのお題スレ Part12 at TECH
[2ch|▼Menu]
[前50を表示]
1000:デフォルトの名無しさん
19/02/01 23:12:44.04 VdCPb4pG.net
URLリンク(ideone.com)
Newton-Raphson法ほど速くはないがせめてO(log(N))くらいで実装せにゃお題として出てくる意味がなかろう

1001:デフォルトの名無しさん
19/02/02 00:09:40.70 /6KX0oFw.net
>>959 Lua
function isSquare(n)
local a = 0
local i = 1
while a < n do
a = a + i
i = i + 2
end
return a == n
end
print(isSquare(100000))
print(isSquare(10000))

1002:デフォルトの名無しさん
19/02/02 03:47:32.54 i2SNxKFt.net
いっそsqrt 関数実装。
頭悪いんで数学的じゃない。
256以上入れるとフリーズするけど、その範囲なら精度抜群。
精度を1つ落とすと(range(15)の値を1つ減らすと)2桁くらい大きな数を入れてもフリーズしなくなる。
def sqrt(x):
i = 1
if x == 0:
return 0
while x >= (i * i):
if x / i == i:
return i
i += 1
i -= 1
a = 0.1
for j in range(15):
while x >= (i * i):
i += a
i -= a
a *= 0.1
return (i - a)

1003:デフォルトの名無しさん
19/02/02 09:51:18.58 /6KX0oFw.net
>>959 J
f =: = *: @ <. @ %:

1004:デフォルトの名無しさん
19/02/02 13:18:27.64 CwD+xRo8.net
平方数かどうかを高速に判定する方法 - hnwの日記
URLリンク(hnw.hatenablog.com)

GNU MPのmpz_perfect_square_p関数の実装
GNU MPのソースコードを確認してみたところ、次のような処理だとわかります。
引数nのmod 256を計算し、平方数ではない数を判定する
平方数のmod 256は44種類の値しか出現しないので、入力の82.8%は平方数でないと判定できる
同様に入力nのmod 9, 5, 7, 13, 17(64-bitシステムではmod 97も)を計算し、平方数ではない数を判定する
これにより入力の99.25%(64-bitシステムでは99.62%)について平方数でないと判定できる
最後に、平方根を計算して平方数かどうか確認する
平方数ではない数の多くを事前にふるい落とし、判定できなかった数だけ真面目に平方根を求める、という方針だとわかります。
もちろん、GNU MPの場合のmod pの選び方は多倍長整数演算ならではだと言えます。
mod 256はサイズNにかかわらずO(1)で計算できるので、最初に行うことで全体の高速化に貢献できます。
また、2ステップ目の計算も2^24-1 = 9 * 5 * 7 * 13 * 17 * ...であることを利用し、多倍長整数であっても比較的高速に計算できるような実装になっています。
10進整数でmod 9を求める場合に全部の桁を足し合わせてからmod 9しても同じ結果になるのと同様、
下位から24bit区切りの数を足し合わせてからmod 2^24-1を計算することで、元の数のmod 2^24-1が計算できるのです。

1005:デフォルトの名無しさん
19/02/02 13:43:47.68 OgiywF+Q.net
>>949
えぇ…

1006:デフォルトの名無しさん
19/02/02 16:31:05.91 9W2pTWu+.net
>>972 その心は?

1007:デフォルトの名無しさん
19/02/02 16:42:03.23 OgiywF+Q.net
>>970
えぇ…
の間違い。

1008:デフォルトの名無しさん
19/02/02 17:31:46.69 rEiZ26fd.net
本質的に高度な数学的知識が要求され
る問題は板違いかと
言語によっては、問題にジャストフィット
するライブラリが標準で添付されているとか
ライブラリ管理コミュニティを通じて
容易に入手できるとかあるかもしれないが
その場合は紹介程度に。
言語処理系の言語処理の為の機能提供
である場合を除いて多くは本質的に多言
語に対応しており〜言語用のライブラリと
いう表現は兎も角〜言語のライブラリと表
現すると曖昧で誤解を招きやすい表現
として嫌われる場合もありえることに注意。
(別言語で記述される場合もある)

1009:デフォルトの名無しさん
19/02/02 17:36:46.77 XgXX/tZQ.net
なんしたのきゅうに

1010:デフォルトの名無しさん
19/02/02 17:57:26.00 rEiZ26fd.net
セルフホスティング対応な言語でライブラリを
自前で構成しているもので、他言語に移植されて
いない独自の機能を持つものもあるかもしれない
し、もっと極端に言えば独自性の高いライブラリに
最適化された言語を自前で作ってそれで記述され
ているものもあるかもしれないけど一般的には入手
は容易ではないかも

1011:デフォルトの名無しさん
19/02/02 19:52:10.51 hDNgHqpo.net
じゃあさ、各々複数行の
a.txt と、b.txtを並べて表示して。

1012:デフォルトの名無しさん
19/02/02 23:25:24.42 g8xy/J6N.net
辺に沿って動くとき、AからBまでの最短経路はいくつあるか
         ┏┳┳┳┓B
         ┣╋╋╋┫
      ┏┳╋╋╋╋┫
┏┳┳┳╋╋╋╋╋┻┛
┣╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋┫
┣╋╋╋╋╋╋╋┛
┗┻┻┻┻┻┻┛
A

1013:デフォルトの名無しさん
19/02/03 00:45:38.22 UGH880J+.net
おねえさんがロボットになるやつかw

1014:デフォルトの名無しさん
19/02/03 00:55:19.58 UTpNqxd4.net



1015:学受験の算数の問題に経路を数える問題があるよな つまり小学生でも手計算で解ける



1016:デフォルトの名無しさん
19/02/03 00:57:22.00 72eosYJ+.net
>>975 アホちゃうの?
プログラムというのは、問題解決のための言語であって、問題が解決できなければどんなに美しい言語でも存在価値はない。
最速で美しく問題解決にたどり着ける言語が一番。 言語そのものの美しさなんて二の次。
英語でも日本語でも何でも良い。 利用できるものは何でも利用すれば良い。 好き嫌い言ってる奴はアホ。
どんなに綺麗な国の言葉でも高等教育が自国語でできない国がほとんど、それは利用できる教材が自国語で書いたものがないから。
日本語だったら英語を知らなくてもノーベル賞が取れるだけの教材(ライブラリ)が揃ってる。

1017:デフォルトの名無しさん
19/02/03 01:53:34.29 wxxHWwaf.net
別に高度な数学が必要になることは構わないけど、数学だけで話が閉じちゃうような問題はつまらないとは思う。数学的に解を求める解法自体が主題で、コーディングはただその解法を(日本語、英語などの自然言語と同様に)とあるプログラミング言語で記述しただけのような。
もちろん数学に価値がないといっているのではなく、話のウェイトとしてプログラムである部分がほぼないのなら、その話、ここじゃなくてもいいじゃんと思うよ。

1018:デフォルトの名無しさん
19/02/03 04:02:35.76 JyP+XfGy.net
つまらない問題だと思ったら無視すればいいだけじゃないかな
その問題に対して回答する人がいるなら、回答者(と出題者)にとっては
つまらない問題ではないってことなんだろうし

1019:デフォルトの名無しさん
19/02/03 04:46:34.72 1lu6X4vo.net
>>982
OS記述の言語は言語じゃないのか?
コンパイラなどの言語処理系記述の言語
も言語じゃないってわけだな
問題解決手段の一つではあるかもしれないが
通信系ソフトウェアの存在はどう説明?
既存の資産を維持しより効率的に活用する研究が
新しいプログラミング言語が次々と生成されてくる原
動力じゃないかと

1020:デフォルトの名無しさん
19/02/03 05:08:39.33 l3Qt7IvN.net
>>982
>日本語だったら英語を知らなくてもノーベル賞が取れるだけの教材(ライブラリ)が揃ってる。
ダウト。ノーベル賞を受賞した研究者はみんな英語で論文書いている。
あと、今の日本語での教育教材の蓄積があるのは、大雑把に言って、
ここ10年でノーベル賞受賞した面々の世代の研究者や技術者が書いた。
もちろん彼らは英語の文献を読み、勉強し、日本語の文献を書いた。
だから、英語の文献なんて要らないみたいな話はアホ。
ソファでポテチ食いながら「ジャガイモなんて買えばいいんだから、育ててる奴はアホ」と言ってるようなもの。

1021:981
19/02/03 05:15:20.75 l3Qt7IvN.net
プログラミング言語も一緒。
Cは泥臭い実用言語で、その前にはAlgolなど「綺麗な」言語が下敷きとしてあった。
Cは現在でも多くの問題を解決するための道具として活用されているが、
現在では使われていないAlgolなどの「綺麗な」言語なしにCは生まれなかった。

1022:デフォルトの名無しさん
19/02/03 05:39:02.55 1lu6X4vo.net
個々の言語の歴史観の講釈はスレ違い
確かに問題解決の道具であることが
中心かもしれないが、扱ってきた問
題の種類によって文法やライブラリ・
その取り扱い方に差異が生じている
が、同じ問題を別言語で「解く」と
優劣の違いがわかって面白いかもし
れない。
が、あんまし長くやってると不毛な
言語比較論、文化比較論になったり
して色々ヤバいからそろそろ一旦
お開きにしたら?



1023:きはそれぞれの言語別スレッドで ということで



1024:デフォルトの名無しさん
19/02/03 07:04:30.87 LaZtKDWq.net
お題:プログラムの実行時刻が午前なら「おはようございます、ご主人様!」、午後なら「お疲れ様です、ご主人様!」と表示させる

1025:デフォルトの名無しさん
19/02/03 07:48:34.73 AEg+fU/i.net
>>989 C
time_t now = time(NULL);
struct tm *p = localtime(&now);
if (p->tm_hour * 60 + p->tm_min < 12 * 60) {
  printf("おはようございます、ご主人様!\n");
} else if (p->tm_hour * 60 + p->tm_min > 12 * 60) {
  printf("お疲れ様です、ご主人様!\n");
}

1026:デフォルトの名無しさん
19/02/03 08:56:17.85 l3Qt7IvN.net
>>989
Pharo Smalltalk
Smalltalk ui inform: (Time now meridianAbbreviation = 'AM' ifTrue: [ 'おはようございます、ご主人様!' ] ifFalse: [ 'お疲れ様です、ご主人様!' ])

1027:デフォルトの名無しさん
19/02/03 09:19:47.58 72eosYJ+.net
python
from datetime import datetime
if datetime.now().hour < 12:
print('おはようございますご主人様')
else:
print('お疲れ様です、ご主人様')

1028:デフォルトの名無しさん
19/02/03 09:23:27.86 1lu6X4vo.net
午前12時=00:00
午後12時=12:00
23:59の後は00:00
午前12時=12:00
午後12時=24:00
24:00の後は00:01

1029:デフォルトの名無しさん
19/02/03 09:40:26.58 cfde/ig7.net
>>865 Common Lisp
URLリンク(pastebin.com)
実行結果
URLリンク(i.imgur.com)

1030:デフォルトの名無しさん
19/02/03 09:58:12.21 I0qputsI.net
>>969 のHaskell版。
負の数の場合の処理、負の数含め、絶対値が256以上だった場合エラー吐く様に処理を追加。
※Haskellは整数と少数を明確に分ける為、渡す数に小数点が無いとエラーになる。
mysqrt x = mysqrt' x 0
where
mysqrt' x m |x < 0 = - mysqrt (abs x)
mysqrt' x m |x == m * m = m
mysqrt' x m |x < m * m = fsqrt x (m - 1) 0.1 15
mysqrt' x m = mysqrt' x (m + 1)
fsqrt _ a _ 0 = a
fsqrt v _ _ _ | v > 256 = error "\"fsqr\":out of range 0..256"
fsqrt v a f n | v <= a * a = fsqrt v (a - f) (f * 0.1) (n - 1)
fsqrt v a f n = fsqrt v (a + f) f n
使用例
main = print (mysqrt x) >> print (mysqrt x * mysqrt x)
結果
1.41421356237309
2.0

1031:デフォルトの名無しさん
19/02/03 10:00:13.11 I0qputsI.net
fsqrt v _ _ _ | v > 256 = error "\"fsqr\":out of range 0..256"
fsqrt v a f n | v <= a * a = fsqrt v (a - f) (f * 0.1) (n - 1)
fsqrt v a f n = fsqrt v (a + f) f n

1032:デフォルトの名無しさん
19/02/03 10:13:31.71 xEPkQ4sk.net
この改行長文おじさんはどこからきたの。笑

1033:
19/02/03 10:31:38.09 t4xt++Qj.net
>>982
>日本語だったら英語を知らなくてもノーベル賞が取れるだけの教材(ライブラリ)が揃ってる。
最近はそうでもないようですよ…ペーパーは英語だし、教科書=テキストレベルでも英語でしか発刊されない状況といいます
haskell をやろうとして圏論の教科書を探しましたが、欧米の本の和訳ばかりで日本人が書いた圏論の教科書はありませんでした

1034:デフォルトの名無しさん
19/02/03 10:35:41.62 /jO+7TC8.net
誰か次スレ頼む

1035:デフォルトの名無しさん
19/02/03 11:07:15.54 72eosYJ+.net
お題1: 現在地の緯度、経度を出せ
緯度:、、、、
経度:、、、、
お題2: 東京都新宿区西新宿2丁目8-1 の緯度、経度を出せ
緯度:、、、
経度:、、、
お題3: お題2で求めた緯度経度から住所を出せ
郵便番号:、、、
住所:東京都、、、、

1036:デフォルトの名無しさん
19/02/03 11:22:46.76 72eosYJ+.net
立てたよ
プログラミングのお題スレ Part13
URLリンク(mevius.2ch.net)

1037:デフォルトの名無しさん
19/02/03 11:23:36.56 72eosYJ+.net
>>1000 は、次スレに移動させるね。

1038:デフォルトの名無しさん
19/02/03 17:37:12.27 csrqlAvs.net
うめ

1039:デフォルトの名無しさん
19/02/03 17:37:50.59 oUppVF8S.net
>>969
今までの苦労は一体。。。
数学的な平方根の近似値は√x = x ^ (1/2)だった。。。
Haskell だとこんだけ。
mysqrt x = x ** 0.5

1040:デフォルトの名無しさん
19/02/03 17:38:30.96 csrqlAvs.net
次スレ
プログラミングのお題スレ Part13
URLリンク(mevius.2ch.net)

1041:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 128日 7時間 29分 24秒

1042:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


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

1968日前に更新/360 KB
担当:undef