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

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2019/02/03(日) 11:21:53.20ID:72eosYJ+
プログラミングのお題スレです。

【出題と回答例】
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.2ch.net/test/read.cgi/tech/1538096947/
2019/05/16(木) 20:28:13.91ID:3sIrlJF4
お題
整数の数列が与えられるので、各値の大小関係を変えないように値をなるべく小さくせよ
ただし1番小さい要素は1にすること
入力
-6 3 9 5 3 -7
出力
2 3 5 4 3 1
921デフォルトの名無しさん
垢版 |
2019/05/16(木) 21:00:21.83ID:/dAesd8e
>>920
c++
https://ideone.com/zEwKOk
2019/05/16(木) 21:47:12.78ID:m1RdOLwU
>>920
>値をなるべく小さくせよ
絶対値を小さく、という意味ですか?
2019/05/16(木) 22:59:47.34ID:0eZXbfha
>>920 Pharo/Squeak Smalltalk

| fn |

fn := [:arr |
| sorted |
sorted := arr asSet sorted.
arr collect: [:x | sorted indexOf: x]
].

fn value: #(-6 3 9 5 3 -7). "=> #(2 3 5 4 3 1) "
924913
垢版 |
2019/05/16(木) 23:00:52.84ID:02wuysYU
>>877 ocaml
https://ideone.com/waZZh7
・自分に正直になってrefとforループで書いた

>>914
じょ、助長…

>>916
外しと言うより、たんに不勉強
python書けないんよね(´・ω・`)
2019/05/16(木) 23:34:17.56ID:YXKZQo24
>>923 Perl5

@a = qw{-6 3 9 5 3 -7};
$h{$_}=1 for @a;
%o = map{$_=>++$i} sort{$a<=>$b} keys %h;
@b = map{$o{$_}} @a;
print "@a => @b\n";

実行
~ $ perl 13_920.pl
-6 3 9 5 3 -7 => 2 3 5 4 3 1
2019/05/16(木) 23:42:11.94ID:YXKZQo24
>>925
アンカーしくった、>>920 宛だった…orz
2019/05/16(木) 23:44:54.09ID:02wuysYU
>>920 octave
https://ideone.com/f9S91N
2019/05/17(金) 00:26:31.35ID:SI3/qEwo
>>888 Pharo/Squeak Smalltalk

| fn |

fn := [:arr |
String streamContents: [:ss |
| cIdx lIdx |
cIdx := lIdx := 0.
arr do: [:spec |
spec third > lIdx ifTrue: [
ss nextPutAll: (String new: spec third - lIdx withAll: Character cr).
lIdx := spec third.
cIdx := 0
].
ss nextPutAll: (String new: spec second - cIdx withAll: Character space).
ss nextPutAll: spec first.
cIdx := spec second + 1.
]
]
].

fn value: #(
(a 0 0)
(b 2 0)
(c 4 0)
(d 0 2)).

"=>
a b c


d "
2019/05/17(金) 00:35:47.85ID:HrEfbPs9
>>927
重複除去でソート後のインデックスを返す関数?
チート過ぎてわろたw
2019/05/17(金) 00:55:59.72ID:TuAgku6e
最近jニキ来ないな
931デフォルトの名無しさん
垢版 |
2019/05/17(金) 01:23:24.98ID:UHIjSpei
>>920
Kotlin
https://paiza.io/projects/NMOKqrUnEfwIbLSRmrMMmQ
2019/05/17(金) 07:54:47.22ID:9a+COZnd
>>888
s = '''\
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2]
'''

from parse import * #pip install

col2 = 0 ; line2 = 0
for l in s.splitlines():
 col = col2 ; line = line2
 r=parse('[{},{},{}]',l)
 c= r[0]
 col2 = int(r[1]) ; line2 = int(r[2])
 {print() for _ in range(line2-line) }
 {print(' ',end='') for _ in range(col2-col)}
 print(c, end='')
 col2 += 1
print()

'''#出力
a b c

d
'''
2019/05/17(金) 08:32:11.25ID:9a+COZnd
>>932 parse に型指定追加
>>888 Python
s = '''\
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2]
'''

from parse import * #pip install

col2 = 0 ; line2 = 0
for l in s.splitlines():
 col = col2 ; line = line2
 (c,col2,line2) = parse('[{},{:d},{:d}]',l)
 {print() for _ in range(line2-line) }
 {print(' ',end='') for _ in range(col2-col)}
 print(c, end='')
 col2 += 1
print()

'''#出力
a b c

d
'''
2019/05/17(金) 12:14:50.20ID:8VLhbVxR
>>920
は、ランク付けの問題だろ

入力データ
-6 3 9 5 3 -7
出力・ランク
2 3 5 4 3 1

入力データの最も小さい数字を、ランク1 にして、
数字が大きくなるほど、ランクも大きくしていく

同値の場合は、同じランクにして、次のランクも間隔を空けない。
ランク3 が2つあっても、次は、ランク4

つまり、ランクが欠けることはない!
2019/05/17(金) 12:23:14.18ID:99nnd/tf
>>934
うるせぇ死ね
2019/05/17(金) 12:39:09.53ID:L8EHraRu
難しく書いてたけど結局これだけなのか
問題文をわざと複雑に見せかける現代文読解と同じ仕組みじゃないか
937デフォルトの名無しさん
垢版 |
2019/05/17(金) 12:49:18.63ID:ut9H1r3U
プログラム作る前に気づいたので>>931のリンク先のブログラムのタイトルは密かに「順位」にしといたw
2019/05/17(金) 12:50:56.11ID:l82uGMBO
>>936
わざと難しく見せかけているというより、たんに説明が下手なだけだと思う
2019/05/17(金) 13:23:46.56ID:gFFtTihX
別に難しくない件
2019/05/17(金) 13:29:01.98ID:L8EHraRu
そうですね
難易度は主観ですね
なら短さ長さを比べるとこうなります

・各値の大小関係を変えないように値をなるべく小さくせよ
・ランク付けせよ

もしかしたらこれが要するにただのランク付けだと分かるまで何人が挑戦するかを試してみる社会調査だったのかもしれません
941デフォルトの名無しさん
垢版 |
2019/05/17(金) 13:36:08.80ID:/5AjAxyT
>ランク付けだと分かるまで何人が挑戦するかを試してみる

まさにそうじゃないの?
942デフォルトの名無しさん
垢版 |
2019/05/17(金) 13:44:50.72ID:mxL0YWmq
>>920 J
f =: >: @ (i.~ /:~ @ ~.)

f _6 3 9 5 3 _7
2 3 5 4 3 1
2019/05/17(金) 14:08:19.69ID:gFFtTihX
>>940
アスペ
2019/05/17(金) 14:08:53.72ID:gFFtTihX
問題文を添削しちゃう皆さん
2019/05/17(金) 14:20:43.10ID:gFFtTihX
>>922
2019/05/17(金) 15:06:17.59ID:Jb6joIEA
さすがにいちゃもん付け過ぎだろ
元の問題文読めば普通はわかるだろ
2019/05/17(金) 15:51:11.97ID:99nnd/tf
問題: おっぱいをなるべく小さくせよ。
948デフォルトの名無しさん
垢版 |
2019/05/17(金) 16:00:34.70ID:ut9H1r3U
>>947
(・)(・)

(・)(・)
949デフォルトの名無しさん
垢版 |
2019/05/17(金) 16:18:22.99ID:X2USxdO3
お題:自然数を隙間なく自分自身以外の数に対応させよ。
2019/05/17(金) 16:46:21.83ID:9GdSR9hc
>>949 先生、対応させると言う日本語がわかりません。
日本人には難しいです。
951デフォルトの名無しさん
垢版 |
2019/05/17(金) 17:04:52.99ID:ut9H1r3U
>>949
君が何を言っているのかわからない。
2019/05/17(金) 17:24:51.97ID:L8EHraRu
>>949
パッ見で分からん
953デフォルトの名無しさん
垢版 |
2019/05/17(金) 18:07:07.73ID:nEasvejW
偶数なら1引く
奇数なら1足すとかでいいんじゃないの
2019/05/17(金) 18:39:31.46ID:9GdSR9hc
>>953 良いんじゃないのじゃなくて、他の人が理解できる言葉に翻訳してよ。
これじゃ小学校の国語で平均点以下だろ。

日本語が不自由ならプログラム例を示せば良い。変な言語はダメだけど、C系の素直な言語なら万国共通
2019/05/17(金) 19:30:38.86ID:Jb6joIEA
要はf: N -> N の∀n∈N f(n) ≠ n かつ全単射な写像を求めろってことでしょ
2019/05/17(金) 19:35:23.29ID:Jb6joIEA
あ、単射じゃなくてもいいか
2019/05/17(金) 19:40:06.71ID:9GdSR9hc
>>955 あのさ、それで人に通じると思ってるの?
そんな仕様書を書いて誰がコーディングするんだよ。

日本語に翻訳して明後日出直してこい。

言語能力にかけてるやつは、自分の頭の中が周りの人からスケスケに見えてると言う妄想を持ってる。
狭い世界で通用しても社会では通用しない。
2019/05/17(金) 19:47:34.60ID:9GdSR9hc
ここまで何人もの人がわからんと言ってるのは、その仕様を出した人間の素質が失格という事だろ。

それを何で庇うんだ? 庇う理由を説明してみろよ。 ここがバカばかりと思うならバカに解るように説明しろよな。

バカにわからせなければ、PLは務まらないよ。
と言うか、仕事は一般人としてるのに何をトチ狂ってるんだ? かなり精神を疑うな。
2019/05/17(金) 19:50:16.70ID:Jb6joIEA
教養のないやつに限ってブチ切れる
2019/05/17(金) 20:11:05.80ID:KIX3RA0i
>>947
桃白白改めミスターポポ改めピラフ改めピッコロさん、くだらない出題はやめてください
2019/05/17(金) 20:11:56.63ID:9a+COZnd
>>959 で、どんな問題なんだ? プログラミングできる仕様として出してくれよ。
2019/05/17(金) 20:21:17.94ID:e+Q6zZPk
>>956
単射でないとなると、n に対して n % 10 を対応付けるとかもありになりますね…

>>957
全射、単射、全単射とかは普通に使う単語ですよ、知らないのなら、これらの術語を含む数学の本…代数ですかね?解析ですかね?よくわからないや、を一冊読んでみるのがいいですね
2019/05/17(金) 20:46:06.10ID:Jb6joIEA
>>961
出題者に言えよ

>>962
%じゃ全射にも単射にもならんぞ
上で誰かが言ってた遇奇を入れ替えたりだとか
f(n) = n - 1, f(0) = 0以外の任意の値
とかなんでもありだね。つまらんけど
2019/05/17(金) 20:48:13.95ID:99nnd/tf
顔射は普通に使う単語ですか?
2019/05/17(金) 20:51:49.11ID:e+Q6zZPk
>>963
>%じゃ全射にも単射にもならんぞ
そうですね、じゃ、割り算の商の整数部分「/」とかはどうでしょう
966デフォルトの名無しさん
垢版 |
2019/05/17(金) 21:06:32.38ID:ut9H1r3U
>>964
はい。
2019/05/17(金) 21:09:38.99ID:Jb6joIEA
>>965
そりゃなんでもありよ
その場合は0の時だけ別の値を定義すれば良し
2019/05/17(金) 21:30:53.57ID:0M7uQZeH
920だが、ランク付けだと解が236531と解釈される可能性が有ったので避けた
もっと簡単な書き方があるはそう思う、座圧+1とかでも伝わるだろうし……
2019/05/17(金) 22:36:31.21ID:gcMK/Ofn
数値のリストを入力し、値の小さい順に1から順位を付けて、
順位のリストを出力する。同じ値は同じ順位とする
2019/05/17(金) 22:47:54.41ID:TGYryIO4
ほんとそれ
ピラフ改めピッコロはさっさと自害しろ
2019/05/17(金) 23:20:58.53ID:L8EHraRu
>>949
やっぱりどういう入出力の具体例になるのか分からない
どういうことなんだよ
972デフォルトの名無しさん
垢版 |
2019/05/17(金) 23:47:24.37ID:xYITnAAv
>>971
あくまで俺の推測だが
一例として、自分自身の数が3のとき自然数から3を除去して
(1) 1, 2, 3, 4, 5, 6, ...

(2) 1, 2, NULL, 4, 5, 6, ...
NULLになった部分をなくすために4以降を左へシフトする
(3) 1, 2, 4, 5, 6, 7, ...
こんな感じで(1)の入力を(3)のような出力にする関数じゃないか?

ただお題の条件としてはもっとゆるくて、入力はオーバーフローしない範囲の自然数、出力は「自分自身の数」を含まない自然数になれば何でもよくて、
定数関数でもハッシュ関数でもいいはず。
ただし、ある入力に対して必ず決まった値にならなければならず、同じ入力で呼び出すたびに出力が違うのはダメ。
2019/05/18(土) 00:15:42.42ID:w6U4ewGf
>>972 何をアホな事を言ってるんだ? そんなの小学生に数を数えなさいと言ってるのと等しいぞ。

それのどこがプログラミングのお題なんだ?
バカじゃないのか?
2019/05/18(土) 01:03:14.81ID:bbC9YGRR
>>942
乙、見事。
975デフォルトの名無しさん
垢版 |
2019/05/18(土) 01:57:48.06ID:jjK+y75q
>>920
C#
https://paiza.io/projects/OXVNCyMqgCySX7dUhwYh5Q
976デフォルトの名無しさん
垢版 |
2019/05/18(土) 02:15:29.87ID:jjK+y75q
>>920
Java
https://paiza.io/projects/VRVZT8GnP7oLaOjx4B8LtQ?language=java
2019/05/18(土) 07:46:37.95ID:w6U4ewGf
>>920 Python

ol = [-6, 3, 9, 5, 3, -7]
print([ sorted(set(ol)).index(x)+1 for x in ol ] )

# [2, 3, 5, 4, 3, 1]
2019/05/18(土) 10:52:55.70ID:0WkfcTHM
>>971
1. すべての自然数nに対してf(n)≠n
2. 自然数m,nがm≠nを満たすときf(m)≠f(n)
を満たすような関数f(n)を作れってこと

例えば
1. 入力が1のとき出力は1以外
2. 入力が1のときと2のときで出力が同じになってはダメ
2019/05/18(土) 11:06:29.35ID:spo9+l+a
>>978
2はいらんやろ
適当なコト抜かすなごかすぞぼけ
2019/05/18(土) 11:10:21.66ID:vBrA8iCH
単射である必要はない。全射でさえあればよい
2019/05/18(土) 12:08:52.78ID:R97vL30T
難しすぎて全くわからん…
ハローワールド始めて間もない男にも分かる問題を出してくれぬか
優しく教えて欲しい
982デフォルトの名無しさん
垢版 |
2019/05/18(土) 12:10:33.89ID:HBaY+7WM
>>949
これがあれば1Mbyteのファイルが2byteになっちゃうのか?
2019/05/18(土) 12:48:31.15ID:PrlqGkYa
>>978 これのどこがプログラムの問題なのかさっぱりわからん。 小学生の練習問題か?

例えば自然数が 1から4までとした場合、f(n) の出力配列は
f(1) 2,3,4
f(2) 1,3,4
f(3) 1,2,4
f(4) 1,2,3
と言う事だろ? どうしてこんな問題を出したかさっぱり分からん、何か勘違いしてる?
2019/05/18(土) 14:29:45.05ID:5ij/PJHb
>>920 c
https://ideone.com/JBbm04
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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