[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/09 01:44 / Filesize : 338 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part18



1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

116 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:45:13.46 ID:h5vFOzT4.net]
頭が悪いことがばれたからって
必死に数学の知識を見せようと頑張ってる

でも頭の悪さが随所に滲み出てる
自覚のないアホ

117 名前:蟻人間 mailto:sage [2020/07/19(日) 21:56:49.40 ID:GV3E92FC.net]
>>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);
}

118 名前:デフォルトの名無しさん mailto:sage [2020/07/19(日) 21:57:24.56 ID:5kiTFqsE.net]
誰もイキらずに淡々と問題と答えのレスだけ並んでく雰囲気は良さを感じたけど
やっぱクソコテって怖いな

119 名前:蟻人間 mailto:sage [2020/07/19(日) 22:06:51.03 ID:GV3E92FC.net]
>>116
dz = dy * Math.sin(angle2 * Math.PI / 180);
dy *= Math.cos(angle2 * Math.PI / 180);

次は、三次元のturn_dirね。数学、スゴクデキルんでしょ?

120 名前:蟻人間 mailto:sage [2020/07/19(日) 22:12:10.73 ID:GV3E92FC.net]
お題: JavaScript
function turn_dir(dx, dy, dz) {
// (dx, dy, dz)は長さ1の方向ベクトル。
// 長さ1の方向ベクトル(turtle_dx, turtle_dy, turtle_dz)を(dx, dy, dz)だけ回転させる。
...(ここに何か書く)...
}

121 名前:蟻人間 mailto:sage [2020/07/19(日) 22:16:20.98 ID:GV3E92FC.net]
♪はい、コーディングいってみよー!

はいはいはい、はいはいはい!

122 名前:蟻人間 mailto:sage [2020/07/19(日) 23:32:08.26 ID:T8vbWyFG.net]
俺はそういう悪評トリックに引っ掛からないよ。間違いは的確に指摘頂きたい。

123 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 06:57:18.16 ID:P7t0RBc6.net]
>>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インスタンス生成してカメラとレンダラー渡すだけ
controls = new THREE.OrbitControls( camera, renderer.domElement );

scene = new THREE.Scene();

//ついでに座標軸表示もおすすめ
scene.add( new THREE.AxisHelper(50) );

}
https://i.imgur.com/uFIgx6x.png

124 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 07:42:33.17 ID:ozWDjdlg.net]
>>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)とする。
var dz = dy * Math.sin(angle2 * Math.PI / 180);
//dy *= Math.cos(angle2 * Math.PI / 180);
turtle_dz = dz;
// 実際に回転させる。
turn_dir(dx, dy, dz);
}

}
function draw() {
set_pos(0, 0, 0);
set_dir(0, 100, 0);
for (var i = 0; i < 18; ++i) {
walk(15);
//turn_angle(45);
turn_angle(45, 20);
}
}
https://i.imgur.com/CdQvIDR.png

https://i.imgur.com/G4HUVBh.png



125 名前:蟻人間 mailto:sage [2020/07/20(月) 15:09:49.43 ID:rHNryQzp.net]
傾けた木が平面にならない。
https://github.com/katahiromz/3D
(4) https://github.com/katahiromz/3D/blob/master/4.html
https://twitter.com/katahiromz/status/1285093638557466624/photo/1
何でだろ。

https://github.com/katahiromz/3D からダウンロードして下さい

126 名前:
お題: (4) を修正して木が平面になるようにせよ。
(deleted an unsolicited ad)
[]
[ここ壊れてます]

127 名前:デフォルトの名無しさん [2020/07/20(月) 16:08:13.13 ID:UHinuGOV.net]
お題じゃなくて作成依頼ですか?w

128 名前:蟻人間 mailto:sage [2020/07/20(月) 16:16:33.54 ID:6GFyBW1T.net]
こういうのは数学が鬼ズバできる猛者に任せたい所だが。。。
報酬は出しちゃいかんのか。

129 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:25:48.10 ID:uvZgkaZD.net]
出ないならやらない

130 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:58:58.92 ID:8mFfSXNu.net]
いや、そういう猛者がいるところに依頼してこいよ
報酬出すんならランサーズとかにでも行ってこい
なんでここで話題にするんだ

131 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 17:59:50.36 ID:8mFfSXNu.net]
そういう意味不明な言動を繰り返すから糞コテ呼ばわりされるって気付いて

132 名前:蟻人間 mailto:sage [2020/07/20(月) 18:37:44.48 ID:rHNryQzp.net]
寺へ行きました。すみません。

133 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:40:32.05 ID:5ka8Ymx5.net]
>>124
なにこれ激重。1〜3はIEでも動くけど4はクロームでも少し時間かかる。
https://i.imgur.com/Kkti3xQ.gif
舞フレームごとに書き出してるんかな?
3Dオブジェクトコンテナにでも入れた方がいいのかな?

134 名前:蟻人間 mailto:sage [2020/07/20(月) 23:47:38.07 ID:6GFyBW1T.net]
やろうとしてるのは、三次元フラクタルと臓器の実体化だから、超複雑な図形を再帰で描くことになる。再帰が多ければ確かに計算量は爆発するよ。



135 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:52:17.88 ID:/f9oEP+1.net]
いい加減IE捨てろよ

136 名前:アンスタ7.2日目 mailto:sage [2020/07/20(月) 23:54:27.58 ID:5ka8Ymx5.net]
>>124
https://i.imgur.com/Kkti3xQ.gif
タートルグラフィックスTreeの平面化
https://i.imgur.com/hNNvsE0.gif
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;
 var dz = dy * Math.sin(angle2 * Math.PI / 180);
 //dy *= Math.cos(angle2 * Math.PI / 180);
 turtle_z = dz;
 turn_dir(dx, dy, dz);
}
function draw() {
 //set_pos(0, 0, 0);
 set_dir(0, 100, 0);
 //koch(6, 50);
 set_pos(0, 0, 0);
 //set_dir(0, 100, 100);
 tree(10, 40, 10);
}

137 名前:デフォルトの名無しさん mailto:sage [2020/07/20(月) 23:57:55.33 ID:5ka8Ymx5.net]
>>133
クロームより軽いから、捨てられなくて。。。

138 名前:蟻人間 mailto:sage [2020/07/21(火) 00:03:34.18 ID:iLwMnecK.net]
>>134
その事例についてはteratailに移動しましたので、ここでは打ち切りとさせて下さい。

https://teratail.com/questions/279115

139 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:25:22.87 ID:ILXZvJ+B.net]
「1+1は2じゃないぞ。オレたちは1+1で200だ!10倍だぞ10倍」
…が、なんとなく成り立っているように感じられるプログラムを作って発表せよ。

140 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:30:15.48 ID:IwIxQ1Ze.net]
お題: ランダムな整数が格納された長さNの配列から、偶数の要素のみを抜き出せ
Nは任意とする

141 名前:デフォルトの名無しさん mailto:sage [2020/07/22(水) 22:57:06.83 ID:EawLE7Sy.net]
>>138 Ruby

p gets.split.map(&:to_i).select(&:even?)

142 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 00:07:39.47 ID:DuCdQo+y.net]
>>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倍"



https://repl.it/@vip0/override-plus-1#main.rb

143 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 10:38:13.83 ID:bJ7HfHNw.net]
>>138 ocaml
https://ideone.com/qCUADD

>>138 octave
https://ideone.com/3xMvgA

144 名前:デフォルトの名無しさん mailto:sage [2020/07/23(木) 22:03:16.45 ID:VBywRp49.net]
>>138 Perl5

@b = grep{$_ ^ 1} @a;



145 名前:デフォルトの名無しさん [2020/07/23(木) 23:12:54.26 ID:QnunbgyT.net]
>>138
Java
https://paiza.io/projects/BNpQRglb7E1lGKawVZRBCg

146 名前:デフォルトの名無しさん [2020/07/24(金) 00:24:32 ID:F0SZWNxk.net]
>>138 Python
import random
N = 10
MAX = 100
[x for x in random.sample(range(MAX), N) if x % 2 == 0]

147 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 03:32:41.61 ID:6ZonvnML.net]
>>137
なんとなく結果を2進数(あるいは通常の10進数以外の表現)で出せば良いだけのような気がするが・・・

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

printf "%b\n", 1 + 1;

148 名前:デフォルトの名無しさん [2020/07/24(金) 03:47:06.33 ID:6ZonvnML.net]
>>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 なら読んだ直後の文法チェック時にエラーだと思う。

149 名前:デフォルトの名無しさん [2020/07/25(土) 07:02:03.31 ID:j1aQFTSL.net]
>>138Julia
a=1:10
a[iseven.(a)]

150 名前:デフォルトの名無しさん mailto:sage [2020/07/25(土) 11:32:49.78 ID:vIjhxGJs.net]
大抵の言語でfilter modulo一発だよね。
お題www

151 名前:デフォルトの名無しさん [2020/07/26(日) 11:42:26.03 ID:467XWCJo.net]
>>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)

実行結果

[56,70,100]

型指定しないと型推論が働かない。
(生成される乱数が整数とは限らない為)

戻り値は型で分かる通り、普通のリストでは無くIOなリスト。
newStdGenを使っているので、IOな値を返さないといけない。
(printもIO ()を返すのでreturnをprintに置き換えて直接出力も可能ではある)

randomRs (1,100) で1から100までの乱数の無限リストを生成。
後はtakeで無限リストから任意の個数を取り出してfilterするだけ。
(takeとfilterは順番が逆だと乱数の無限リストから偶数を任意の個数取り出すので問題の意図と違ってしまう)

問題が「出力しろ」では無く「抜き出せ」なので、あえてprintは関数の外に置いた。

152 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:54:08.47 ID:arqbmdN/.net]
Haskellのコード見たいと思ってた

153 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:55:36.48 ID:Lwmxod4b.net]
流行らなかった訳が分かった

154 名前:デフォルトの名無しさん [2020/07/26(日) 12:16:01.64 ID:yLhsD6tn.net]
>>151
まあね。
安全なコードを書き易いと取るか、面倒くさいと取るかやね。



155 名前:デフォルトの名無しさん [2020/07/26(日) 12:31:12.02 ID:XQciIU0B.net]
お題
2つの文字列の差を[]で囲って出力してください

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

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

例3
入力:abc bcc
出力:[ab]c

156 名前:デフォルトの名無しさん [2020/07/26(日) 15:30:12.41 ID: ]
[ここ壊れてます]

157 名前:yLhsD6tn.net mailto: >>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
f flg (x:xs) (y:ys) | x == y = [x]:f False xs ys
f flg (x:xs) (y:ys) | flg == False = ("[" ++ [x]):f True xs ys
f flg (x:xs) (y:ys) | flg == True = [x]:f flg xs ys

g xs = concat.f False xs

実行結果

"a[bcd]ef[rh]"
[]
[ここ壊れてます]

158 名前:デフォルトの名無しさん [2020/07/26(日) 17:41:12.51 ID:1PJx+gwa.net]
やっぱフラグしかないのか?

159 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 19:21:26.42 ID:+ODzYEeD.net]
>>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

[ "abc adc", "abc acd", "abc bcc" ].each{|s|
puts "入力:#{s}"
puts "出力:#{resolve( s )}\n\n"
}

160 名前:デフォルトの名無しさん [2020/07/26(日) 23:12:10.92 ID:3QUkzPB/.net]
>>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

inword xs ys | g xs ys = ']':[]
inword (x:xs) (y:ys) | x == y = ']':x:outword xs ys
inword (x:xs) (_:ys) = x:inword xs ys

outword xs ys | g xs ys = []
outword (x:xs) (y:ys) | x == y = x:outword xs ys
outword (x:xs) (_:ys) = '[':x:inword xs ys

g xs ys = or [null xs, null ys]

161 名前:デフォルトの名無しさん [2020/07/29(水) 09:26:50.38 ID:yJ6wpcWu.net]
お題1
じゃんけんを実装してください
1 = ぐー
2 = ちょき
3 = ぱー

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

お題2
あなたの勝率を指定できるようにしてください
勝率は0.0〜1.0で入力します

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

162 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 22:59:47.88 ID:tovqwAmw.net]
>>158 Ruby

JANKEN = %w[Goo Chocky Parr]
KEKKA = %w[Win Lose Draw]

#お題1
odai1 = -> n do
    r = rand(3)
    'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end

puts odai1[1] # => You: Goo, Com: Chocky. Win
puts odai1[2] # => You: Chocky, Com: Goo. Lose
puts odai1[3] # => You: Par, Com: Par. Draw

#お題2
odai2 = -> (n, p) do
    r = rand < p ? 0 : rand(2) + 1
    'You: %s, Com: %s. %s' % [JANKEN[n - 1], JANKEN[(n + r) % 3], KEKKA[r]]
end

puts odai2[1, 0] # => You: Goo, Com: Par. Lose
puts odai2[2, 1] # => You: Goo, Com: Chocky. Win
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose
puts odai2[3, 0.3] # => You: Par, Com: Goo. Win
puts odai2[3, 0.3] # => You: Par, Com: Par. Draw
puts odai2[3, 0.3] # => You: Par, Com: Chocky. Lose

163 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:09:16.98 ID:tovqwAmw.net]
下から5行目タイポ
puts odai2[2, 1] # => You: Chocky, Com: Parr. Win

164 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:11:53.00 ID:z6Fnx3oM.net]
Parr
出たか連続校正レス君



165 名前:デフォルトの名無しさん mailto:sage [2020/07/29(水) 23:15:30.50 ID:zhbinuHB.net]
別にええやろ

166 名前:蟻人間 mailto:sage [2020/07/29(水) 23:42:09.78 ID:hGtKVe2E.net]
子ども国会で、グー、チョキ、パーのつづりを次のように閣議決定しました。

グーはgoo、
チョキはchoki、
パーはpar、
ジャンケンはJankenとする。

167 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 00:20:11 ID:aEaasmNp.net]
Unicode の \u270A \u270B \u270C

168 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:16:52 ID:cH8Va6i2.net]
自然数AとB

169 名前:があります
A * B ではない方法で、AとBを掛けた結果を求めなさい。
ただし、AとBは4バイトの数値型で、どのような値が入ってきても
実施してからなるべく近い時間で計算終了する方が高得点とします。
[]
[ここ壊れてます]

170 名前:デフォルトの名無しさん mailto:sage [2020/07/30(木) 15:58:10.10 ID:aEaasmNp.net]
>>165 Ruby
def multiply( a, b )
ans = 0
while a > 0
ans += b if a.odd?
a >>= 1
b <<= 1
end
ans
end

multiply( 0x12345678, 0x87654321 ) #=> 693779765864729976

171 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 20:01:40.49 ID:eF75V+Af.net]
>>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

172 名前:デフォルトの名無しさん mailto:sage [2020/08/01(土) 21:52:47.76 ID:xRTQ61eG.net]
>>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
console.log(mul(-6, 7)); //=> -42

低得点ww

173 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:43:27.41 ID:DYgISIVe.net]
お題: 文字列の格納された配列から重複した文字列を削除し昇順にソートせよ

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

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

174 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 03:55:23.60 ID:gT//RRjC.net]
>>169 Ruby
['apple', 'banana', 'apple', 'chikuwa'].uniq.sort #=> ["apple", "banana", "chikuwa"]



175 名前:デフォルトの名無しさん [2020/08/04(火) 05:05:40.50 ID:YeoxtHaI.net]
>>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
else
res += c0
end

else
if flag
res += c0
else
res = res + '[' + c0
flag = true
end
end
end
res += ']' if flag # もし閉じていない場合は、閉じる
res
end

[ "abc adc", "abc acd", "abc bcc" ].each{ |str|
print "入力: #{ str }\n" + "出力: #{ resolve( str ) }\n\n"
}

176 名前:デフォルトの名無しさん [2020/08/04(火) 18:06:57 ID:Bm48LwqI.net]
>>169
Kotlin または Kotlin script でのやり方

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

val b = a.toSortedSet()

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

val c = b.toList()

177 名前:デフォルトの名無しさん [2020/08/04(火) 19:17:32.13 ID:w83j0BiFE]
[お題] “(16 + (8 - 4)) / 2” のような文字列を入力として,
その評価結果(この場合は10)を出力するプログラムを作成してください.

178 名前:デフォルトの名無しさん [2020/08/04(火) 18:45:38.06 ID:lImhU2CT.net]
>>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:
tape[i] = rsymbol
if current_state == final_state:
return True
i += 1 if is_right else -1
return False

def TmMul(a, b):
#1000000の箇所はメモリ容量に合わせて適当に増やす
tape = ["0"] * a + ["1"] + ["0"] * b + ["1"] + [None] * 1000000
trans = [{"0":(6, None, True)},
{"0":(2, "X", True), "1":(4, "1", False)},
{"0":(2, "0", True), "1":(2, "1", True), None:(3, "0", False)},
{"0":(3, "0", False), "1":(3, "1", False), "X":(1, "X", True)},
{"X":(4, "0", False), "1":(5, "1", True)},
{"0":(5, "0", False), "1":(7, "1", False)},
{"0":(6, "0", True), "1":(1, "1", True)},
{"0":(8, "0", False), None:(7, None, True), "1":(9, None, True)},
{"0":(8, "0", False), None:(0, None, True)},
{"0":(9, None, True), "1":(10, None, True)}]
turingMachine(tape, trans, 0, 10)
return len(list(filter(lambda x: x != None, tape)))
print(TmMul(3, 8)) #=>24

179 名前:デフォルトの名無しさん [2020/08/04(火) 19:24:17 ID:lImhU2CT.net]
>>174
あーアホだったw
タブ消去の仕様だとPythonだと分けわからんことになるなw
↓貼り直した
codepad.org/BWRzr8fW
※会員未登録の為、一定期間後に自動消去

180 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 20:26:47.42 ID:BW/Lg1/b.net]
>>166
この魔法が気になる

181 名前:蟻人間 mailto:sage [2020/08/04(火) 20:33:41.16 ID:pnjegpbT.net]
>>176
奇数ならば最下位ビットが1であることを利用している。

182 名前:デフォルトの名無しさん [2020/08/04(火) 20:43:45.04 ID:ZgraBKAX.net]
筆算じゃないの

101 b
110 a (+
---------
0
1010
10100
---------
11110

183 名前:蟻人間 mailto:sage [2020/08/04(火) 20:47:15.02 ID:pnjegpbT.net]
お題: 総務省統計局の1990〜2019年までの人口データを使用して2020〜2024年の日本の人口の推計値を求めよ。人口データ以外は使用しないものとする。

184 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/04(火) 21:14:16 ID:pnjegpbT.net]
これは電子政府の使い勝手のテストである。だれも解けないなら、電子データは活かされていないと判断する。



185 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:16:21 ID:02jYvMNw.net]
>>176
aの偶奇によって↓の計算してaがちっちゃくなったら終わりってしてるだけだぞ

(2a' + 1)b = b + a' * (2b)
(2a') * b = a' * (2b)

186 名前:デフォルトの名無しさん [2020/08/04(火) 21:26:04 ID:lImhU2CT.net]
チューリングマシンを使って重くて複雑な乗算を再現して何の意味があるのかと思ってそうだな
ポイントは文法の中に演算を組み込める点
実社会に役に立つ具体的な例を挙げろと言われれば直ぐには思いつかないが、オートマトンの入力は文字列だけとは限らないぞ
有限木オートマトン使って静的コード解析なのか最適化なのかは分からんが、開発言語の構文木に何らかの演算が伴うルールを適用したいこともあるかもしれない
「そんなのプログラミングすればいいだけだろ」と言う声が聞こえてきそうだがそれは極論「正規表現など要らん」と言ってるのと同じだと思う
以上でもって「全てのプログラマはオートマトンとチューリングマシンをよく勉強するべき」とする俺の主張の正当性は認められる
ちなみに俺は10年以上機械学習の勉強をしたのに画期的な成果が出せなかった後悔の思いがあるから言っている

187 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 21:58:22.27 ID:JHqDXk92.net]
お題を出して解くスレで電子データは活かされていないとかどうでもいいんですが…
なんでそうやっていつもスレ趣旨からずれようとするのか?
ズレたいならよそでやってくれ

188 名前:デフォルトの名無しさん mailto:sage [2020/08/04(火) 22:11:15.82 ID:02jYvMNw.net]
片山博文MZ◆NveQN6OtcI

189 名前:デフォルトの名無しさん [2020/08/04(火) 23:36:46 ID:L0dS0CTZ.net]
お題
両替をしてください
貨幣は次の文字列で表されます
1円 = (1)
5円 = (5)
10円 = (10)
50円 = (50)
100円 = (100)
500円 = (500)


入力: (1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)
出力: (10)(10)(1)(1)(1)(1)

入力: (5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)
出力: (100)(50)(10)(10)(10)(10)(5)(1)(1)(1)

190 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 00:05:23.10 ID:DlE2lfwB.net]
書きたいけど寝たい

191 名前:デフォルトの名無しさん [2020/08/05(水) 02:29:32 ID:prJIGLTT.net]
>>176
aが2とか4だったらどうなるかを紙にでも書いて考えればいずれわかると思う。

192 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 02:55:46.54 ID:wv4r4oF2.net]
>>185 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
end

[ '(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)(1)',
'(5)(50)(5)(1)(50)(5)(10)(1)(50)(1)(10)(10)' ].each{|coin|
puts "入力: #{coin}"
puts "出力: #{change( coin ) }\n\n"
}

193 名前:デフォルトの名無しさん [2020/08/05(水) 03:57:36.76 ID:NljdtI5zt]
>>153 C++
https://ideone.com/hgBybu

>>169 C++
https://ideone.com/dd6lAZ

194 名前:デフォルトの名無しさん [2020/08/05(水) 11:37:38.85 ID:kVNaCqIg.net]
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)

グラフをプロットしたらこのエラーが出ました。対処法を教えてください



195 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 12:05:51.48 ID:DlE2lfwB.net]
斬新なお題だなNEC-PCuserさん

196 名前:デフォルトの名無しさん [2020/08/05(水) 12:27:47.54 ID:NljdtI5zt]
>>185 C++
https://ideone.com/6kqA6M

197 名前:デフォルトの名無しさん [2020/08/05(水) 12:16:18.65 ID:IZQzbQjk.net]
>>190<対処法を教えるお題
一行目と最後の行IOError("%s not found." % path) から
File "C:\Users\NEC-PCuser\.spyder-py3\temp.py"
のパスが間違えていると思われるので
temp.pyを添付するか確認するように進言します

198 名前:デフォルトの名無しさん [2020/08/05(水) 14:35:10 ID:xKYyZvTf.net]
心電図装置に繋がってるデバイスが機能停止したんだろ

199 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 15:30:05.18 ID:prJIGLTT.net]
>>185
Kotlin
https://paiza.io/projects/cVm9G2FkQCosaGf9_fQz-Q

最初は割り算したり余り出したりしてやろうと思ったんだけど、よく考えたらこの場合はその計算は無駄な感じがしたので合計から引けたらその貨幣を出すのを繰り返すようにした。

200 名前:デフォルトの名無しさん [2020/08/05(水) 16:44:00.29 ID:73CDpa/5.net]
ふむ。コイン切れの対処もし易いな。

201 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/05(水) 17:59:02 ID:TWR5sasY.net]
お題: コイにえさをやるプログラム「feed」がある。一時間ごとにfeedを実行するプログラムを書け。ただし、ビジーウェイトはしてはならない。

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

- 現在日時と「えさをやりました。」を出力する。

202 名前:蟻人間 mailto:sage [2020/08/05(水) 18:08:26.66 ID:UZ8wPONY.net]
>>197 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>
#include <stdio.h>
int main(void)
{
SYSTEMTIME st;
GetLocalTime(&st);
printf("%04d.%02d.%02d %02d:%02d:%02d えさをやりました。\n",
st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
}

203 名前:デフォルトの名無しさん [2020/08/05(水) 19:40:23.44 ID:VitQNdTl.net]
は、はやい・・・

204 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 20:19:52.45 ID:wv4r4oF2.net]
>>197 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 # 表示確認用



205 名前:デフォルトの名無しさん [2020/08/05(水) 23:41:13.11 ID:prJIGLTT.net]
>>197
Linux 等の UNIX系OS だったら普通なら crond が動いているので crontab 設定すると楽だ。
(Windows の場合はタスクの設定で似たような事ができる)。

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

0 * * * * feed

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


コマンドラインから直接やるとしたら watch コマンドというのもある。これは実行するたびに出力が変化する
ようなコマンドを定期的に動かしてその出力を画面上に表示するためのコマンドだが毎回出力が同じでも
あるいは何も出力しなかったとしても問題はない。1時間ごとに動かすならこうなる。

watch -n 3600 feed

もっと単純にシェルでループさせて実現する方法もある。(これだとようやっとプログラムっぽい見た目になる)

sh -c 'while : ; do feed ; sleep 3600 ; done'


feed コマンドについてはシェルスクリプトなら例えばこうしておけば良い。

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

206 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 23:51:48.40 ID:prJIGLTT.net]
>>201はfeedで現在の日付を出すのを忘れた。

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

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

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

#!/bin/sh
date '+%F %T えさをやりました。'

207 名前:デフォルトの名無しさん [2020/08/06(木) 14:26:19.33 ID:HoaabIeAf]
>>138 Rust
use rand::Rng;
fn main() {
    let mut rng = rand::thread_rng();
    let mut vec : Vec<u8> = Vec::new();
    for _ in 1..20 {
        vec.push(rng.gen::<u8>());
    }
    let result: Vec<u8> = vec.iter().filter(|&x| x % 2u8 == 0u8).cloned().collect();
    for v in result {
        println!("{}", v);
    }
}

208 名前:デフォルトの名無しさん [2020/08/06(木) 16:22:14.55 ID:HoaabIeAf]
>>138 C++
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
  auto vec = std::vector<int>{};
  for (int i = 0; i < 20; ++i) {
    vec.push_back(rand() % 10 + 1);
  }
  auto result = std::vector<int>{};
  std::copy_if(vec.begin(), vec.end(), std::back_inserter(result),
               [](int v) { return v % 2 == 0; });
  for (auto v : result) {
    std::cout << v << std::endl;
  }
}

209 名前:蟻人間 mailto:sage [2020/08/06(木) 18:50:53.87 ID:mzjhTFla.net]
お題: 現実世界でコイにえさをやるプログラム。

できるのか?

210 名前:デフォルトの名無しさん [2020/08/06(木) 19:02:17 ID:nx4HEXSE.net]
>>205
始めからPLCのプログラム限定って書け>>197

211 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:06:41 ID:cHZDAcP7.net]
>>205
プログラムそのものは出力装置に繋がるビットをONにするとかを定期的にやれば良いだけなのでは?
で、ONになったらリレーで餌やり器のスイッチが入ってウイーンとかいって餌が一定量水槽に入る。

ていうか、全部ハードウェアだけででできないか?タイマーICってあったよね確か。

212 名前:蟻人間 mailto:sage [2020/08/06(木) 19:21:15.27 ID:mzjhTFla.net]
ハードウェアだとソフトウェア制御できない。成長を細かく制御したい。
普通のPCから安価で制御する方法はないのだろうか。
ニシキゴイを20匹ほど飼いたいのだが。

213 名前:デフォルトの名無しさん [2020/08/06(木) 19:23:23.77 ID:nx4HEXSE.net]
>>208
ピ・タ・ゴ・ラ・スイッチ

214 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:37:26 ID:/QKQvkvR.net]
なぜ何度ツッコまれてもスレタイからずれようとするんですか?
学習できないんですか?



215 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/08/06(木) 19:46:21 ID:mzjhTFla.net]
>>210
ハードにも興味を持ってくれるといいな、と思って企画しました by 突撃商会

216 名前:デフォルトの名無しさん mailto:sage [2020/08/06(木) 19:58:03 ID:AWtnj9QL.net]
CDトレイを開閉するソフトを作りそれで餌やり器のボタンを押せ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<338KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef