ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/03/18(土) 13:03:05.05ID:KGlkA67c
ぬるぽって何?
2017/04/02(日) 23:11:13.31ID:Gs8AFczl
>>154は、非推奨。
2017/04/03(月) 00:07:22.39ID:QRQ9n9IP
>>149>>151
そこまで言うことないだろ。

>>148
スッキリJavaというネット書店年間売り上げ1位の本に書いてあった通りに入力しました。
あの本スキャナークラスの使い方書いてない…。
2017/04/03(月) 00:12:32.88ID:bd0HZsPG
Io関係は基本小難しいからしっかり勉強しないと
2017/04/03(月) 03:08:47.11ID:k0xRY1bb
おいおい、勉強する気無いのかよ
http://echo.2ch.net/test/read.cgi/tech/1478863511/971
2017/04/03(月) 04:06:51.84ID:xGsKqTNR
java.util.Scanner myScanner = new java.util.Scanner(System.in);
でいったん変数myScannerで保持しておき、String myName = myScanner.nextLine();で入力を取得するといいんじゃね。あと、ideoneは標準入力(standard input)が指定できるから、それを使え。
2017/04/03(月) 04:30:13.19ID:xGsKqTNR
直しといたよ。
https://ideone.com/lMV8X1
2017/04/03(月) 04:53:42.02ID:xGsKqTNR
ちょっと改良したよ。
https://ideone.com/2I98j6
2017/04/03(月) 05:18:33.43ID:xGsKqTNR
https://ideone.com/2r6hwE
2017/04/03(月) 05:28:56.71ID:xGsKqTNR
https://ideone.com/kEZvq7
2017/04/03(月) 06:34:10.87ID:xGsKqTNR
https://ideone.com/QGbkUc
2017/04/03(月) 07:09:29.51ID:fkeTvsFB
これで34歳はぬーぶくんよりはっきり劣ることが証明されたな。
2017/04/03(月) 07:16:22.06ID:xGsKqTNR
課題。
>>164を改造して、人間n人とコンピュータm人でジャンケンができるようにせよ。
ヒント:2つの配列を使う。
2017/04/03(月) 17:16:51.61ID:QRQ9n9IP
>>158
ありますよ。ググってます。

>>165
んな証明すな。

>>片山さん
プログラムの解読中です。
2017/04/03(月) 18:59:17.63ID:OjSCP+pk
>>167
いや、さっさと課題やれよ
2017/04/03(月) 20:24:30.29ID:uNrfjwY7
>>166
>>164のプログラム文がところどころ理解できないんですが…。
2017/04/03(月) 20:30:27.57ID:xGsKqTNR
>>169
所々ってどこ?
static { ... } で囲っている部分は最初に実行される。ジャンケンの勝敗は、大学数学の群論(剰余類)に関係していて、3で割った余り(剰余)に関係していることが知られている。
2017/04/03(月) 20:42:59.44ID:xGsKqTNR
「ジャンケン 剰余」で検索
2017/04/03(月) 21:02:22.39ID:gZTdU5yD
初心者スレで聞いたんじゃねえのか?
2017/04/03(月) 21:07:12.20ID:xGsKqTNR
trimはStringクラスのメソッドであり、文字列の両端の空白を切り捨てる。
2017/04/03(月) 21:25:18.75ID:xGsKqTNR
staticブロックの中でstaticな変数myScannerを初期化する。これでプログラム実行中は、
myScannerにインスタンスが格納された状態が保証される。複数のScannerによってSystem.inが所有されると問題が発生する。
スキャナの新規作成(new)は一回だけでいい。
2017/04/03(月) 21:31:48.71ID:xGsKqTNR
Scannerは入力をパイプラインのように流れ(stream)として処理する。
2017/04/03(月) 21:47:01.77ID:xGsKqTNR
入力の読み込みに必要なデータは、System.inが保持している。複数のスキャナからSystem.inを読み込もうとすると、System.inが混乱して、読み込み状態がおかしくなり、読み込みに失敗する。
2017/04/03(月) 21:58:42.81ID:xGsKqTNR
このストリーム処理というのは、複数箇所への出力を想定したものではない。複数への出力はパフォーマンスを低下させる。
2017/04/03(月) 22:12:53.13ID:xGsKqTNR
単純に言えば、スキャナとかストリームというのは、所有する入力ストリームのreadメソッドを使って一連のデータの流れを流れ作業で処理しているだけだ。
2017/04/03(月) 23:24:16.26ID:QRQ9n9IP
>>172
あっちでは主にイデオンの使い方を聞いてた。

>>片山さん
丁寧にありがとうございます。
アルゴリズム考え中です。
2017/04/04(火) 00:00:02.13ID:sDkjbU3y
https://ideone.com/FspoyA
以前作った、人間1人対コンピューター2人のプログラムなんですが、
こういう方向性で作っていくとうまくいきませんよね?
2017/04/04(火) 05:48:37.49ID:7cliCNtZ
>>180
じゃあコンピュータ側が3人に増えたらプログラムどうすんの? 100人にしろって言われたら?
っていう話

課題だから自分で考えてね
2017/04/04(火) 06:38:58.98ID:cXgzdAGm
34ハゲはもう向いてないんだから筋トレでもしとけ
2017/04/04(火) 11:47:06.61ID:eEU/vhzO
ヒント:
全員手を出してもらう。
配列int count[3];を用意する。
グーの個数count[0]を数える。
チョキの個数count[1]を数える。
パーの個数count[2]を数える。
int alpha = (count[0] > 0) + (count[1] > 0) + (count[2] > 0)とする。
alpha == 3 || alpha == 1ならあいこ。
alpha == 2なら、count[k] == 0となる0≦k<3を見付ける。そしてkとは異なる手i1,i2について、勝敗を判定する。
勝ちの手を出したグループを勝ちとし、負けの手を出したグループを負けとする。
勝ったグループだけが生き残る。
勝ったグループが一人になるまで繰り返す。
2017/04/04(火) 11:52:32.33ID:eEU/vhzO
一人ひとりのプレイヤーが生き残っているかどうかを記録しておかないといけないね。
2017/04/04(火) 16:54:06.52ID:K+/Sgfl7
>>183
34歳無職はjavaだから、そのコード案はどうかなぁ
2017/04/04(火) 17:10:22.75ID:eEU/vhzO
訂正。Javaって面倒だな。
(誤)int count[3];
(正)int[] count = new int[3];

(誤)int alpha = (count[0] > 0) + (count[1] > 0) + (count[2] > 0)
(正)
int alpha = 0;
if (count[0] > 0) alpha++;
if (count[1] > 0) alpha++;
if (count[2] > 0) alpha++;
2017/04/04(火) 17:33:08.67ID:o6M7V6x8
真面目か?
2017/04/05(水) 01:13:34.04ID:zd2XobMn
>>181
そうなんですよねぇ。
このやり方には限界があるんです。

>>182
エムの部分が少しキてるだけで大した禿げ方ではないぞ。

>>片山さん
すいません、出来ないかも…。

Scannerを使ってcpuの人数読み込み
→その変数を制御変数と組み合わせてfor文内で、人数分Randomクラスをnew
→for文を抜けたら上のようにして作成した変数は消失
でうまくいきません…。
2017/04/05(水) 01:25:18.78ID:KOeCSQ1C
ぬーぶは春休み
ニートは禿休み
2017/04/05(水) 01:46:52.11ID:+Y9nZqnB
>>188
だから、変数のインスタンスをクラスのインスタンスにキープさせるといい。
ただし、そのためにはstaticを使わない、Mainクラスのインスタンスを
生成する必要がある。main関数の中でMainクラスのインスタンスをnewで作成する。
2017/04/05(水) 01:49:50.90ID:+Y9nZqnB
インスタンスに変数を置けば、ループの外側に変数をキープできる。
2017/04/05(水) 01:58:44.72ID:+Y9nZqnB
こうゆう風にインスタンスに変数を持たせる。
https://ideone.com/GeQUPV
2017/04/05(水) 02:10:16.82ID:+Y9nZqnB
あるいはこのように。
https://ideone.com/xXu50t
194デフォルトの名無しさん
垢版 |
2017/04/05(水) 10:44:36.57ID:fUwjSFIc
>>片山博文MZ ◆T6xkBnTXz7B0
そんなコード書いて恥ずかしくないの?

(いやぁ、深くは聞かないけど……)
2017/04/05(水) 12:31:39.56ID:+Y9nZqnB
君は、まだ基本をバカにできるような実力じゃないはずだ。君の実力に合わせてるんだよ。
2017/04/05(水) 13:16:11.48ID:+Y9nZqnB
>>188
そりゃforループの中で変数宣言したからだろう。forの外側か、インスタンスで変数を宣言するとよい。
2017/04/05(水) 13:24:43.44ID:+Y9nZqnB
変数には有効範囲(スコープ)というものがあって、ブロック{ }の内側で宣言された変数は、ブロックの外側から使えない、外側に出ると変数が破棄される。
2017/04/05(水) 23:55:13.26ID:zd2XobMn
すいません、アルゴリズムが分からないです…。
ちょっと出来なそうです…。
2017/04/06(木) 05:33:19.34ID:6JovfZjm
>>198
何がわかんないのか、どこまでわかってる(つもり)なのか説明してくれないと、返しようがない。
2スレぐらい前で、n人ジャンケンは色々皆で考察してたろ?
2017/04/06(木) 12:35:03.45ID:N6xn3VBK
>>198
高学歴で頭いいんだろ?
人並みの頭がついてることくらい証明して見せてよ。

そこそこ高学歴なのにプログラマー板で頭悪いと言われる
http://carpenter.2ch.net/test/read.cgi/liveplus/1491113304/
2017/04/06(木) 13:11:00.66ID:0SmLVS9o
配列と繰り返しについては、理解してる?
2017/04/06(木) 13:16:44.51ID:833YyDXY
イテレーターですか?
2017/04/06(木) 14:05:03.82ID:0SmLVS9o
もうちょっと簡単な課題。
要素数10の整数配列を作成し、1から10までの整数を格納する。
次に、配列の各要素を1だけ増加させる。その後、各要素を順番に出力する。
2017/04/06(木) 16:18:27.77ID:zjRfXGZ4
>>200
入試にプログラミングはない…。

>>199
1つには>>188で挙げた問題がある。不特定多数とコンピュータの人数が定められていない以上、Scannerを用いて(人数入力用)for文でcpuHandをnewしないといけないが…。(プレーヤー側も同じ)
あとは勝者判定がよく分からない。グ・チ・パ、グ・チ、チ・パ、パ・グ、グのみ、チのみ、パのみの7通りだけど、誰がどの手ってのを考えるとものすごい数の組み合わせがありそう。

>>201
理解してるつもりです。ただJavaでは配列を使ったプログラムは組んだことがないです…。

>>202
イテレータ使うんですか?

>>203
ちょっと待って下さいね。
2017/04/06(木) 20:01:36.82ID:oEbJRC8j
プログラミングの知識ゼロの大学一年生なのですが
お金になるという面だけで考えた場合一番コスパの良い言語って何でしょうか?
2017/04/06(木) 20:22:16.07ID:0SmLVS9o
>>205
Javaだね。Javaの技術者は引っ張りダコだ。間違ってもUnmanagedなCやC++は選んじゃだめだ。
2017/04/06(木) 20:38:19.21ID:mvwWXB2K
>>203
出来ました。
https://ideone.com/tjg7de
2017/04/06(木) 20:44:02.59ID:0SmLVS9o
じゃあ、次の課題。
要素数20の整数配列を0〜2の整数乱数で埋める。
配列の中の0の個数、1の個数、2の個数を出力せよ。
2017/04/06(木) 21:09:15.21ID:0SmLVS9o
>>207
合格。ただ一つ言うとしたら、forと(の間に空白を入れた方がいいな。
2017/04/06(木) 21:47:54.01ID:wxzs61S8
>>205
結局全部できるやつが強い
とりあえずはJavaから始めればいい
2017/04/06(木) 22:58:36.89ID:oEbJRC8j
>>206
>>210
ありがとうございます
アンドロイドアプリ制作もJavaと聞いたのでやってみます
2017/04/06(木) 23:47:37.74ID:6mGUCvmD
大学一年ならfortranとscheme(lisp)やっとけ
これらの言語のよいところは設計思想が明確なところだ
そんじょそこらの妥協に妥協を重ねた言語とは重みが違う、美学があるのはこの二つだけ

それからJava,javascript or python or rubyを勉強しとけ
ここまでやったら、言語なんてなんでもいいと気づく
抽象構文木をどのように構築するのか、メモリの配置とCPUサイクル、そして可読性のどれを選ぶかでしかなくなる

そこまで真剣にやったら、パフォーマンスを出すにはCが必要だという現実に気づくだろう

君はまだ一年生だ、勉強する時間は山のようにある
高みに到達したいなら、言語の歴史の通りに進むことだ
間違ってもCからはいってはいけない、Cからはいるのは学習曲線がきつすぎる割には、初学者が学ぶべきことをあまり言語がサポートしてくれない

全てを配列で考えるようになったら、プログラマとしての将来はないし、生産性もあがらないのだから低賃金になるしかない
Javaもだいたい同じで、シンタックスが冗長なのがダメだが、javaは懐が広い標準語でもあるから学んで損はない
Javaからはいって、javaを使いこなせないと思うけどね
Javaを勉強したいならオブジェクト指向関連の思想はスルーしておくこと
オブジェクト指向のおかげで、javaのクラスライブラリが乱れまくってる、特にIO周りはひどすぎなことにも目をつぶらないといけない、まあCも腐ってるけど
2017/04/06(木) 23:52:33.43ID:zjRfXGZ4
>>209
すいません、せっかくのアドバイスですが、詰めて書いてもいいですか?
2017/04/07(金) 00:00:23.48ID:h5rZiyBe
>>213
コーディングスタイルは、組織の裁量と個人の自由になるが、
forやwhileは関数呼び出しではないことを示すためにカッコの前にスペースを置く慣習がある。
2017/04/07(金) 00:04:28.19ID:7g/og4rQ
Javaを勉強するコツはオブジェクト指向の思想にとらわれないこと

ただひたすらクラスやライブラリの使い方を理解し活用すること

僕の最強のクラス構成とか語り出したらプログラマとしての将来はない、残るのは設定だけで、何一つ実行可能なコードは作成されず、できてもチープでしょぼしょぼで何の役にも立たない産物だけだ、
その現実に使えるライブラリを何とか探そうとするが、クラス設計に埋没する奴は十中八九ライブラリの使い方がわからない
自分のやりたいことをコードにおとせないしょぼしょぼプログラマになるしかない

javaにはそういう現実逃避の側面があるから、そういった本は避けること
私がfortranとlispをオススメするのは、fortranは科学計算という目的のためにパフォーマンスが引き出されていること
lispには明確な目的はないがラムダ計算にもとづく抽象構文木の操作という数学的な設計思想があるから、くだらん感情が入る余地がないということだ
例えばセミコロンが気に入らなかったり、ドル記号が気に入らなかったり、そんなのはコードを書かない理由にはならないが、

そんな理由で現在でもプログラミング言語が生産されている
2017/04/07(金) 00:20:51.79ID:g05Ok9Aj
>>214
ちょっと保留にさせて下さい。

>>208
出来ました。
https://ideone.com/3OG5za
2017/04/07(金) 00:40:50.56ID:h5rZiyBe
>>216
やれば出来るじゃん。配列の中の個数を数えるという処理がn人ジャンケンでは重要。
前述したことだが、配列にジャンケンの手が人数分すべて格納されていると仮定すると、あいこになる条件は、何か。
2017/04/07(金) 01:10:13.25ID:g05Ok9Aj
先のプログラム文でいうと、
counter_0>=1 && counter_1>=1 && counter_2>=1
になることですか?
2017/04/07(金) 04:30:20.47ID:h5rZiyBe
それはすべての手が出された場合。それだけではない。全部が同じ手になる場合も考えよ。
2017/04/07(金) 09:07:57.32ID:3cGfJivt
ひたすら持論を展開するだけの長文は
読むに値しない事だけは良く分かる
2017/04/07(金) 13:14:58.84ID:OHa2uSEC
javaからはじめても
n人じゃんけんすらなかなか実装できそうにないというのはこのスレを見てもわかることだけど
2017/04/07(金) 13:16:17.15ID:OHa2uSEC
そんなプログラマにひとやまいくらの値段がつくと思ってるんだ?
そういうシステムエンジニアがそれだけ顧客の迷惑になるか考えたことはあるのか
2017/04/07(金) 14:21:29.45ID:h5rZiyBe
あいこになるのは、
int x = 0;
if (counter_0 > 0) x++;
if (counter_1 > 0) x++;
if (counter_2 > 0) x++;
としたときにx==1 || x==3となる場合だね。x==2の場合は、勝敗が存在する。
2017/04/07(金) 14:28:25.20ID:h5rZiyBe
課題。
コンピュータのみでn人ジャンケン。出来るところまで作れ。
2017/04/07(金) 14:49:54.23ID:h5rZiyBe
ヒント:
CPUの名前はCPU#0、CPU#1、CPU#2、…とする。String[] cpuNamesに格納せよ。
生き残りを表す配列 boolean[] survivalを用意せよ。
生き残りが1以下であれば、生き残りが優勝。
2017/04/07(金) 16:56:01.71ID:g05Ok9Aj
>>219 >>223
あいこになる条件は、
(counter_1==0 && counter_2==0) || (counter_0==0 && counter_2==0) ||
(counter_0==0 && counter_1==0) || (counter_0>=1 && counter_1>=1 && counter_2>=1)
と表記してもいいですか?
何か問題ありますか?
2017/04/07(金) 17:09:10.97ID:h5rZiyBe
>>226
間違っていないけど、ややこしくないか?
2017/04/07(金) 17:28:42.51ID:g05Ok9Aj
>>227
確かにそうなんですがね…。
それもとりあえず保留で。
2017/04/07(金) 17:56:57.87ID:h5rZiyBe
>>228
お前の人生も保留な。
2017/04/07(金) 18:36:32.33ID:3YMQUIZr
あ"お""っち"ぃ〜^
2017/04/07(金) 18:42:04.38ID:g05Ok9Aj
>>229
ところでこれ難しいですね…。
2017/04/07(金) 18:43:34.82ID:Er4jaX4h
ずっと保留のままだな
2017/04/07(金) 19:06:08.91ID:g05Ok9Aj
>>222
何が言いたいの?

>>227 >>229
やっぱり素直に>>223の表記を使わせて貰いますね。
2017/04/07(金) 20:13:43.43ID:g05Ok9Aj
>>片山さん
途中経過です。
https://ideone.com/2GJsnr
もう少し自分で考えてみたいと思います。
2017/04/07(金) 20:58:31.76ID:h5rZiyBe
死んだらジャンケンできないよ?
2017/04/07(金) 21:06:00.66ID:h5rZiyBe
ループ内のあるタイミングで生き残りを数え、生き残りが一名になるまで繰り返す。
2017/04/08(土) 00:16:21.50ID:m53M+V8Z
>>片山さん
都合により、明日(土曜)はお休みします。
また日曜に。
2017/04/08(土) 00:43:17.73ID:HpmEwpb8
深夜まで夜更かしするのが都合らしい
239237
垢版 |
2017/04/08(土) 01:26:28.33ID:m53M+V8Z
違うっての。
2017/04/08(土) 01:32:39.92ID:4SbxlEpR
>>239
NGしてんだからいちいちコテハン変えんな人間のゴミクズが!
2017/04/08(土) 09:58:49.91ID:cJUjUsgx
>>239
>>137
2017/04/08(土) 10:02:18.90ID:lRNMWs4c
毎日休みなのに土日は遊ぶとかアホかとw
243デフォルトの名無しさん
垢版 |
2017/04/08(土) 14:31:47.42ID:vaeUMiYi
244237
垢版 |
2017/04/09(日) 18:53:38.31ID:ySXi9r1b
>>240
うるせえ。
トリップ付けるまでもない内容だったからあえてそうしたんだよ。

>>241
付ける価値無しと判断。必要なレスには付ける。

>>242
ただ遊んでる訳じゃねえんだよ。
2017/04/09(日) 19:16:32.51ID:qFsmFYyf
Any question?
2017/04/09(日) 19:18:06.77ID:D3WolXHw
>>244
偽ハゲニートなんだろうけど、本物ハゲニートも同じようなもんか
2017/04/09(日) 19:18:37.46ID:dkqlLwxN
よくこんなクズに付き合ってやってるよな
2017/04/09(日) 19:19:49.72ID:dkqlLwxN
>>244
ただ遊ぶわけじゃないならどう遊んでるんだ?
2017/04/09(日) 19:25:02.86ID:qFsmFYyf
質問ある?
2017/04/09(日) 19:30:20.17ID:qFsmFYyf
かだい を すいこう して ください
2017/04/09(日) 19:31:45.70ID:K8U1uHmy
>>249
34歳、発達障害の無職ですが
今からでもプログラマーになれますかね?
皆様のご助言を求めたいです。
2017/04/09(日) 19:37:09.63ID:qFsmFYyf
>>251
今の調子では不可能です。目標のために有効な行動を起こしましょう。忍耐力と発想力の両方が必要です。
2017/04/09(日) 19:40:18.85ID:dkqlLwxN
病気以前に問題があるため無理です
2017/04/09(日) 19:41:04.96ID:qFsmFYyf
けいこく!
ただちに かだい を すいこう して ください。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況