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

■ このスレッドは過去ログ倉庫に格納されています
2019/05/18(土) 17:33:29.45ID:BWmpW4IF
プログラミングのお題スレです。

【出題と回答例】
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.5ch.net/test/read.cgi/tech/1549160513/
249195
垢版 |
2019/06/08(土) 11:07:07.66ID:gSg6KwWS
>>235 python

import string

A26 = set(string.ascii_uppercase)
print(A26.difference(set('BCDEFGHIJKLMNOPQRSTUVWXYZ')).pop()) #-> A

print(A26.difference(set('YIZFOADLMWCRUTGSVQKJEHNBP')).pop()) #-> X
250デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:39:21.75ID:gCLo3iII
>>241
え?なんで?括弧なしで続けて書いたらそういう解釈にしかならんと思うが?
そうでないならその部分どう解釈するのが正解なの?
251デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:40:05.48ID:gCLo3iII
>>245
全体を6倍しているからだが?
252デフォルトの名無しさん
垢版 |
2019/06/08(土) 20:41:05.12ID:gCLo3iII
>>242
それが分母ならちゃんと括弧書けよ。
2019/06/08(土) 21:10:55.53ID:7Ke9leiS
周りの人に同情するわ…w
2019/06/08(土) 21:53:10.61ID:bSq0it8T
ID:gCLo3iII ガチのガイジやんけ
2019/06/08(土) 22:03:07.94ID:CpkbOmpy
ワラタwww
2019/06/08(土) 23:58:19.51ID:nh3nMmSu
https://ideone.com/IFCJVe
3個でないよ?(愚鈍)
257デフォルトの名無しさん
垢版 |
2019/06/08(土) 23:59:56.19ID:t4bm4zRu
>>241
>>232のリンク先もそのようになっているようだが、見ていなかったか。
2019/06/09(日) 00:14:56.14ID:W8wtcQAp
>>235
AからZの文字コードの数値の総和から入力文字列の各文字の文字コードの総和を引けばいいね
2019/06/09(日) 00:16:02.81ID:SSgQq8CW
>>238
https://ideone.com/ztrBf9
わかってやってみた。ソートすんなとは書いてなかった。今は反省している。
2019/06/09(日) 00:17:23.59ID:SSgQq8CW
あ、間違えた。>>259 => >>235
ネタ振ったときにこれだよ。。。
2019/06/09(日) 00:19:22.44ID:OSjRKT39
むしろプログラマの世界で数式を書くなら、
1/(2*y) だろうな。
1/2y と書けば、普通は、(1/2) * y だろ。
2019/06/09(日) 00:24:01.37ID:SSgQq8CW
数学習った時も掛け算記号は省略できるとか習った覚えが。
あと、割り算と掛け算混ぜたときの結果は項の順番によらないかった覚えが。

寝る。
2019/06/09(日) 00:45:59.55ID:T9jyzIYI
>>261
コード書いたわけじゃなくて普通の数式やがな
それをコードに直すのがプログラマ
2019/06/09(日) 01:16:32.66ID:zgQq0a06
>>263
数式でも人が紙に書いたかのような表現が使えず1行に無理に押し込める形式にするのならそれなりの工夫が必要だ
2019/06/09(日) 01:59:59.85ID:RDMRCxQC
まず普通の人はあの表記を見ても迷わない
一京歩譲ったとして仮に迷ったとしても与えられた答えを代入すれば猿でも分かる
つまりいちゃもんつけてるのは猿未満
266デフォルトの名無しさん
垢版 |
2019/06/09(日) 02:03:55.91ID:vJOouxE6
自演乙
2019/06/09(日) 02:08:15.94ID:1JZdgA2h
人じゃないけど、参考に

wolframalpha、
https://www.wolframalpha.com/input/?i=1%2Fx%2B1%2F2y%2B1%2F3z%3D4%2F3

https://www.wolframalpha.com/input/?i=1%2Fx%2B1%2F%282y%29%2B1%2F%283z%29%3D4%2F3

google
https://www.google.com/search?q=y%3D1%2F3x

https://www.google.com/search?q=y%3D1%2F%283x%29
268220
垢版 |
2019/06/09(日) 05:40:38.30ID:rn4C+nSw
>>220
Ruby で、

ary = ( 1..4 ).to_a

# 直積・3重ループ
p ary.product( ary, ary ).select { |( x, y, z )|
Rational( 1, x ) + Rational( 1, 2 * y ) + Rational( 1, 3 * z ) == 4/3r }

#=> [[1, 2, 4], [1, 3, 2], [2, 1, 1]]
2019/06/09(日) 08:43:57.74ID:OSjRKT39
>>263 >コード書いたわけじゃなくて普通の数式やがな

普通の数式ってどこの世界での普通なんだ? 普通の数式ならそんな書き方はしないからな。
1/2y を普通の数式として解釈すれば、(1/2) * y が普通の解釈だろ。 左から順に演算されるのが普通(と言うかルール)だからな。
2019/06/09(日) 09:08:49.29ID:T9jyzIYI
左からやって普通は1割る2yだろ
普通の数式で1÷2yってあってそう解釈するか?
割る記号の変わりだろ/は
プログラムのコードじゃないぞ

一個目の1/xがないならまだわからんでもないけど
2019/06/09(日) 09:18:11.20ID:OSjRKT39
>>270 お前の普通の根拠を示してみろや。
記号が書かれてれば掛ける記号が略されてるとみなすのが普通

1/2y は1/2*y と等価 1割る2は、0.5 これが普通。
2019/06/09(日) 09:20:36.13ID:OSjRKT39
>>270 お前の異常なところは、2y が優先演算されると思い込んでいるところ。
そこが大きな間違い。
2019/06/09(日) 09:32:55.64ID:T9jyzIYI
中学の文字式の問題といてみたらいいんじゃないかな
2019/06/09(日) 09:42:13.99ID:1+U3aTMC
教養のない(1/2)派が暴れてて最高に笑えるわ
馬鹿は馬鹿らしく謙虚でいろよ
2019/06/09(日) 10:16:16.60ID:Gi1Jt9cY
普通とかほざくゴミまで出てきたってことは一番最初の出題者はやっぱりサイコパスだろ
解釈の分れる書き方をワザとしてんだよ
2019/06/09(日) 10:16:55.57ID:1+U3aTMC
いや馬鹿以外は一通りにしか解釈してねえだろ
2019/06/09(日) 10:28:52.42ID:OSjRKT39
>>273 だからお前の言う普通の文字式が書かれてるところを示してみろよ。
最も中学では、1/2のような書き方はしないから、そんな問題はないと思うが。

兎に角プログラミングスレで、
1/2x と書けば、(1/2)*x という解釈しかありえない。

もう一度 >>267 を見てこい。
2019/06/09(日) 10:33:43.64ID:dGGyKbbw
ID:OSjRKT39 こいつ、仕事もできねえんだろうな
同情するわ……こいつの同僚にw
279デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:54:03.46ID:8GuoKRFn
>>278
具体例も挙げてきちんと論証してるじゃん
2019/06/09(日) 10:54:55.69ID:wmlwj4f3
まあ理系なら数式見慣れてるし、数式だと 2x でセットと見るから
2x/3y を (2*x*y)/3 と解釈するアホはいないと思う
281デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:57:55.90ID:8GuoKRFn
>>280
https://www.wolframalpha.com/input/?i=2x%2F3y
うーん?
2019/06/09(日) 10:58:26.13ID:dGGyKbbw
>>279
お前は論証という言葉をまず辞書で引け
283デフォルトの名無しさん
垢版 |
2019/06/09(日) 10:59:01.91ID:8GuoKRFn
理系じゃない人にもやさしい世界の方がよくない?
2019/06/09(日) 11:00:19.84ID:dGGyKbbw
理系以外にも優しくするのはいいとして馬鹿に優しくする必要は無いだろ
無能な猿が思い上がるだけ
2019/06/09(日) 11:00:55.16ID:tpC+iRBo
キチガイを一人召喚してるな
286デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:00:55.34ID:8GuoKRFn
>>282
仕事もできねえ、馬鹿、アホという人格否定で自分を正しく見せようという
幼稚な人より100倍マシだと思いましたよ
2019/06/09(日) 11:02:06.44ID:dGGyKbbw
>>286
たとい俺より百万倍マシだったとしてもお前がクズな現実は変わらない
288デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:02:42.49ID:8GuoKRFn
>>284
一般的な例を挙げて論証する人を馬鹿だとは思わないなあ
むしろ相手の人格を貶めることばかりに終始してる君のほうが・・・
2019/06/09(日) 11:04:17.16ID:dGGyKbbw
面白いなこいつ
叩けば音が鳴るおもちゃやん
290デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:04:30.99ID:8GuoKRFn
>>287
罵詈雑言を言ったら
291デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:04:57.97ID:8GuoKRFn
自分が賢くなるとでも?
2019/06/09(日) 11:07:45.90ID:OSjRKT39
>>280 理系ならwolfram ( mathematica ) を知らないわけないだろ。

>>281 をよく見ろ。 世界中の数学者はこう計算するというのが数学の世界なんだぞ。
お前は世界中の数学者をアホ呼ばわりするのか?
2019/06/09(日) 11:07:46.72ID:ycrydNOH
で、結局論証ってなんのこと?
どこに論理的な推論があったわけ。
294デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:09:31.01ID:8GuoKRFn
>>293
一般的で具体的な例を上げて説明してたよ
295デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:11:12.17ID:8GuoKRFn
>>292
はいストローマン論法
296デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:11:47.45ID:8GuoKRFn
君たちは理系なの?
2019/06/09(日) 11:13:37.36ID:ycrydNOH
>>294
一般的で具体的な例を上げて説明することは「論証」とは言いません
そんな的はずれな事言ってたらヴィトゲンシュタインが泣きますよ
298デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:15:19.30ID:8GuoKRFn
>>297
立派な論証だよ
ウィトゲンシュタインもうなずいてるよ
2019/06/09(日) 11:15:45.10ID:OSjRKT39
>>293 論証じゃなくて、wolfram やgoogle の計算の実証を挙げてるのに全くそんなのを無視しておいて何を今更。

なんにせよ、プログラマスレではプログラマとして動け。 問題としては落第。
2019/06/09(日) 11:19:54.29ID:ycrydNOH
wolframやgoogleでのレクシコンが今の議論に一体何の関係があるのだらうか!?
全くの荒唐無稽だと言っておきませうせうせう
301デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:24:46.91ID:8GuoKRFn
>>300
一般的にどう解釈されるかを示す具体例として挙げられてるよ
どうして歴史的仮名遣いなのさ!?
2019/06/09(日) 11:37:39.19ID:ycrydNOH
>>301
君はいい人そうだから強く生きていきませう
303デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:41:33.13ID:8GuoKRFn
>>302
どうして歴史的仮名遣いなの?
君の思う論証ってどういうもの?
他人の発言を的外れとまで言ったんだからきちんと説明していただきたい
2019/06/09(日) 11:41:33.39ID:OSjRKT39
>>300 自分の論証はどこに有る? 例を出せと言ってるのに出せないんだろ?
305デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:43:32.18ID:8GuoKRFn
>>304
兄貴、俺たちの勝ちっすね
306デフォルトの名無しさん
垢版 |
2019/06/09(日) 11:46:12.25ID:8GuoKRFn
おいお前ら、俺たちのバックにはグーグルがいるんだぞ
2019/06/09(日) 12:10:10.83ID:SqGEiAZe
物理などの世界では並置優先ルールが有る。
1/ab は、1(a*b) 1/2yは1/(2y)

しかし一般的なプログラミング(コンピュータ)の世界では、並置は存在しないから並置優先ルールもない。
ab は、a、b とは別変数となる。

プログラミングのお題としては、プログラミングルールに従った出し方にすべき。
2019/06/09(日) 12:49:50.56ID:W8wtcQAp
1.出題者が複数の解釈のできる曖昧な書き方(1/2y)をした。
2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。
3.一部の回答者はプログラミングや数学的な記法の厳密な解釈として((1/2)y)であるべきとした。
4.3と3を煽る奴らのどうでもいい喧嘩←今ここ
2019/06/09(日) 12:50:30.57ID:fheL3UO0
お題をみてそれにあわせたコードをかくのがプログラミングだろ
お題は文章なり数式でプログラミングのルールにのっとる必要はないじゃん
表現が曖昧で複数にとれるようなものは出題者に確認するだけの話だと思うけど
2019/06/09(日) 13:03:13.41ID:Gi1Jt9cY
ゴミみたいな書き方する出題者がそもそも悪いでしょ
そういうヤツは除外しなきゃ
叩いて叩いて叩きまくればいいんだよ
2019/06/09(日) 13:08:30.37ID:SqGEiAZe
誤解を生まないように書けば良いのにな。
2019/06/09(日) 13:42:29.09ID:VJkUGCEU
お題と回答
>>5 : 6 10 32 36 44
>>9 : 15 34 35 79
>>11 : 48 (78) 138-139 (140) 142 146 151 154
>>19 :
>>50, https://mevius.5ch.net/test/read.cgi/tech/1549160513/920 : 4 85 89
https://mevius.5ch.net/test/read.cgi/tech/1549160513/988 == >>164 : 59 61 167 169 189 192 201 202
>>90 : 95 96
>>99 :
>>200 : 214 219
>>215 : 227
>>220 : 232 240 248 256 268
>>235 : 236 237 238 239 247 249 259
2019/06/09(日) 13:48:39.24ID:7ZWYIG6V
>>307
> 物理などの世界では並置優先ルールが有る。
そういうルールを知らなかった奴が引っ込みつかなくなってるだけでしょ
314デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:28:03.28ID:zgQq0a06
>>308
> 2.多くの回答者は曖昧さを理解した上で自然に取れる解釈(1/(2y))をした。

多く?そもそも回答者がほとんどいないのでは?
それでもどちらかの解釈で回答した人は居るが、その回答はどちらの解釈が多かった?
315デフォルトの名無しさん
垢版 |
2019/06/09(日) 14:30:26.74ID:zgQq0a06
>>307
それならばそのようなルールで書くと断りを入れてから書くべきだな。
2019/06/09(日) 15:51:50.05ID:30kMM31D
>>313 並置優先ルールがない世界に、並置優先ルールが有るものだと言う前提で問題を出せば混乱するに決まってる。

そんな仕様書を書いたら即座に首だろ。

(唯一の救いはこの場合答えがあるから、確認することはできたが、確認せずに回答した人がいることも忘れてはならない)
プログラムの世界は、1点の曇りもあってはならない。
2019/06/09(日) 16:06:31.19ID:BPlIESHh
曖昧さも糞も無いだろ
答えまで書かれてたんだからそれで確認するのが正常な頭脳の持ち主
数学できない阿呆が噛み付いてるだけ
惨めだからもうやめときな
2019/06/09(日) 17:01:23.49ID:wmlwj4f3
単なる匿名掲示板で仕様書ガーとかw
バカにされて悔しいのはわかるけど流石にそろそろアキラメロン
319デフォルトの名無しさん
垢版 |
2019/06/09(日) 17:31:39.31ID:4d8N5HDz
激しい自演と正当化
2019/06/09(日) 17:55:17.43ID:KzhGDYKc
お題:Hello, World!を二進数で出力せよ
2019/06/09(日) 18:46:11.83ID:iI/aMWbb
>>320 Perl5

print map{sprintf'%b ',ord}split'','Hello, World!';

実行
~ $ perl 14_320.pl
1001000 1100101 1101100 1101100 1101111 101100 100000 1010111 1101111 1110010 1101100 1100100 100001
2019/06/09(日) 20:11:20.28ID:v5VOLpEn
お題
x=1から始めて一度のステップで
・xに1を足す
・xを2倍する
のいずれかを行うことができます。

正の整数Nが与えられるので、
x=Nに到達するのに必要な最小ステップ数を求めなさい。

N=34
=> 6 (1 -> 2 -> 4 -> 8 -> 16 -> 17 -> 34)

N=1
=> 0

N=10000
=> 17
2019/06/09(日) 20:18:23.01ID:SSgQq8CW
>>320
https://ideone.com/WlBY5N
括弧強い!
2019/06/09(日) 20:26:39.07ID:Gi1Jt9cY
>>322
シフト回数と1足した回数調べりゃいいんじゃないの

10000 (10) = 10011100010000 (2)
34 (10) = 100010 (2)
325デフォルトの名無しさん
垢版 |
2019/06/09(日) 20:58:31.04ID:8GuoKRFn
>>324
なるほどね!

VB
https://paiza.io/projects/RU2L7bgni8qwq8dSAWGlKA
2019/06/09(日) 21:12:31.05ID:jNBSWirB
>>325
桃白白改めミスターポポ改めピラフ改めピッコロさんには少し難しかったかな
2019/06/09(日) 21:18:39.26ID:OSjRKT39
>>320 Python

print( ['{:08b}'.format(ord(s) ) for s in 'Hello, World!' ] )

# ['01001000', '01100101', '01101100', '01101100', '01101111', '00101100', '00100000', '01010111', '01101111', '01110010', '01101100', '01100100', '00100001']
2019/06/09(日) 21:25:43.55ID:D5Urc2jv
>>322 Ruby
f=->n{n.digits(2).sum+n.bit_length-2}
p f[34] # => 6
p f[1] # => 0
p f[10000] # => 17
2019/06/09(日) 22:04:49.27ID:OSjRKT39
# >>322 Python 取り敢えずオーソドックスに

def step(n):
 for cnt , _ in enumerate( range(n ) ):
  if n == 1 : break
  n = n//2 if n%2 == 0 else n-1
 return cnt

print(step(34)) #6
print(step(10000)) #17
print(step(1)) #0
330デフォルトの名無しさん
垢版 |
2019/06/09(日) 22:08:37.43ID:8GuoKRFn
>>320
Java
https://paiza.io/projects/zA8YxDpbM7SdnR-ghzkqrA?language=java
2019/06/09(日) 22:49:04.65ID:OSjRKT39
>>322 Python >>328を真似して

f = lambda n: bin(n).count('1') + n.bit_length()-2

print(f(34)) #6
print(f(10000)) #17
print(f(1)) #0
2019/06/10(月) 10:26:34.05ID:Xpp6HhX6
>>322 Squeak Smalltalk

| fn |
fn := [:n | n bitCount + (n numberOfDigitsInBase: 2) - 2].
fn value: 34. "=> 6 "
fn value: 1. "=> 0 "
fn value: 10000. "=> 17 "
333デフォルトの名無しさん
垢版 |
2019/06/11(火) 00:54:15.70ID:aZcuYhl5
>>322
以下みたいに、すべてのステップ数を記録する、表を作っていくのか?

0 step : 1
1 : 2
2 : 3, 4
3 : 4, 6 | 5, 8 => 4, 5, 6, 8
4 : 5, 8 | 6, 10 | 7, 12 | 9, 16 => 5, 6, 7, 8, 9, 10, 12, 16
334333
垢版 |
2019/06/11(火) 02:58:39.60ID:aZcuYhl5
表を作らなくても、これで良いのか

1. 偶数なら、2で割る
2. 奇数なら、1を引いてから、1へ行く
2019/06/11(火) 09:40:44.16ID:9nwOHJjF
>>334 少し前すら読んでいないんだな。
その考え方で解いたのが。>>329

さらなるアイデアが、>>328 >>331 >>332
2019/06/11(火) 09:58:48.09ID:p0Xp2yNy
>>335
そいついつも人の話を聞かない奴だからスルーしとけばいいよ
337デフォルトの名無しさん
垢版 |
2019/06/11(火) 10:35:23.49ID:fys+McUU
最小ステップの証明は?
2019/06/11(火) 11:02:34.44ID:9nwOHJjF
>>337 1足す2が3であることを証明しろと言うのか?
まあいいや、最小ステップは2倍が最大回数になればよいだけの話。
339デフォルトの名無しさん
垢版 |
2019/06/12(水) 01:58:04.75ID:vCbGNUwk
>>322
kotlinスクリプト

>>> fun f(n: Int) = println("N=$n\n=> ${n.toString(2).map { it - '0' + 1 }.sum() - 2}")
>>> f(34)
N=34
=> 6
>>> f(1)
N=1
=> 0
>>> f(10000)
N=10000
=> 17
340デフォルトの名無しさん
垢版 |
2019/06/12(水) 02:51:35.08ID:vCbGNUwk
>>320
Kotlin

https://paiza.io/projects/w4z9UaR7KG9qv6Zmc7KE_Q

文字コードを2進数で出すのでは簡単過ぎるので・・・
341333
垢版 |
2019/06/12(水) 06:36:52.68ID:vWkgJgOw
>>322
Ruby で、

def f( n )
n_2 = n.to_s( 2 ) # 2進数

# 2進数の桁数 + 1の個数 - 2
n_2.length + n_2.count( "1" ) - 2
end

p [ 1, 34, 10_000 ].map { |n| f( n ) }
#=> [0, 6, 17]
342デフォルトの名無しさん
垢版 |
2019/06/12(水) 08:43:05.24ID:PSW3BzBK
>>235 Io
f := method(s,
((65+90)*26/2 - s sum)asCharacter
)
Io> f("BCDEFGHIJKLMNOPQRSTUVWXYZ")
==> "A"
2019/06/12(水) 09:55:38.00ID:6rY4ofim
何かと思ったら'A'から'Z'の総和か、その求め方は草
2019/06/12(水) 12:18:37.17ID:5tKK6KtT
お題:特定ドライブ配下の*.jpgファイルを削除し、そのjpgファイルが格納されていたフォルダも削除する
2019/06/12(水) 12:31:12.34ID:x67noP4p
質問スレへどうぞ。
346デフォルトの名無しさん
垢版 |
2019/06/12(水) 13:19:30.21ID:apqCeTcN
>>344
rm -rf /
2019/06/12(水) 15:25:36.12ID:5tKK6KtT
>>346
ありがとうございます。試してみます。
2019/06/12(水) 16:38:42.58ID:cGak2oax
面白いことになりそうだな、ワクワク
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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