プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/
探検
プログラミングのお題スレ Part13
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/03(日) 11:21:53.20ID:72eosYJ+2019/02/03(日) 11:24:10.97ID:72eosYJ+
お題1: 現在地の緯度、経度を出せ
緯度:、、、、
経度:、、、、
お題2: 東京都新宿区西新宿2丁目8-1 の緯度、経度を出せ
緯度:、、、
経度:、、、
お題3: お題2で求めた緯度経度から住所を出せ
郵便番号:、、、
住所:東京都、、、、
緯度:、、、、
経度:、、、、
お題2: 東京都新宿区西新宿2丁目8-1 の緯度、経度を出せ
緯度:、、、
経度:、、、
お題3: お題2で求めた緯度経度から住所を出せ
郵便番号:、、、
住所:東京都、、、、
2019/02/03(日) 11:36:46.42ID:72eosYJ+
>>2 python (pythonista)
#お題1
import location
location.start_updates() # GPSデータ更新を開始
gps=location.get_location() # GPSデータを取得する
location.stop_updates()# GPSデータ更新を終了
print('お題1')
print('緯度:'+str(gps['latitude']))
print('経度:'+str(gps['longitude']))
#お題2
address_dict = {'Street': '西新宿2丁目8-1'}
gc = location.geocode(address_dict)[0]
print('お題2')
print('緯度:'+str(gc['latitude']))
print('経度:'+str(gc['longitude']))
#お題3
adr = location.reverse_geocode(gc)[0]
#print(adr)
print('お題3')
print('郵便番号:'+str(adr['ZIP']))
print('住所:'+str(adr['State'])+str(adr['City'])
+str(adr['Street']))
#結果
お題1
緯度:35.7----略
経度:139.6---略
お題2
緯度:35.689504
経度:139.6916833
お題3
郵便番号:160-0023
住所:東京都新宿区西新宿2丁目8番1号
#お題1
import location
location.start_updates() # GPSデータ更新を開始
gps=location.get_location() # GPSデータを取得する
location.stop_updates()# GPSデータ更新を終了
print('お題1')
print('緯度:'+str(gps['latitude']))
print('経度:'+str(gps['longitude']))
#お題2
address_dict = {'Street': '西新宿2丁目8-1'}
gc = location.geocode(address_dict)[0]
print('お題2')
print('緯度:'+str(gc['latitude']))
print('経度:'+str(gc['longitude']))
#お題3
adr = location.reverse_geocode(gc)[0]
#print(adr)
print('お題3')
print('郵便番号:'+str(adr['ZIP']))
print('住所:'+str(adr['State'])+str(adr['City'])
+str(adr['Street']))
#結果
お題1
緯度:35.7----略
経度:139.6---略
お題2
緯度:35.689504
経度:139.6916833
お題3
郵便番号:160-0023
住所:東京都新宿区西新宿2丁目8番1号
4デフォルトの名無しさん
2019/02/03(日) 13:16:33.45ID:jFMT64Yy 平方数の判定は、たとえばmod 10だと、
1と4と5と6と9に限るってのを利用すると、違う場合は判定が速いんだろ。
mod n で複数やる。
1=1^2
4=2^2
9=3^2
6=4^2
5=5^2
6=6^2
9=7^2
4=8^2
1=9^2
1と4と5と6と9に限るってのを利用すると、違う場合は判定が速いんだろ。
mod n で複数やる。
1=1^2
4=2^2
9=3^2
6=4^2
5=5^2
6=6^2
9=7^2
4=8^2
1=9^2
5デフォルトの名無しさん
2019/02/03(日) 17:42:03.97ID:oUppVF8S >>1
乙
乙
6デフォルトの名無しさん
2019/02/03(日) 18:09:22.12ID:I0qputsI >>4
平方根求められる関数と、少数を整数にする関数があれ
平方根求められる関数と、少数を整数にする関数があれ
7デフォルトの名無しさん
2019/02/03(日) 18:10:24.69ID:I0qputsI 途中で送っちゃった。。。
あれば簡単。
def isSqr(x):
if sqrt(x) - int(sqrt(x)) == 0:
return True
else:
return False
def sqrt(x):
return (x ** 0.5)
あれば簡単。
def isSqr(x):
if sqrt(x) - int(sqrt(x)) == 0:
return True
else:
return False
def sqrt(x):
return (x ** 0.5)
2019/02/03(日) 19:44:56.44ID:t6DUu8Hq
9デフォルトの名無しさん
2019/02/03(日) 20:21:31.21ID:jFMT64Yy たとえば1000桁のを1000回、判定するとかsqrtでは時間かかるやつの高速化だろ
10デフォルトの名無しさん
2019/02/03(日) 20:45:32.58ID:I0qputsI2019/02/03(日) 21:02:27.70ID:Hf9VDUPT
2019/02/03(日) 21:37:11.53ID:MY6f7I+S
なんか変なのいるね
2019/02/03(日) 21:40:28.27ID:v4AFDwkt
浮動小数経由する実装だと整数部が53bit超えると判定出来ない(つまり64bit整数以上だと不適切)
だから自前で浮動小数を経由せずに平方根の整数部分を求めることを考えるわけだけどナイーブにやると計算量が線型になるから二分探索やNewton(-Raphson)法で計算量減らすことを考えるわけだ
だから自前で浮動小数を経由せずに平方根の整数部分を求めることを考えるわけだけどナイーブにやると計算量が線型になるから二分探索やNewton(-Raphson)法で計算量減らすことを考えるわけだ
14デフォルトの名無しさん
2019/02/03(日) 22:02:19.65ID:I0qputsI2019/02/03(日) 23:09:07.55ID:CD+d7Abc
>>14
100000000000000000001がtrueになったりはしない?
100000000000000000001がtrueになったりはしない?
2019/02/03(日) 23:21:43.21ID:CD+d7Abc
2019/02/03(日) 23:32:49.30ID:J7OBWIJA
>>14
何言ってんのおまえ
何言ってんのおまえ
2019/02/03(日) 23:38:52.32ID:v4AFDwkt
19デフォルトの名無しさん
2019/02/03(日) 23:57:14.35ID:Hf9VDUPT >>13 それもわかる。 だったら解き方の最初にこういう目的で解いたとか書かないとね。
だから、解ける最大数値も書いたら良いと書いたんだが。
ちなみに、>>1 の1億までの数字は、iPhoneで28秒だった。
>>15 False になるよ。iphone のpythonista
また、言われたようにバイナリサーチ法や、巨大数のバイナリー検索も試してみたが、単純検索よりずっと時間がかかった。 ま、これは言語にもよると思うから何とも言えないが。 スクリプト系はステップ数が短い方が効率は良さそうだな。
>>18 だからさ、どこまでやるか条件を出せよ。 そしてサンプルを示してみたら? 実行時間も入れて。
プログラムと言うのは、使う現場で目的が違うんだから目的がわからなければ良い悪いなんて言えないだろ。
だから、解ける最大数値も書いたら良いと書いたんだが。
ちなみに、>>1 の1億までの数字は、iPhoneで28秒だった。
>>15 False になるよ。iphone のpythonista
また、言われたようにバイナリサーチ法や、巨大数のバイナリー検索も試してみたが、単純検索よりずっと時間がかかった。 ま、これは言語にもよると思うから何とも言えないが。 スクリプト系はステップ数が短い方が効率は良さそうだな。
>>18 だからさ、どこまでやるか条件を出せよ。 そしてサンプルを示してみたら? 実行時間も入れて。
プログラムと言うのは、使う現場で目的が違うんだから目的がわからなければ良い悪いなんて言えないだろ。
2019/02/04(月) 01:09:58.80ID:tmXRmKR0
このお客さんはどこから来たんだ
2019/02/04(月) 01:42:54.31ID:8qZo3rbs
アホ過ぎて話になんねー
線型探索と二分探索のどっちが速いかが言語によるとか頭腐ってんのか
線型探索: ttps://ideone.com/De3SOQ
二分探索: ttps://ideone.com/v9Twjx
線型探索と二分探索のどっちが速いかが言語によるとか頭腐ってんのか
線型探索: ttps://ideone.com/De3SOQ
二分探索: ttps://ideone.com/v9Twjx
22デフォルトの名無しさん
2019/02/04(月) 06:56:02.27ID:eX/1kX5o23デフォルトの名無しさん
2019/02/04(月) 07:03:50.35ID:eX/1kX5o どちらかと言うと**演算子(Cで言うpower関数)の実装に興味あるな。
2019/02/04(月) 07:23:18.46ID:958Z8DnZ
CRC 16bit 左送り 初期値 0x0000 生成多項式0x11021
テーブル使用せず演算でなるべくスマートに
テーブル使用せず演算でなるべくスマートに
25デフォルトの名無しさん
2019/02/04(月) 08:07:18.20ID:jp+X9sqK 指数関数,正弦関数,余弦関数のベキ級数展開(マクローリン展開)
http://www.synchronature.com/Science/Resources/e-s-c.jpg
http://www.synchronature.com/Science/Euler.html
http://www.synchronature.com/Science/Resources/e-s-c.jpg
http://www.synchronature.com/Science/Euler.html
2019/02/04(月) 10:14:05.68ID:AyF9PYpz
平方数 64ビット以上の巨大数
pythonista iPhone XS Max
def chk2(v1,v2):
c = 0
for i in range(v1, v2+1):
if i == (i**0.5) **2: c += 1
return c
v = 100000000000000000000
r = 10000000
v1= v-r
v2= v+r
start_time=time.clock()
c = chk2(v1,v2)
end_time=time.clock()
print('#結果',end_time-start_time,'秒','count=',c)
print('#範囲 ',v1,v2)
#結果 5.777779999999893 秒 count= 525
#範囲 99999999999990000000 100000000000010000000
pythonista iPhone XS Max
def chk2(v1,v2):
c = 0
for i in range(v1, v2+1):
if i == (i**0.5) **2: c += 1
return c
v = 100000000000000000000
r = 10000000
v1= v-r
v2= v+r
start_time=time.clock()
c = chk2(v1,v2)
end_time=time.clock()
print('#結果',end_time-start_time,'秒','count=',c)
print('#範囲 ',v1,v2)
#結果 5.777779999999893 秒 count= 525
#範囲 99999999999990000000 100000000000010000000
2019/02/04(月) 10:28:47.91ID:AyF9PYpz
>>26 同じ条件でバイナリサーチをやってみると若干だけ早かったが、誤差の範囲
#結果 5.770102000000406 秒 count= 525
#範囲 99999999999990000000 100000000000010000000
#結果 5.770102000000406 秒 count= 525
#範囲 99999999999990000000 100000000000010000000
2019/02/04(月) 11:40:45.86ID:GcH+yasd
>>26-27
99,999,999,999,990,000,000~100,000,000,000,010,000,000の範囲には10,000,000,000しかないんだからcount=525ってのは演算誤差が出てるってことだよな?
99,999,999,980,000,000,001 (9,999,999,999^2)
100,000,000,020,000,000,001 (10,000,000,001^2)
99,999,999,999,990,000,000~100,000,000,000,010,000,000の範囲には10,000,000,000しかないんだからcount=525ってのは演算誤差が出てるってことだよな?
99,999,999,980,000,000,001 (9,999,999,999^2)
100,000,000,020,000,000,001 (10,000,000,001^2)
2019/02/04(月) 11:43:01.09ID:GcH+yasd
いや、intにしてないからそれを調べてるってわけじゃないのか
2019/02/04(月) 14:12:20.36ID:NdPuZxEw
>>28 言われてみればフロートまでカウントするのはおかしいから判定を変えた。
for i in range(v1, v2+1):
if (i**0.5).is_integer(): c += 1
return c
Core i3 3.2GHz Windows10 python3.7
#結果 8.15625 秒 count= 49151
#範囲 99999999999990000000 100000000000010000000
iPhoneの方が倍くらい早いかな。
#結果 4.180858 秒 count= 49151
Core i7のマシンもあるが大して期待できなさそうだな。
検算の意味で、1から1000までをカウントして31だったから正しいだろう。
なお、Python3の整数int型に最大値はない(上限なし)からどんな数でも扱える。
for i in range(v1, v2+1):
if (i**0.5).is_integer(): c += 1
return c
Core i3 3.2GHz Windows10 python3.7
#結果 8.15625 秒 count= 49151
#範囲 99999999999990000000 100000000000010000000
iPhoneの方が倍くらい早いかな。
#結果 4.180858 秒 count= 49151
Core i7のマシンもあるが大して期待できなさそうだな。
検算の意味で、1から1000までをカウントして31だったから正しいだろう。
なお、Python3の整数int型に最大値はない(上限なし)からどんな数でも扱える。
2019/02/04(月) 14:13:11.15ID:fIIhQCXR
もういいからお前
2019/02/04(月) 14:20:39.50ID:GcH+yasd
>>30
いや、誤差出てるやん
いや、誤差出てるやん
2019/02/04(月) 14:55:46.83ID:GcH+yasd
>>30
これ(count=49151)って99999999999999975424から100000000000000024575 (64bit浮動小数点数の16進表記で0x4415AF1D78B58C3Fから0x4415AF1D78B58C41)の平方根が、
10000000000 (64bit浮動小数点数の16進表記で0x4202A05F20000000)になって全部Trueになってるってことだろ
これ(count=49151)って99999999999999975424から100000000000000024575 (64bit浮動小数点数の16進表記で0x4415AF1D78B58C3Fから0x4415AF1D78B58C41)の平方根が、
10000000000 (64bit浮動小数点数の16進表記で0x4202A05F20000000)になって全部Trueになってるってことだろ
2019/02/04(月) 15:39:51.36ID:8qZo3rbs
99,999,999,980,000,000,001 = 999,999,999^2
100,000,000,000,000,000,000 = 10,000,000,000^2
100,000,000,020,000,000,001 = 10,000,000,001^2
なんだから[99'999'999'999'990'000'000, 100'000'000'000'010'000'000]の区間に入る平方数はただ一つ100,000,000,000,000,000,000しかない
「32bit符号なし整数にしか対応してません」っつうなら分かるがまともに判定出来てないのに「判定出来てる」主張する無能
やれ前提書けだの環境書けだの時間書けだのクソみてぇな御託並べる前に自分の頭の悪さを自覚しろ
100,000,000,000,000,000,000 = 10,000,000,000^2
100,000,000,020,000,000,001 = 10,000,000,001^2
なんだから[99'999'999'999'990'000'000, 100'000'000'000'010'000'000]の区間に入る平方数はただ一つ100,000,000,000,000,000,000しかない
「32bit符号なし整数にしか対応してません」っつうなら分かるがまともに判定出来てないのに「判定出来てる」主張する無能
やれ前提書けだの環境書けだの時間書けだのクソみてぇな御託並べる前に自分の頭の悪さを自覚しろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 43歳の元NHKアナ・竹中知華、発売グラビアがランキングで堂々の1位「えぐすぎる」「素晴らしい」「もっと出して」 [muffin★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】日銀植田総裁「高市さんからの要望は特になかった」 [519511584]
