[過去ログ] プログラミングのお題スレ Part15 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
603
(2): 蟻人間 ◆T6xkBnTXz7B0 2019/09/29(日)02:59 ID:8mEp/ii8(1/4) AAS
お題: 地球上の2地点を緯度・経度で指定すると、(球面上の)直線距離を求めてくれるプログラム。

地球がほぼ球体であることを仮定してもよい。
604
(1): 蟻人間 ◆T6xkBnTXz7B0 2019/09/29(日)03:04 ID:8mEp/ii8(2/4) AAS
ロンドンからニューヨーク。
北京から台湾。
ニュージーランドからトルコ。
605
(2): 蟻人間 ◆T6xkBnTXz7B0 2019/09/29(日)03:16 ID:8mEp/ii8(3/4) AAS
参考に: 外部リンク:keisan.casio.jp
606
(1): 蟻人間 ◆T6xkBnTXz7B0 2019/09/29(日)03:55 ID:8mEp/ii8(4/4) AAS
ヒント: 度をラジアンに変換。dの公式に代入する。緯度経度はグーグル マップで調べる。コサインの逆関数はアークコサイン。
607: 2019/09/29(日)09:16 ID:GG+B8frl(1/3) AAS
数学の問題どすな

地球半径をR、緯度をΦ、経度をΘとすると
地表上の点Pの座標(x,y,z)は

(x,y,z)=R(cosΦcosΘ,cosΦsinΘ,sinΦ)
(R,0,0)は赤道上の東(西)経0度の地点
(ギニア湾 ガーナ アクラ沖約600km)

(0,R,0)も赤道上の東(西)経180度の地点
(太平洋 ナウル島から約1450km)

二地点の座標をベクトルに見立て
内積をR^2で割って逆余弦関数に
省1
608: 2019/09/29(日)09:23 ID:GG+B8frl(2/3) AAS
ちょい間違った
(0,R,0)は東経90度の赤道上の太平洋上の地点で
スリランカ・コロンボから約1360kmの地点
(-R,0,0)がナウル島から1450kmの地点
(0,-R,0)はガラパゴス諸島から20〜25km程度の
太平洋上の地点
609: 2019/09/29(日)09:25 ID:GG+B8frl(3/3) AAS
表計算ソフトを使うのが効率的ね
610: 2019/09/29(日)10:48 ID:UzLHlBWt(1) AAS
地球を球に近似する時点でナンセンス。解く価値無し
611: 2019/09/29(日)11:06 ID:VkSI6pCv(1) AAS
仮定してもよい なんだから球に近似しないで書けばいい話じゃね?
612
(1): 2019/09/29(日)12:00 ID:bEy1wMJX(1/2) AAS
>>603 大円距離の問題なんだから、距離が一番短くなる2点間の長さとすべき、
great-circular distance

>>605 の数値を使い
地球の半径を 6378.137 km
2点の緯度経度 
139.74477,35.6544 ,
39.8261, 21.4225

Python

外部リンク:ideone.com

答え  9,491.28 km
613: 2019/09/29(日)12:03 ID:bEy1wMJX(2/2) AAS
>>612 2点間の経度緯度 の間違い
614
(1): 2019/09/29(日)12:33 ID:mYJaebwB(1/2) AAS
>>603-6

use Math::Trig qw{deg2rad acos};
($lat1, $long1) = map{deg2rad $_} (51.507448,-0.1287243); # ロンドン ウエストミンスター チャールズ1世騎馬像
($lat2, $long2) = map{deg2rad $_} (40.712775,-74.005973); # ニューヨークCity Park Hall(市庁舎)
$theta = $long1 - $long2;
$dist = sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta);
$dist = 6378.137 * acos($dist);
printf "%.2f[Km]\n", $dist;

実行結果
~ $ perl 15_604.pl
省3
615: 2019/09/29(日)12:34 ID:mYJaebwB(2/2) AAS
>>614 アンカーしくった
>>603-606 だた…orz
616
(1): 2019/09/29(日)19:44 ID:aa2vZ2v/(1) AAS
お題:8queenで面白いパターンを見つけよ。
617
(1): 2019/09/29(日)23:06 ID:OI4EUI6E(1) AAS
お題:もっと面白いお題を考えよ。
618: 2019/09/29(日)23:45 ID:m0Odf/xn(1) AAS
>>588 C
外部リンク:ideone.com
619: 2019/09/29(日)23:51 ID:k4CvVXqN(1) AAS
>>616
面白いってひどく曖昧だな
620
(4): 蟻人間 ◆T6xkBnTXz7B0 2019/09/30(月)02:22 ID:i5LhrskR(1) AAS
お題: サイズ15x15の空白マス('_')がある。黒マス('#')をいくつかランダムに置いて、空白マスが縦または横向きに5マス連続に並ばないようにしたい。ただし、
1. なるべく早く黒マスを配置せよ。
2. 実行のたびに常にランダムにまんべんなく配置せよ。
3. 黒マスが縦または横に隣り合ってはいけない。
4. (ア)全て並べる、そして(イ)並びが正しいか検証する、の(ア)と(イ)を15回繰り返してかかる時間を実測せよ。
621: 2019/09/30(月)09:19 ID:eZfyppwl(1) AAS
>>617
考えた。

でもこれは発表しない。誰にも教えない。墓まで持っていく。
622: 2019/09/30(月)10:08 ID:4XC9Ks9U(1) AAS
>>620
馬鹿っぽ
623
(1): 2019/09/30(月)16:46 ID:ypiuCBLp(1/4) AAS
>>620
外部リンク:ideone.com
C++。ふえ〜。円の当たり判定しようと思ったのに、うごかないよ〜。
コード間違ってるのか、数学ぶっ壊れたのかわからん。
デバッグしてくれる人募集。

コード間違ってるんやったら、俺の認識限界がおかしいな。
624
(1): 2019/09/30(月)17:15 ID:ypiuCBLp(2/4) AAS
>>623
外部リンク:ideone.com
C++。代替え案。実行ごとにパターンが変わって敷き詰めた一例。
変わってないと思うなら0点のパターンを見てみよう。
625: 2019/09/30(月)17:20 ID:ypiuCBLp(3/4) AAS
じっそうじかんは多分2時間以内だ。
626
(1): 2019/09/30(月)17:55 ID:tHR3tKyN(1) AAS
>>624
代替案(だいたい-あん)と言いなさい
627: 2019/09/30(月)18:25 ID:ypiuCBLp(4/4) AAS
>>626
あー。すっかり忘れてた。。。
628: 2019/09/30(月)20:18 ID:H9c5jpU6(1) AAS
>>620
なるほど
コレだな

黒マスルール - Wikipedia
外部リンク:ja.wikipedia.org

画像リンク[jpg]:ja-kouka.shinobi.or.jp

出来上がった白黒の升目に上手いこと単語を置くとクロスワードパズルになる
「縦または横向きに5マス連続に並ばない」は「縦または横向きに4マスまで連続に並んでもいい」だ
そこにさらに追加ルールを仕込むとクロスワードパズルの枠が出来上がる
629
(14): 2019/10/01(火)07:35 ID:NlppalS8(1/3) AAS
お題

言語限定(コマンドプロンプト・パワーシェル・bash/csh等のUNIXシェル)

10000までの素数を列挙して出力

当然だが、スクリプト言語処理系やコンパイラに丸投げさせるのは禁止
というか、技量の程度が疑わてしまうのでお勧めしない
630: 2019/10/01(火)08:06 ID:7l0S2vrN(1) AAS
「○○は禁止」系のお題はろくなのがないから禁止した方がいい
631: 2019/10/01(火)08:35 ID:NlppalS8(2/3) AAS
プログラミング言語なんて、禁止の塊で出来たものなんで
「禁止の所産」って奴な
632: 2019/10/01(火)08:56 ID:H2UNgdyX(1) AAS
>>629
シェルスクリプトスレ池
633: 2019/10/01(火)09:02 ID:zsyRP5Ba(1) AAS
>>629
C で書いておけば許されるかんじがする
外部リンク:pastebin.com

実行
画像リンク[jpg]:i.imgur.com

最大の素数の幅を見てからきちんと整列される
~/bin/is_prime.exe 50900 60000
50909 50923 50929 50951 50957 50969 50971 50989 50993 51001
51031 51043 51047 51059 51061 51071 51109 51131 51133 51137
634: 2019/10/01(火)09:20 ID:j8m55EYr(1) AAS
>>629 Linux
$ primes 2 10001
2
3
...
9967
9973
635: 2019/10/01(火)09:21 ID:R4cuDBX/(1) AAS
遅くまともな言語ではないやつで、どうにかして動くのを作れというお題なんだろ
まともな言語使用してしまえばお題からずれてるかと
636: 2019/10/01(火)09:53 ID:PlApYvsP(1/2) AAS
配列使えるシェルもあるからそういうの使えば楽かも
shでもsetすりゃ配列だが

まあでも遅そうで実用性なさげ
637
(3): 2019/10/01(火)12:56 ID:ygg8X6aa(1/6) AAS
>>629 コマンドプロンプト(Windows)
外部リンク:ideone.com

おそい…コマンドプロンプトよーわからんですよ
638: 629 2019/10/01(火)13:54 ID:NlppalS8(3/3) AAS
>>637
スゴイw
やれば出来るものですね。
10000を超えても出力し続けてますw
639: 2019/10/01(火)14:02 ID:ygg8X6aa(2/6) AAS
あ、10000までの制限がないww
limit=100までにしてるから10000以降に出た数値は信頼性ないwww

修正したものを実行して確認中…10000で止まったらUPる…遅い(´・ω・`)
640: 2019/10/01(火)14:07 ID:ygg8X6aa(3/6) AAS
>>629 コマンドプロンプト (>>637の修正版)
外部リンク:ideone.com

637は書いてたはずのecho 2も消えてた(´・ω・`)
641: 2019/10/01(火)15:07 ID:ygg8X6aa(4/6) AAS
まあまだ 49(7*7) 289(17*17) 961(31*31) 2209(47*47) 3721(61*61) 6241(79*79)を出力するバグがあったわけだがw
642
(1): 2019/10/01(火)15:44 ID:ygg8X6aa(5/6) AAS
>>629 コマンドプロンプト 修正版2
外部リンク:ideone.com
もうバグないといいな
643: 2019/10/01(火)16:30 ID:7XyHUR/V(1) AAS
シェルスクリプトでチョコチョコと何かやる分には良いが、プログラムを書くというのとは違うだろ。
プログラムはそれなりのものた^_^書いた方が効率的。

どっちからでも起動できるんだから餅は餅屋。
644: 2019/10/01(火)16:32 ID:9fvqkmcJ(1) AAS
^_^;
645: 2019/10/01(火)17:17 ID:PlApYvsP(2/2) AAS
>>629
bash
外部リンク:paiza.io

でもやっぱ遅くてpaiza.ioではtimeoutして最後まで出てこないw
646
(1): 2019/10/01(火)21:04 ID:rsBZCnlu(1) AAS
>>629
遅くても構わなければ、PowerShellではとても簡潔に書ける。

$p = 2..10000
while ($p) {
  $p[0]
  $p = @($p |? {$_ % $p[0]})
}
647: 2019/10/01(火)21:59 ID:Ueonb/Q5(1) AAS
誰が遅くても構わないと言った
648
(3): 2019/10/01(火)22:03 ID:x7eW/FrR(1) AAS
お題: ハッシュマップを実装せよ
649: 2019/10/01(火)22:05 ID:ygg8X6aa(6/6) AAS
俺が書いたコマンドプロンプトのよりは早いぞw
650: 2019/10/01(火)22:21 ID:H9NeHROf(1) AAS
>>648
ジェネリックに書くとして、ハッシュ関数はどうやって書けばいいんだ?
std::vector<std::list<T>>> HashMap;
っていう感じのことはできそうではあるけどな。
651: 2019/10/02(水)07:55 ID:YpMEiTCH(1) AAS
# Java

HashMap<String, Integer> shop = new HashMap<String, Integer>();

shop.put("apple", 100);
shop.put("banana", 125);
System.out.println(shop.get("banana")); //=> 125

# Python

shop = { 'apple':100 , 'banana':125 }
print(shop['banana'])
# 125
652: 2019/10/02(水)12:25 ID:56vpBHGI(1) AAS
それは実装ではない。
653: 2019/10/02(水)13:20 ID:+RotAwEg(1/2) AAS
>>648
このスレの住民のレベルに合っていてかつプログラマにとって必要不可欠な知識なので良いお題
654: 2019/10/02(水)13:31 ID:vkK/4cs1(1/2) AAS
実装って何を言ってるのかな? コンパイラを作れってこと? それとも基本関数を使ってそれらしいハッシュマップを作れという事?
実装されている言語にさらに実装しろって意味不明。
655: 2019/10/02(水)14:40 ID:+RotAwEg(2/2) AAS
ハッシュマップのアルゴリズム部分を自分で書けってことだろ
アスペかよ
656: 2019/10/02(水)14:58 ID:h9bkbZIX(1) AAS
俺健常者だけど言ってる事正直よくわからんのだが
657: 2019/10/02(水)15:31 ID:vkK/4cs1(2/2) AAS
言わんとすることは何となくわかるんだが、多分ジェネリックが有る言語なら比較的考えやすいがジェネリックがない言語ではどう解釈するのかな。
658: 蟻人間 ◆T6xkBnTXz7B0 2019/10/02(水)16:28 ID:Q9AIQiw1(1) AAS
お題:文字列操作のUndo/Redoを実装せよ。

文字列Sに対し
(a) 文字位置indexからcount文字を別の文字列strで置き換える(replace)、
(b) 文字位置indexからcount文字を削除する(erase)、
(c) 文字位置indexに別の文字列strを挿入する(insert)
という操作が連続的に可能であるとき、これらの操作に対するUndo/Redo(元に戻す/やり直す)を実装せよ。

ただし操作対象の文字列Sが長いときにメモリーを無駄にする実装にしてはいけない。

解答例:
Undo/Redo framework for C++11
外部リンク:github.com
659: 2019/10/02(水)19:48 ID:By3xLmz3(1) AAS
ここの回答に使われる言語でハッシュマップ自分で実装せなあかん言語なんて少ないと思うが?
660: 2019/10/02(水)20:14 ID:uTylPaUx(1/5) AAS
ジェネリックなハッシュ関数の書き方が解らない。Orz
661
(2): 2019/10/02(水)20:29 ID:OIQKJ8Sl(1/2) AAS
シリアライズ、文字列化できてればCRC32でも一応ハッシュとして使える
662: 2019/10/02(水)20:36 ID:uTylPaUx(2/5) AAS
>>661
小規模な問題解くのにミドルウェアいるんすな。辛い。
663
(1): 2019/10/02(水)20:49 ID:OIQKJ8Sl(2/2) AAS
そんなに汎用的、一般的なのを作る必要もないとおもうので
入力は文字列限定で動くやつ作ればクリアでは?
664: 2019/10/02(水)21:00 ID:uTylPaUx(3/5) AAS
>>663
解った文字列やってみるわ。
665: 2019/10/02(水)21:46 ID:uTylPaUx(4/5) AAS
>>648
外部リンク:coliru.stacked-crooked.com
C++。コンストラクタ起動式って17からやったっけ?
とりあえず作ってみたが・・・。
今、調子悪くて困ってる。
666: 2019/10/02(水)21:48 ID:uTylPaUx(5/5) AAS
ハッシュ関数は適当。昔2chで見たのパクった。
HMのサイズ7にしておけばよかった。素数だからな。
667
(2): 2019/10/02(水)21:59 ID:bMxkjAXQ(1) AAS
お題: 簡易的なXMLをパースして構造を出力せよ

in < <div><p><a></a></p></div><span><p></p></span>

out >
div
__p
____a
span
__p
668: 2019/10/02(水)22:48 ID:2Yo9PRwa(1) AAS
>>661
それかsumでいいやん、conflictしたらリスト管理で一丁上がり
669: 2019/10/02(水)22:50 ID:XyzGBTdX(1) AAS
>>667
C++
外部リンク:ideone.com
670: 2019/10/03(木)08:18 ID:z1c5xmGq(1) AAS
>>629
> というか、技量の程度が疑わてしまうのでお勧めしない
人の心配する前に自分の出題技量の程度を心配しなよ…
671: 2019/10/04(金)01:29 ID:rw3arA+q(1) AAS
いいじゃねーかそんなこまけーことどうでも
ケツの穴のちいせぇやろうだな。
何ならおじさんが広げてやろうかw
672: 2019/10/04(金)01:59 ID:0BDgocBX(1) AAS
アッー!
673: 2019/10/04(金)04:07 ID:/Ff7i02R(1) AAS
>>620
外部リンク:ideone.com
C++。多分できた。
バグの原因は変数がマイナスを扱えていないことだった。
674: 2019/10/04(金)14:06 ID:IeSaX57c(1) AAS
>>629
の出題意図を読み取れば、
記憶域を余り自由に使えない環境で
如何に工夫して目的が達成できるか
ということではないかと
その意味では、Power-shellは少し
強力杉だから除外すべきだったかも
知れないが(遅いから使われる
ことは少ないだろけどスクリプト言
語処理系であるとも言えなくもないし)
675
(5): 2019/10/04(金)14:58 ID:BEYT4ZYw(1) AAS
シェルスクリプトって元々プログラミング言語じゃないからな。 あくまでも補助的なもの。
それでプログラミングすると言うのは本末転倒。 間違った方向性でしかない。

貧弱な環境でも使えるものと言うなら、BASIC や、Python の組込型がコンパクト。 PIC や子供のおもちゃにすら入ってる。 百円のチップにすら入ってるからな。

コンパイラでも良いのならCが最もシンプル。
676: 2019/10/04(金)17:29 ID:uYF9K7e8(1) AAS
またプログラム言語のオレオレ定義かよw
677: 2019/10/04(金)17:37 ID:ordI0mDW(1) AAS
それ以上に謎の空白が気になる
678: 675 2019/10/04(金)18:12 ID:aN85/uHn(1) AAS
わりいわりい、iOS13になって、日本語の途中の空白は全て全角になったから、なんか間抜けな感じになったな。

良いか悪いかわからんが慣れてくれ。
679: 2019/10/04(金)18:43 ID:hcjI0QEW(1/2) AAS
。の後にスペースをひとつ入れているようだ
680: 2019/10/04(金)18:44 ID:hcjI0QEW(2/2) AAS
スペース入れなきゃいいのでは?
681: 2019/10/04(金)19:36 ID:bnA3YiVJ(1) AAS
空白なのは頭ん中だけにしとけwww
682: 2019/10/05(土)00:51 ID:pioYL/z5(1) AAS
空っぽのほうが夢詰め込めるぞ
683: 2019/10/05(土)01:36 ID:iITy9V8b(1) AAS
空っぽかと思ったら、実は分厚い頭蓋骨が詰まった中心に
ポツンとノミのような脳みそがある、石頭だったでごじゃる
684: 637 2019/10/05(土)08:57 ID:4K3q4mZL(1/2) AAS
>>629 コマンドプロンプト 高速化版
外部リンク:ideone.com
>>642の6倍くらい速くなった…うちの環境だと>>646よりはやくなったどーw
685
(1): 2019/10/05(土)15:19 ID:6iFRuM3K(1/6) AAS
>>629 bash 4.3.42(3)

n=10000
eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [ ${a[$i]} ]; then
  echo $i
  for ((j=2*$i; j<=$n; j+=$i)); do
    unset a[$j]
  done
 fi
省12
686
(1): 2019/10/05(土)15:21 ID:6iFRuM3K(2/6) AAS
>>685 実行結果、貼りそこなって変な改行は入ってた…orz 訂正

実行結果
$ bash 15_629_prime.sh
2
3
5
7

9941
9949
省2
687
(2): 2019/10/05(土)15:31 ID:6iFRuM3K(3/6) AAS
>>686 いや、for ((j=$i*$i; j<=$n; j+=$i)); do だよ間違えた、25%早くなる

n=10000
eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [[ ${a[$i]} ]]; then
  echo $i
  for ((j=$i*$i; j<=$n; j+=$i)); do
    unset a[$j]
  done
 fi
省1
688: 2019/10/05(土)16:09 ID:6iFRuM3K(4/6) AAS
>>629 >>687の実行結果
外部リンク:ideone.com
689: 2019/10/05(土)17:13 ID:6iFRuM3K(5/6) AAS
>>687

eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [[ ${a[$i]} ]]; then

この書き方、a[]の最初の0,1番目の要素に空文字を設定しておいて
それを配列のインデックスとして使い、あまりいい書き方じゃないと気がついた
動いているんで、あせって直さないでおくけど ゴメンね〜
690
(4): 2019/10/05(土)20:48 ID:oVPf95FK(1) AAS
お題:
外部リンク:regexcrossword.com
のようなHEXマスの正規表現クロスワードパズルのソルバーを実装せよ。
n=1でいいので処理時間も報告せよ。
691
(1): 2019/10/05(土)21:56 ID:Lt/DoxvR(1) AAS
>>690
辞書データぷりーず
692: 2019/10/05(土)22:00 ID:4K3q4mZL(2/2) AAS
このソルバーに辞書データっているか?
693: 2019/10/05(土)22:27 ID:NXndjuW4(1) AAS
>>691
出題者ではないが、まず、完成図面を作って、そこから問題を作ったほうが早そうだ。
ヘックスの扱い方わからねーんだ俺。
昔聞いたことあるけど、そのうち・・・と思ってたら曖昧になってしまった。
694: 2019/10/05(土)23:11 ID:6iFRuM3K(6/6) AAS
>>667 Perl5

$in = '<div><p><a></a></p></div><span><p></p></span>';
use XML::Simple;
$xml = new XML::Simple->XMLin('<document>'.$in.'</document>');
use Data::Dumper;
$Data::Dumper::Terse = 1;
print Dumper $xml;

実行結果
~ $ perl 15_667_Simple.pl
{
省9
695: 2019/10/06(日)00:03 ID:tnh9RMO0(1/3) AAS
とりあえず>>690を手動で解くのに2時間かかったw
お題は思いついたらやる
696
(3): 2019/10/06(日)05:37 ID:oevqPO9x(1) AAS
お題: L形図形を表示する
[入力]
1
[出力]
a
bc

[入力]
2
[出力]
ba
省14
697
(1): 2019/10/06(日)05:55 ID:vrVeYjyl(1) AAS
>>696
最後のやつが4ではなく3?
それと文字はabc使っているが、どういう規則で並べるのか?
698: 2019/10/06(日)05:58 ID:lJB/egMg(1/2) AAS
カオス
699: 675 2019/10/06(日)09:02 ID:O+kT1S2P(1) AAS
最後は4だろ
700: 2019/10/06(日)09:24 ID:+7MXB6fE(1) AAS
>>697
おそらく1のパターンのL字を4つで向きを変えてくっつけて大きなL字にしたものが2のパターン。2を4つ使って同じことをやって3を作ってるということだと思う。愚直に再帰的にやれば簡単そう。
701: 2019/10/06(日)10:20 ID:tnh9RMO0(2/3) AAS
>>696
入力3の出力、一か所間違えとるよな?w
702: 2019/10/06(日)10:43 ID:tnh9RMO0(3/3) AAS
>>696 Java
外部リンク:ideone.com
1-
あと 300 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s