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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
108: 2020/07/18(土)20:44 ID:naIVYT0v(1) AAS
>>107
コードのキレイさなら>>70かもしれませんが
お題はコードを出力するのではなくハート形を出力せよとのことでしたから
初心者がチャレンジしたコードなのでスマートな書き方でないのは御勘弁下さいorz
109: 68 2020/07/18(土)21:39 ID:yeg1h1ii(2/2) AAS
いろんな回答を見たかったので早期の論評は控えてました。
>>69の出力は出題者もきれいだなって思います。
想定していたコードはどちらかいうと>>70に近くて
外部リンク:codepad.org
こんな感じの簡単な式(x^2+y^2<100-|x|y)でも充分かなと思ってました。

ハート形を生成できる式はいくつか知られているので、バリエーションを探ってみるのはいいかなと思います。
110
(2): 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)13:58 ID:GV3E92FC(1/7) AAS
(1) 外部リンク:gist.github.com
二次元タートルグラフィックスで八角形を描けたよ。

お題: (1)と(2)のリンクを参考にコッホ曲線を描画せよ。

(2) 外部リンク[html]:www.f.waseda.jp
111: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)14:05 ID:GV3E92FC(2/7) AAS
AA省
112: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)14:45 ID:GV3E92FC(3/7) AAS
小さなお題: >>110 の(1)のturn_dir関数とturn_angle関数を3次元に拡張し、
3次元タートルグラフィックスを可能にせよ。

ただし、turn_dirの引数は長さ1の方向ベクトルとし、turn_angleの引数は角度とする。
turn_dirは、引数dzが0のとき、変更前と同じ動作にせよ。
また、turn_angleの引数にもう一つの角度を追加し、追加した角度がゼロのとき、
変更前と同じ動作にせよ。

ヒント:四元数
113: 2020/07/19(日)14:48 ID:EiEVeWaP(1) AAS


66 名前:デフォルトの名無しさん[sage] 投稿日:2020/07/18(土) 00:01:47.57 ID:tp8HW1uL [1/2]
ついに蟻人間は、3次元まで行ってしまったか

その内、Quaternion(4元数)がどうたらこうたらと、言い出しかねないw
114: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)21:17 ID:T8vbWyFG(1/2) AAS
さて、解けた者は挙手したまえ。
115
(1): 2020/07/19(日)21:45 ID:h5vFOzT4(1) AAS
頭が悪いことがばれたからって
必死に数学の知識を見せようと頑張ってる

でも頭の悪さが随所に滲み出てる
自覚のないアホ
116
(1): 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)21:56 ID:GV3E92FC(4/7) AAS
>>115 数学出来るなら手伝ってくれよ。。。これから面白くなるから。

function turn_angle(angle1, angle2) {
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);

// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
...(ここに何か書く)...

// 実際に回転させる。
turn_dir(dx, dy, dz);
}
117: 2020/07/19(日)21:57 ID:5kiTFqsE(1) AAS
誰もイキらずに淡々と問題と答えのレスだけ並んでく雰囲気は良さを感じたけど
やっぱクソコテって怖いな
118
(1): 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)22:06 ID:GV3E92FC(5/7) AAS
>>116
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);

次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?
119: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)22:12 ID:GV3E92FC(6/7) AAS
お題: JavaScript
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}
120: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)22:16 ID:GV3E92FC(7/7) AAS
♪はい、コーディングいってみよー!

はいはいはい、はいはいはい!
121: 蟻人間 ◆T6xkBnTXz7B0 2020/07/19(日)23:32 ID:T8vbWyFG(2/2) AAS
俺はそういう悪評トリックに引っ掛からないよ。間違いは的確に指摘頂きたい。
122: 2020/07/20(月)06:57 ID:P7t0RBc6(1) AAS
>>110-121
(1)のソースにオービットコントロールを付けると楽しいですよ。

<!-- OrbitControls.jsファイルソース読込 -->
<script src="./three.js-master/examples/js/controls/OrbitControls.js"></script>

//controls変数宣言追加
var scene, renderer, camera, controls;

function init() {//イニシャライズの
・・・
camera.lookAt(0, 0, 0);

//controlsインスタンス生成してカメラとレンダラー渡すだけ
省6
123: 2020/07/20(月)07:42 ID:ozWDjdlg(1) AAS
>>118
やってみたよ
function turn_angle(angle1, angle2) {
if( !angle2 || angle2==0){
turn_dir(Math.cos(angle1 * Math.PI / 180), Math.sin(angle1 * Math.PI / 180), 0);
}else{
// x-y平面上のangle1度の方向ベクトル(dx, dy)。
var dx = Math.cos(angle1 * Math.PI / 180);
var dy = Math.sin(angle1 * Math.PI / 180);

// (dx, dy, 0)をx軸を中心にangle2度回転したものを(dx, dy, dz)とする。
省18
124
(2): 蟻人間 ◆T6xkBnTXz7B0 2020/07/20(月)15:09 ID:rHNryQzp(1/2) AAS
傾けた木が平面にならない。
外部リンク:github.com
(4) 外部リンク[html]:github.com
Twitterリンク:katahiromz
何でだろ。

外部リンク:github.com からダウンロードして下さい。
お題: (4) を修正して木が平面になるようにせよ。
Twitterリンク:5chan_nel (5ch newer account)
125: 2020/07/20(月)16:08 ID:UHinuGOV(1) AAS
お題じゃなくて作成依頼ですか?w
126: 蟻人間 ◆T6xkBnTXz7B0 2020/07/20(月)16:16 ID:6GFyBW1T(1/2) AAS
こういうのは数学が鬼ズバできる猛者に任せたい所だが。。。
報酬は出しちゃいかんのか。
127: 2020/07/20(月)17:25 ID:uvZgkaZD(1) AAS
出ないならやらない
128: 2020/07/20(月)17:58 ID:8mFfSXNu(1/2) AAS
いや、そういう猛者がいるところに依頼してこいよ
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ
129: 2020/07/20(月)17:59 ID:8mFfSXNu(2/2) AAS
そういう意味不明な言動を繰り返すから糞コテ呼ばわりされるって気付いて
130: 蟻人間 ◆T6xkBnTXz7B0 2020/07/20(月)18:37 ID:rHNryQzp(2/2) AAS
寺へ行きました。すみません。
131: 2020/07/20(月)23:40 ID:5ka8Ymx5(1/3) AAS
>>124
なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。
画像リンク[gif]:i.imgur.com
舞フレームごとに書き出してるんかな?
3Dオブジェクトコンテナにでも入れた方がいいのかな?
132: 蟻人間 ◆T6xkBnTXz7B0 2020/07/20(月)23:47 ID:6GFyBW1T(2/2) AAS
やろうとしてるのは、三次元フラクタルと臓器の実体化だから、超複雑な図形を再帰で描くことになる。再帰が多ければ確かに計算量は爆発するよ。
133
(1): 2020/07/20(月)23:52 ID:/f9oEP+1(1) AAS
いい加減IE捨てろよ
134
(1): アンスタ7.2日目 ◆mqSs/N.hZs 2020/07/20(月)23:54 ID:5ka8Ymx5(2/3) AAS
>>124
画像リンク[gif]:i.imgur.com
タートルグラフィックスTreeの平面化
画像リンク[gif]:i.imgur.com
3次元にしたいのか平面にしたいのかどっちなんだか。。。
変更箇所↓
function turn_angle(angle1, angle2=0) {
 var dx = Math.cos(angle1 * Math.PI / 180);
 var dy = Math.sin(angle1 * Math.PI / 180);
 angle2 += turtle_spin;
省13
135: 2020/07/20(月)23:57 ID:5ka8Ymx5(3/3) AAS
>>133
クロームより軽いから、捨てられなくて。。。
136: 蟻人間 ◆T6xkBnTXz7B0 2020/07/21(火)00:03 ID:iLwMnecK(1) AAS
>>134
その事例についてはteratailに移動しましたので、ここでは打ち切りとさせて下さい。

外部リンク:teratail.com
137
(2): 2020/07/22(水)22:25 ID:ILXZvJ+B(1) AAS
「1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍」
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。
138
(8): 2020/07/22(水)22:30 ID:IwIxQ1Ze(1) AAS
お題: ランダムな整数が格納された長さNの配列から、偶数の要素のみを抜き出せ
Nは任意とする
139: 2020/07/22(水)22:57 ID:EawLE7Sy(1) AAS
>>138 Ruby

p gets.split.map(&:to_i).select(&:even?)
140: 2020/07/23(木)00:07 ID:DuCdQo+y(1) AAS
>>137
面白いものができてしまったわ

class Integer
def +(other) 200 end
def /(other) 10 end
end

p "1+1は2じゃないぞ。オレたちは1+1で#{1 + 1}だ!#{rate = 200 / 2}倍だぞ#{rate}倍"

# => "1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍"

外部リンク[rb]:repl.it
141: 2020/07/23(木)10:38 ID:bJ7HfHNw(1) AAS
>>138 ocaml
外部リンク:ideone.com

>>138 octave
外部リンク:ideone.com
142: 2020/07/23(木)22:03 ID:VBywRp49(1) AAS
>>138 Perl5

@b = grep{$_ ^ 1} @a;
143: 2020/07/23(木)23:12 ID:QnunbgyT(1) AAS
>>138
Java
外部リンク:paiza.io
144: 2020/07/24(金)00:24 ID:F0SZWNxk(1) AAS
>>138 Python
import random
N = 10
MAX = 100
[x for x in random.sample(range(MAX), N) if x % 2 == 0]
145: 2020/07/24(金)03:32 ID:6ZonvnML(1/2) AAS
>>137
なんとなく結果を2進数(あるいは通常の10進数以外の表現)で出せば良いだけのような気がするが・・・

Perl だとこんな感じで 10 が出る。

printf "%b\n", 1 + 1;
146: 2020/07/24(金)03:47 ID:6ZonvnML(2/2) AAS
>>138
Kotlin 及び Kotlin Script ではこんな風になる(a が元の配列または List)。

val b = a.filter { (it % 2) == 0 }

もちろん比較部分は (it and 1) == 0 等でも良い。it が偶数の時に true になりさえすればなんでも良い。

配列の要素数の N についてはここでは考える必要なし。
要素の型が Int かどうかも考える必要なしだが、% 2 の計算ができないとか結果が Int の 0 と比較できなければコンパイルエラー、または Script なら読んだ直後の文法チェック時にエラーだと思う。
147: 2020/07/25(土)07:02 ID:j1aQFTSL(1) AAS
>>138Julia
a=1:10
a[iseven.(a)]
148: 2020/07/25(土)11:32 ID:vIjhxGJs(1) AAS
大抵の言語でfilter modulo一発だよね。
お題www
149: 2020/07/26(日)11:42 ID:467XWCJo(1) AAS
>>138
ランダムは副作用なので、ちと面倒臭い。
(厳密には擬似乱数を作る為の種(newStdGen)だけが副作用)

Haskell

import System.Random

main = f 10 >>= print

f :: Int -> IO [Int]
f n = newStdGen >>= return.filter even.take n.randomRs (1,100)
省11
150: 2020/07/26(日)11:54 ID:arqbmdN/(1) AAS
Haskellのコード見たいと思ってた
151
(1): 2020/07/26(日)11:55 ID:Lwmxod4b(1) AAS
流行らなかった訳が分かった
152: 2020/07/26(日)12:16 ID:yLhsD6tn(1/2) AAS
>>151
まあね。
安全なコードを書き易いと取るか、面倒くさいと取るかやね。
153
(3): 2020/07/26(日)12:31 ID:XQciIU0B(1) AAS
お題
2つの文字列の差を[]で囲って出力してください

例1
入力:abc adc
出力:a[b]c

例2
入力:abc acd
出力:a[bc]

例3
入力:abc bcc
省1
154: 2020/07/26(日)15:30 ID:yLhsD6tn(2/2) AAS
>>153

Haskell

一応、長さが違う場合、短い方に合わせる様にしてみた。
テストし切れてないかもなので、バグに気付いたら教えて下しあ。

main = putStrLn $ g "abcdefrh" "acdgefggn"

f False [] _ =[]
f False _ [] =[]
f True [] _ = "]":[]
f True _ [] = "]":[]
f flg (x:xs) (y:ys) | flg == True && x == y = ("]" ++ [x]):f False xs ys
省6
155
(1): 2020/07/26(日)17:41 ID:1PJx+gwa(1) AAS
やっぱフラグしかないのか?
156: 2020/07/26(日)19:21 ID:+ODzYEeD(1) AAS
>>153 Ruby
def resolve( s )
f = true
ss = s.split.map{|w| w.chars }
ss[0].zip( ss[1] ).inject(''){|r, (c,d)|
r << ( (f)? '[': ']' ) if (c == d) != f
f = c == d
r << c
} + ((f)? '' : ']')
end
省4
157: 2020/07/26(日)23:12 ID:3QUkzPB/(1) AAS
>>155

確かこんなのあったな〜・・・と、inword/outword関数の相互再帰で書いてみた。

Haskell

main = (putStrLn.f "abcdefrt") "acdgefgg"

f xs ys | g xs ys =[]
f (x:xs) (y:ys) | x == y = outword (x:xs) (y:ys)
f xs ys = inword xs ys
省7
158
(1): 2020/07/29(水)09:26 ID:yJ6wpcWu(1) AAS
お題1
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー

入力: 1
出力: あなた=ぐー コンピュータ=ちょき あなたの勝ちです

お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します
省2
159: 2020/07/29(水)22:59 ID:tovqwAmw(1/2) AAS
AA省
160: 2020/07/29(水)23:09 ID:tovqwAmw(2/2) AAS
下から5行目タイポ
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win
161: 2020/07/29(水)23:11 ID:z6Fnx3oM(1) AAS
Parr
出たか連続校正レス君
162: 2020/07/29(水)23:15 ID:zhbinuHB(1) AAS
別にええやろ
163: 蟻人間 ◆T6xkBnTXz7B0 2020/07/29(水)23:42 ID:hGtKVe2E(1) AAS
子ども国会で、グー、チョキ、パーのつづりを次のように閣議決定しました。

グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。
164: 2020/07/30(木)00:20 ID:aEaasmNp(1/2) AAS
Unicode の \u270A \u270B \u270C
165
(4): 2020/07/30(木)15:16 ID:cH8Va6i2(1) AAS
自然数AとBがあります
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
166
(1): 2020/07/30(木)15:58 ID:aEaasmNp(2/2) AAS
>>165 Ruby
def multiply( a, b )
ans = 0
while a > 0
ans += b if a.odd?
a >>= 1
b <<= 1
end
ans
end
省1
167: 2020/08/01(土)20:01 ID:eF75V+Af(1) AAS
>>165

import Math;

int kakezan(a, b) {
int min, max = Math.sort([a, b]);
if(min == 0) return 0;
return Math.square(min) + kakezan(min, max - min);
}

printf(kakezan(0x12345678, 0x87654321)); // 693779765864729976
168: 2020/08/01(土)21:52 ID:xRTQ61eG(1) AAS
>>165
function mul(a, b) {
let prod = 0;
const unit = Math.sign(a) + Math.sign(b) ? 1 : -1;
for (let i = 0; i < Math.abs(a); i++)
for (let j = 0; j < Math.abs(b); j++)
prod += unit;
return prod;
}
console.log(mul(-6, -7)); //=> 42
省2
169
(3): 2020/08/04(火)03:43 ID:DYgISIVe(1) AAS
お題: 文字列の格納された配列から重複した文字列を削除し昇順にソートせよ

['apple', 'banana', 'apple', 'chikuwa']

['apple', 'banana', 'chikuwa']
170: 2020/08/04(火)03:55 ID:gT//RRjC(1) AAS
>>169 Ruby
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]
171: 2020/08/04(火)05:05 ID:YeoxtHaI(1) AAS
>>153 Ruby

def resolve( str )
res = String.new # 戻り値
flag = false # [ だけを付けて、まだ ] で閉じていない状態が、true
ary = str.split # 空白で、2つに分離する

ary[ 0 ].chars.zip( ary[ 1 ].chars ) do |c0, c1| # 1文字ずつ比較する
if c0 == c1
if flag
res = res + ']' + c0
flag = false
省18
172: 2020/08/04(火)18:06 ID:Bm48LwqI(1) AAS
>>169
Kotlin または Kotlin script でのやり方

a が Array<String> または List<String> でそこに元の文字列が入っているとすると。

val b = a.toSortedSet()

でbに重複削除されてソートされたSetができる。
これを List<String> にしたい場合はこうする。

val c = b.toList()
173
(1): 2020/08/04(火)18:45 ID:lImhU2CT(1/3) AAS
>>165 チューリングマシン(Python3)
#チューリングマシン本体(不受理の場合例外が発生する)
def turingMachine(tape, state_function, current_state, final_state):
i=0
n = len(tape)
while i < n:
sf = state_function[current_state]
symbol = tape[i] if i >= 0 else None
(current_state, rsymbol, is_right) = sf[symbol]
if i >= 0:
省21
174: 2020/08/04(火)19:24 ID:lImhU2CT(2/3) AAS
>>173
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
外部リンク:codepad.org
※会員未登録の為、一定期間後に自動消去
175
(3): 2020/08/04(火)20:26 ID:BW/Lg1/b(1) AAS
>>166
この魔法が気になる
176: 蟻人間 ◆T6xkBnTXz7B0 2020/08/04(火)20:33 ID:pnjegpbT(1/3) AAS
>>175
奇数ならば最下位ビットが1であることを利用している。
177: 2020/08/04(火)20:43 ID:ZgraBKAX(1) AAS
筆算じゃないの

101 b
110 a (+
---------
0
1010
10100
---------
11110
178: 蟻人間 ◆T6xkBnTXz7B0 2020/08/04(火)20:47 ID:pnjegpbT(2/3) AAS
お題: 総務省統計局の1990〜2019年までの人口データを使用して2020〜2024年の日本の人口の推計値を求めよ。人口データ以外は使用しないものとする。
179: 蟻人間 ◆T6xkBnTXz7B0 2020/08/04(火)21:14 ID:pnjegpbT(3/3) AAS
これは電子政府の使い勝手のテストである。だれも解けないなら、電子データは活かされていないと判断する。
180: 2020/08/04(火)21:16 ID:02jYvMNw(1/2) AAS
>>175
aの偶奇によって↓の計算してaがちっちゃくなったら終わりってしてるだけだぞ

(2a' + 1)b = b + a' * (2b)
(2a') * b = a' * (2b)
181: 2020/08/04(火)21:26 ID:lImhU2CT(3/3) AAS
チューリングマシンを使って重くて複雑な乗算を再現して何の意味があるのかと思ってそうだな
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている
182: 2020/08/04(火)21:58 ID:JHqDXk92(1) AAS
お題を出して解くスレで電子データは活かされていないとかどうでもいいんですが…
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ
183: 2020/08/04(火)22:11 ID:02jYvMNw(2/2) AAS
片山博文MZ◆NveQN6OtcI
184
(4): 2020/08/04(火)23:36 ID:L0dS0CTZ(1) AAS
お題
両替をしてください
貨幣は次の文字列で表されます
1円 = (1)
5円 = (5)
10円 = (10)
50円 = (50)
100円 = (100)
500円 = (500)


省4
185: 2020/08/05(水)00:05 ID:DlE2lfwB(1/2) AAS
書きたいけど寝たい
186: 2020/08/05(水)02:29 ID:prJIGLTT(1/4) AAS
>>175
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。
187: 2020/08/05(水)02:55 ID:wv4r4oF2(1/2) AAS
>>184 Ruby
def change( coin )
sum = coin.split(/[^\d]+/)[1..].inject(0){|r,c| r + c.to_i }
ret = ''
[500,100,50,10,5,1].each{|c|
next unless sum >= c
r, sum = sum.divmod( c )
ret << "(#{c})" * r
}
ret
省6
188
(1): 2020/08/05(水)11:37 ID:kVNaCqIg(1) AAS
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py", line 23, in <module>
my_data = genfromtxt('SingleECG.csv')

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\npyio.py", line 1772, in genfromtxt
fid = np.lib._datasource.open(fname, 'rt', encoding=encoding)

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 269, in open
return ds.open(path, mode, encoding=encoding, newline=newline)

File "C:\Users\NEC-PCuser\anaconda3\lib\site-packages\numpy\lib\_datasource.py", line 623, in open
raise IOError("%s not found." % path)

グラフをプロットしたらこのエラーが出ました。対処法を教えてください
189: 2020/08/05(水)12:05 ID:DlE2lfwB(2/2) AAS
斬新なお題だなNEC-PCuserさん
190: 2020/08/05(水)12:16 ID:IZQzbQjk(1) AAS
>>188<対処法を教えるお題
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します
191: 2020/08/05(水)14:35 ID:xKYyZvTf(1) AAS
心電図装置に繋がってるデバイスが機能停止したんだろ
192: 2020/08/05(水)15:30 ID:prJIGLTT(2/4) AAS
>>184
Kotlin
外部リンク:paiza.io

最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。
193: 2020/08/05(水)16:44 ID:73CDpa/5(1) AAS
ふむ。コイン切れの対処もし易いな。
194
(4): 蟻人間 ◆T6xkBnTXz7B0 2020/08/05(水)17:59 ID:TWR5sasY(1) AAS
お題: コイにえさをやるプログラム「feed」がある。一時間ごとにfeedを実行するプログラムを書け。ただし、ビジーウェイトはしてはならない。

ダミーのfeedは、次のようなプログラムとする:

- 現在日時と「えさをやりました。」を出力する。
195: 蟻人間 ◆T6xkBnTXz7B0 2020/08/05(水)18:08 ID:UZ8wPONY(1) AAS
>>194 C++/Win32
#include <windows.h>
int main(void) {
for (;;) {
Sleep(60 * 60 * 1000);
ShellExecuteA(NULL, NULL, "feed.exe", NULL, NULL, SW_SHOWNORMAL);
}
}

// feed.cpp
#include <windows.h>
省8
196: 2020/08/05(水)19:40 ID:VitQNdTl(1) AAS
は、はやい・・・
197: 2020/08/05(水)20:19 ID:wv4r4oF2(2/2) AAS
>>194 Ruby (Windows)
# feed_ignition.rb
loop do
system( 'start "" feed.rb' )
sleep 60*60
end

# feed.rb
puts "#{Time.new.strftime('%Y/%m/%d %T')} えさをやりました。"
sleep 3 # 表示確認用
198
(1): 2020/08/05(水)23:41 ID:prJIGLTT(3/4) AAS
>>194
Linux 等の UNIX系OS だったら普通なら crond が動いているので crontab 設定すると楽だ。
(Windows の場合はタスクの設定で似たような事ができる)。

例えばこのようにすると毎時0分に feed コマンドが実行される。

0 * * * * feed

ただ問題はこのままだと標準出力がリダイレクトされていないのでその出力がcrondからメールで送られて来る事になる。
(見たい場合は mail コマンドを使って見る)。

コマンドラインから直接やるとしたら watch コマンドというのもある。これは実行するたびに出力が変化する
ようなコマンドを定期的に動かしてその出力を画面上に表示するためのコマンドだが毎回出力が同じでも
あるいは何も出力しなかったとしても問題はない。1時間ごとに動かすならこうなる。
省6
199: 2020/08/05(水)23:51 ID:prJIGLTT(4/4) AAS
>>198はfeedで現在の日付を出すのを忘れた。

日付付けるなら例えばこうする。

#!/bin/sh
echo `date` 'えさをやりました。'

date コマンドに任せてしまってこんな風にもできる。(日時は YYYY-MM-DD hh:mm:ss の形式で出る)。

#!/bin/sh
date '+%F %T えさをやりました。'
200
(2): 蟻人間 ◆T6xkBnTXz7B0 2020/08/06(木)18:50 ID:mzjhTFla(1/8) AAS
お題: 現実世界でコイにえさをやるプログラム。

できるのか?
201: 2020/08/06(木)19:02 ID:nx4HEXSE(1/3) AAS
>>200
始めからPLCのプログラム限定って書け>>194
202: 2020/08/06(木)19:06 ID:cHZDAcP7(1) AAS
>>200
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。

ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。
203
(2): 蟻人間 ◆T6xkBnTXz7B0 2020/08/06(木)19:21 ID:mzjhTFla(2/8) AAS
ハードウェアだとソフトウェア制御できない。成長を細かく制御したい。
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。
204: 2020/08/06(木)19:23 ID:nx4HEXSE(2/3) AAS
>>203
ピ・タ・ゴ・ラ・スイッチ
205
(1): 2020/08/06(木)19:37 ID:/QKQvkvR(1) AAS
なぜ何度ツッコまれてもスレタイからずれようとするんですか?
学習できないんですか?
206: 蟻人間 ◆T6xkBnTXz7B0 2020/08/06(木)19:46 ID:mzjhTFla(3/8) AAS
>>205
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会
207
(1): 2020/08/06(木)19:58 ID:AWtnj9QL(1) AAS
CDトレイを開閉するソフトを作りそれで餌やり器のボタンを押せ
1-
あと 795 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.181s*