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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 19:39:57.54 ID:832c/ukY.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/

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

※前スレ
プログラミングのお題スレ Part14
mevius.5ch.net/test/read.cgi/tech/1558168409/

2 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 21:03:19.25 ID:KnbJf+WN.net]
宿題、チューリングの泥沼、条件不足等回避のため
出題者は自分で回答可能か確認してからお題を出すこと

3 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 21:08:20.48 ID:OTB4c+BP.net]
※QZは書き込み禁止

4 名前:デフォルトの名無しさん mailto:sage [2019/07/28(日) 21:32:12.69 ID:MO+jaDzY.net]
お題
とあるゲームでは、10面ダイスによってスコアを次のように定める
1. x個のダイスを全部振る
2. 振ったダイスのうち、最大の出目をスコアとする
3. 出目がc以上のダイスが存在するなら、その全てのダイスを使って同じ試行を行い、スコアに加算する
例えばc=7の時、2個のダイスの結果が(10,7)→(8,3)→(2)ならスコアは10+8+2=20となる
最初に振るダイスの個数Nとc(≧2)が分かっている時、スコアの期待値を求めよ

5 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 11:14:17.89 ID:3vvajVS9.net]
>>4
https://ideone.com/GgQh2t
C++,モンテカルロしてみた。
値がちょっと怖い値になったので、バグ報告歓迎。

6 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 11:34:20.96 ID:3vvajVS9.net]
https://ideone.com/geZ4qP
>>5が不安だったので、出力変えてみたけど、最大値で500近くになるんだな。
何かビビった。

7 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 11:49:50.47 ID:3vvajVS9.net]
サイコロの偏りをもっと明確にしたいなら、乱数エンジンを複数持つか、ランダムデバイスそのもので実行する。
ランダムデバイスは遅いことになってるのでMTに投げるんだけど。

8 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 11:55:28.48 ID:3vvajVS9.net]
一様乱数のサイコロは、現実では職人が作ったサイコロですなあ。

9 名前:蟻人間 mailto:sage [2019/07/30(火) 00:00:42.86 ID:NJpsA13e.net]
お題: 炭素原子C, 酸素原子O, 水素原子Hという三種類の原子をそれぞれいくつか組み合わせて、非イオンの分子を作る。C, O, Hの結合の手の本数は、それぞれ四本、二本、一本である。

ゼロ以上の整数p,q,rが与えられ、Cがp個、Oがq個、Hがr個あると仮定するとき、原子を余らせず、また、結合の手を余らせずに一つの連結された分子を作りたい。

C, O, Hをこの順でp+q+r個、並べたリストLについて、m番目の原子L[m]とn番目の原子L[n]の結合の個数をA[m,n]と書くとき、A[m,n]によってなる行列Aを一つ求めなさい。不可能な場合は「None.」と表示しなさい。

例)
(p, q, r)=(0, 2, 0) → A=((0, 2), (2, 0)).
(p, q, r)=(1, 2, 0) → A=((0, 2, 2), (2, 0, 0), (2, 0, 0)).
(p, q, r)=(0, 1, 2) → A=((0, 1, 1), (1, 0, 0), (1, 0, 0)).

10 名前:デフォルトの名無しさん [2019/07/30(火) 03:21:18.39 ID:NEOgIkE0.net]
問題がわかりづらい。



11 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 06:42:15.48 ID:x+cPGemS.net]
出題者は自分で解けることを確認してからお題にしてるのかね?
自明でない不可能な場合の例とか出してこないし怪しいもんだ

12 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 10:22:50.80 ID:xUDKdiN7.net]
慣れない言語の勉強に使うのに丁度いいね
出題者が答えも貼っといてくれるとありがたい(´・ω・`)

13 名前:デフォルトの名無しさん [2019/07/30(火) 16:13:07.32 ID:YUdTZrG6.net]
良いプログラムは良い数式がないと作れないのでこのスレは過疎化する。

14 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 16:39:56.09 ID:qFxGgTrm.net]
久々にこの板きたけど、宿題スレってなくなったんだね

15 名前:蟻人間 mailto:sage [2019/07/30(火) 16:51:52.79 ID:gia580F5.net]
解空間は、サイズ(p+q+r)×(p+q+r)の整数行列の集合になる。
結合の手の個数は有限だから、解行列の成分は上限がある。
よって行列の各成分についてしらみつぶし探索が可能。

自分自身とは結合しないので、A[k,k]=0(つまり、行列の対角成分はゼロ)。
ある行の和は、行番号に対応する原子の結合の手の個数になる。
ある列の和は、列番号に対応する原子の結合の手の個数になる。
連結条件のチェックが必要。

16 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 17:04:44.75 ID:RYwsY7rK.net]
お題: xのn次式を簡潔に表現できる関数を書け(rationalじゃなくてもOK)
a+bx+cx^2+dx^3+...

f x a b c d ...
のように表現する
(可変引数を処理する)

例えば
(defun f (x &rest as) (reduce #'+ (loop for a in as for i from 0 collect (* a (expt x i)))))
(loop for x from -5 to 5 do (print (f x 0 -1 0 1/3)))
-110/3
-52/3
-6
-2/3
2/3
0
-2/3
2/3
6
52/3
110/3

17 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 17:10:40.80 ID:CNgKzCU7.net]
>>14
基地外粘着uyによって潰された

18 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 19:44:50.09 ID:RfvVlMN8.net]
>>13
良い数式が立てられないのでモンテカルロに酔っているオレ・・・。

19 名前: mailto:sage [2019/07/30(火) 20:12:47.58 ID:3dZzemsO.net]
>>9
複雑すぎます
非環状アルカン(CnH2n+2)の構造異性体を列挙せよ、という簡略化したお題を提案します

20 名前: mailto:sage [2019/07/30(火) 20:13:36.62 ID:3dZzemsO.net]
>>14
存在することはするのですが、誰も近寄らなくなりました、キチガイが一匹しつこく居候しているので



21 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 21:52:06.20 ID:WkS1m6T1.net]
>>20
つ 鏡

22 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 23:15:45.71 ID:1jiiGCYP.net]
>>21
草生える

23 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 23:24:02.31 ID:2GPXM96o.net]
お題: 1 + 1 を計算させて 3 と出力させなさい

24 名前:デフォルトの名無しさん mailto:sage [2019/07/30(火) 23:34:18.81 ID:77FpHlNC.net]
>>23 Perl5

$a = 1 + 1;
print ~$a%10;

実行結果
$ perl 15_23.pl
3

※64bit整数版で実行してね

25 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 00:12:45.83 ID:w173sz60.net]
>>23
perl5

print ("1", "+", "1")
1+1
print $_ =()= ("1", "+", "1")
3

26 名前:デフォルトの名無しさん [2019/07/31(水) 04:39:05.16 ID:BcGPMjSP.net]
>>23
perl


1+1;
print "3\n"

27 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 05:06:41.43 ID:B/3ESziM.net]
>>23 ruby
class Fixnum
alias :add :+
def +(val)
if self == 1 && val == 1
puts 3
2
else
self.add(val)
end
end
end

1 + 1 #=> "3\n"
1 + 1 + 1 #=> "3\n"
1 + 1 + 1 + 1 #=> "3\n"
1 + 1 - 1 + 1 #=> "3\n3\n"

28 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 09:55:03.07 ID:w173sz60.net]
>>23
perl5

print qw(1 + 1)
1+1
print eval q(1 + 1)
2
print $_ =()= qw(1 + 1)
3

29 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 14:18:08.83 ID:6BPSvdm1.net]
お題、東大入試

a^2 - a が、10,000 で割り切れるような奇数a を求めよ。
ただし、3 <= a <= 9,999

ヒント
a^2 - a = a(a - 1) で、aは奇数、a-1 は偶数。
10,000 = 10^4 = 2^4 * 5^4

答え、625

東京大【整数マスターに俺はなる!#31】
https://www.youtube.com/watch?v=-LdnNZVftmw

30 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 14:46:10.23 ID:w173sz60.net]
>>29
common lisp
(loop for n from 3 to 10000 when (and (equal (mod n 2) 1) (equal 0 (mod (- (expt n 2) n) 10000))) collect n)
(625)



31 名前:デフォルトの名無しさん [2019/07/31(水) 15:57:49.04 ID:oxQy3lj+.net]
・女体限定で、3次元の写真から3Dポリゴンモデルデータを自動作成
・そのデータから胴体部の着衣部分を、裸モデルに修正
・水着でついた脇乳の段差も修正
・元写真の地肌色を使い、女体テンプレのテクスチ

32 名前:モ作成
・完成したモデルから胴体部だけ精密レンダリング
・元の写真に貼り付けて完成
[]
[ここ壊れてます]

33 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 17:25:11.51 ID:6BPSvdm1.net]
プログラミングのお題スレ Part14
https://mevius.5ch.net/test/read.cgi/tech/1558168409/981-986

漏れは、前スレの981 ではないですが、この問題の応用で、

括弧のネストの深さの最大値を求めよ

括弧の対応が取れていない場合は、-1 を出力せよ。
2種類の括弧が順序通りに、閉じていないものも、-1 です

ヒント : stack を使うと良いかも

"" => 0
"( )" => 1
"{ ( { ( ) } ( ) ) } ( )" => 4

"} {" => -1
"( { ) }" => -1

34 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 20:22:09.77 ID:AESVjm16.net]
自分でスタックするか再起にして自動で積ませるか、といったところか。

35 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 21:44:23.62 ID:CaRsLsI2.net]
>>32 Java
https://ideone.com/dIdH1J

36 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 22:14:16.43 ID:w173sz60.net]
>>32
perl5
ideone.com/X5OIjN

37 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 22:19:24.27 ID:w173sz60.net]
ideone バグっているのか?
STDIN の1行目空だと
ちゃんと標準入力としてプログラムに伝わっているけど
リンク先の stdin 枠の中だと省略されているように見える

stdout の 0 はその空を受け取ったもの

38 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 22:42:26.48 ID:w173sz60.net]
twitterやっていたようなので
そこにバグフィックス要請とテストケース画像貼っておいた
たぶんそのうち直るでしょう

39 名前:デフォルトの名無しさん mailto:sage [2019/07/31(水) 23:32:10.18 ID:M5c7ILzZ.net]
問題
n桁のヒットアンドブローのソルバーを作る。

40 名前:デフォルトの名無しさん [2019/07/31(水) 23:34:51.48 ID:BcGPMjSP.net]
君の言っていることの意味がよくわからない。



41 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 00:15:32.73 ID:i4UPQl8k.net]
>>37
GJ

42 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 15:40:09.21 ID:eeSbVWum.net]
>>38
大分前に作ったけど、コード紛失した。
アルゴリズムも忘れた。

ガーン。

43 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 15:47:29.97 ID:/tDwAGeP.net]
年収n円の人が生活費と交遊費2種類だけで1年間の収入のすべてを消費するとして
税率がt1からt2に上がった時
税抜き価格ベースでの生活費が変動しないものと考えると
税抜き価格ベースでの交遊費の減少額はいくらになるか?
(端数は切り上げとする)

ex)
年収n=5,000,000
税率t1=8%
税率t2=10%
税抜き価格ベースでの生活費a
税抜き価格ベースでの交遊費x, y
5000000 = ( a + x ) * 1.08
5000000 = ( a + y ) * 1.10
上記の方程式を解いて
x-y ≒ 84,176

44 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 16:10:15.37 ID:WaJjQk0q.net]
>>42
wolfram
Simplify[ x-y, {5000000 == (a+x)*1.08,5000000 == (a+y)*1.1} ]
84175.1

45 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 16:16:06.40 ID:WaJjQk0q.net]
切り上げか
Ceiling[ Simplify[ x-y, {5000000 ==(a+x)*1.08 == (a+y)*1.1} ] ]

84176

46 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 16:17:25.45 ID:9Ke7npq5.net]
何も考えずにceiling(n/1.08-n/1.1)でいいんとちゃうけ?

47 名前:デフォルトの名無しさん [2019/08/01(木) 19:07:52.51 ID:CMxA9z9p.net]
>>32 Ruby

f = -> str {s = +str.delete(?\ ); (0..).each{|i| s.gsub!(/{}|\(\)/, '') || (break s.size.zero? ? i : -1)}}

['', '( )', '{ ( { ( ) } ( ) ) } ( )', '} {', '( { ) }'].each{|e| puts '%p => %d' % [e, f[e]]}
# =>
"" => 0
"( )" => 1
"{ ( { ( ) } ( ) ) } ( )" => 4
"} {" => -1
"( { ) }" => -1

48 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 21:02:36.17 ID:9Ke7npq5.net]
>>45
ちょっと考えたらceiling(n/59.4)だったw

49 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 20:14:36.58 ID:fXsI78QL.net]
お題: 数字が与えられるので、その数字を元の数より大きくなるように再構築せよ
大きくできなければ元の数字をそのまま出力せよ

例:
in < 123
out > 231, 213, 321, 312

in < 921
out > 921

50 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 20:54:30.15 ID:Awh9QXRy.net]
123を入力したときに132が出力されないのはなぜ?



51 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 21:09:12.36 ID:ec2C26mu.net]
パーミュテーション作って終わりじゃあないのコレ

52 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 21:52:24.70 ID:TUgs2HTj.net]
>>49
ミスだよぉ!

53 名前:デフォルトの名無しさん [2019/08/02(金) 22:45:44.46 ID:T1FFAKuC.net]
そんなんばっかだなお前

54 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 01:06:14.19 ID:0ts56itm.net]
>>48
https://ideone.com/fyfMQH
C++。ご期待通り(?)にパーミテーション回してみたよ。
重いお。

55 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 10:23:36.04 ID:t/Tc4Qxr.net]
https://ideone.com/pgG7pT

from itertools import permutations

#string = "123"
string = "5672391"
n = int(string)
print filter(lambda m: m>n, map(lambda x: int("".join(x)), list(permutations(string, len(string)))))

56 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 10:27:27.22 ID:9AEx1UEu.net]
なんて早いんだ

57 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:19:47.14 ID:4CYzcJxv.net]
「大きくできなければ元の数字をそのまま出力せよ」という条件が
ことごとく無視されててワロタ

あと、「133」みたいに同じ数字が複数含まれる場合はどうなるべきなんだろう

58 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:39:39.93 ID:xpWLAw2C.net]
>>48 Perl5

sub next_permutation {
 defined $_[1] and
  (next_permutation(@_[1..$#_]) or
   ($_[0] lt $_[1]) and
   do {
    for (1..$#_)
{$_[0] lt $_[$_] ? $i = $_ : last}
    @_[0, $i] = @_[$i, 0];
    @_[1..$#_] = reverse @_[1..$#_];
    1 })
 }

#$v = '123';
$v = '5672391';

@a = sort split '', $v;
do {
 $n = join '', @a;
 print "$n " if $n > $v;
} while next_permutation @a;

実行結果
https://ideone.com/qeSGDm

CPANなどにあるPermutation計算モジュールを使用しても良いけど、
言語処理系に標準で含まれるモジュールではなく別途インストールが必要なので、
昔書いたnext_permutation iteratorを使ってみた

59 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:43:50.21 ID:xpWLAw2C.net]
>>57 ごめんなさい
print "$n " if $n > $v;

print "$n " if $n >= $v;

じゃないと「大きくできなければ元の数字をそのまま出力せよ」を満たさなかった…orz

60 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 11:49:41.56 ID:xpWLAw2C.net]
>>58 そうすると逆に
「元の数「より大きくなる」ように再構築せよ」
については、元の数値が余計に出力されるな…ゴメンねもう一工夫要るわ
それにiteratorである必要ないわ



61 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 12:09:48.13 ID:xpWLAw2C.net]
>>48 Perl5、iteratorじゃなくpermutationを列挙する方法で書いてみた。これなら題意に合うはず。

sub permu {
 my ($l, $p, @r) = @_;
 defined $p ? map {[$p, @$_]} permu([], @$l, @r) : ([])
 ,
 @r ? permu([@$l, $p], @r) : ()
}

#$v = '123';
#$v = '321';
$v = '5672391';

@a = split '', $v;
@b = grep {$_ > $v} map{join('', @$_)} permu [], @a;

print (@b ? "@b" : $v);



62 名前:
実行結果
https://ideone.com/1Lft75

少しメモリを食ってるだろうけど0.04sで解けた
[]
[ここ壊れてます]

63 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 16:01:35.10 ID:XF8eWPn5.net]
>>48 Squeak/Pharo Smalltalk

| fn res |
fn := [:input |
(Array streamContents: [:ss |
input permutationsDo: [:perm | perm > input ifTrue: [ss nextPut: perm copy]]]
) ifEmpty: [input]
].

fn value: '123'. "=> #('132' '213' '231' '321' '312') "
fn value: '921'. "=> '921' "
{#ms -> [res := fn value: '5672391'] timeToRun. #size -> res size}. "=> {#ms->6 . #size->2438} "

64 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 19:53:41.57 ID:0ts56itm.net]
>>48だけど、>>56の要件を見落としていたので入れてみたよ。
https://ideone.com/h2KrQu
C++。

65 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 03:52:38.60 ID:vnZdN6SP.net]
>>56で指摘したのに誰も反応してくれないので自分で書く
>>54は、「133」と入れると[313,331,313,331]みたいに結果がダブる

66 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 04:17:02.39 ID:vnZdN6SP.net]
>>62
C++のnext_permutationは、辞書順で次に来る順列が返るので、
最初の並びにnext_permutationを繰り返し適用すれば題意を満たす数列が得られる。
あと、自前で桁分割するより他言語のように文字列を使った方が楽だと思う。

67 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 08:30:18.20 ID:FnmDNXLj.net]
>>48
@Mathematica

rebuildLargerN[n_]:=n//
  IntegerDigits//
  Permutations//
  Map[FromDigits,#]&//
  Select[#,#>n&]&//
  If[#!={},#,{n}]&;

In[1] := rebuildLargerN[123]
Out[1] = {132, 213, 231, 312, 321}

In[2] := rebuildLargerN[921]
Out[2] = {921}

68 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 11:42:59.33 ID:1+0Vj0jh.net]
>>63
オレのPerl5の>>60も桁に重複があると出力はダブるよ。
ダブった出力で良いかあるいは1つに削減して出力するか
仕様は不定なので、ダブる可能性があってもそのまま出した。
ダブらせず1つだけ出力すにはsortしてuniqすればいいんだけど。
@b = grep {$_ > $v} map{join '', @$_} permu [], @a;

%h = map{$_ => 1} sort grep {$_ > $v} map{join '', @$_} permu [], @a;
@b = keys %h;

69 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 13:27:01.79 ID:FYuOH6vI.net]
https://ideone.com/mBo1rR
C++.
>>63のダブって表示はならないですね。
文字列だと、自分はいいけど、数字に限定するのが面倒なので、大きな数で処理してます。
文字を許容するんであればお題で書いておけばそのようになるんじゃないですかね??

70 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 13:29:31.62 ID:FYuOH6vI.net]
あ、そうだった。文字列だと自分より大きいを表現するのがめんどくさいのでした。



71 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 21:32:05.80 ID:OFOHGnJp.net]
>>48
https://ideone.com/1mtrVl
C++。暇だったので、文字列版作った。
でかい数のデバッグが大変だから手抜きだ。
ご査収ください。。。

72 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 22:51:54.50 ID:AzW+f4x5.net]
>>48 C++
https://ideone.com/6HQBYE
>>64で説明したかった内容をコードにしてみた

なお、pythonとc++のpermutationは、同じ値が含まれる時の動作が異なる
https://stackoverflow.com/questions/6534430/why-does-pythons-itertools-permutations-contain-duplicates-when-the-original

73 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 14:56:22.80 ID:1YPxJa8a.net]
お題@閑話休題。
https://ja.wikipedia.org/wiki/AKS素数判定法
AKSの実装。Prime is in P.
自分は挫折しました。数学解らない。

残骸:https://ideone.com/9e7Tyn

74 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 14:57:44.83 ID:1YPxJa8a.net]
>>70
そういえば、ソートする必要ないね。
書いてるときは保証できなかったから思いつきもしなかった。

75 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 18:46:19.50 ID:/2t+ALeN.net]
お題: スターリンソートを実装せよ

76 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 19:06:50.12 ID:Uq1zh0Vl.net]
>>73
seq 300|sort -R | perl -ne ' if ($. == 1){print ; $hold = $_} elsif ($_ > $hold) { print ; $hold = $_}'
140
145
231
246
248
270
272
281
298
299
300

77 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:18:34.06 ID:1YPxJa8a.net]
>>73
要素粛清しながら見た目がそろっているというギャグかいな。

78 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 20:54:47.97 ID:1YPxJa8a.net]
https://ideone.com/hhy72i
C++。よく生き残った我が精鋭たちよ。
ところで・・・。

79 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 15:33:52.56 ID:ts1kCtnm.net]
>>73 Squeak/Pharo Smalltalk

| fn |

fn := [:array |
| memo |
memo := array first.
array reject: [:x | x < memo flag: (memo := x max: memo)]
].

fn value: (1 to: 300) asArray shuffled. "=> #(65 116 195 235 276 280 293 299 300) "

80 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 00:35:30.37 ID:X/CTiqlR.net]
>>73
しばらくお題がないとおちつかないな
seq 300|sort -R | perl -ne ' if ($. == 1 or $_ > $hold) { print ; $hold = $_}'



81 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 10:41:16.59 ID:Q6oNbeov.net]
>>73

ss = -> a {a.reduce([]){|r, e| r.first.nil? ? [e] : r.last < e ? r + [e] : r}}

p ss[[3,1,4,1,5,9,26,53,58,97,93,238]] # =>
[3, 4, 5, 9, 26, 53, 58, 97, 238]

82 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 00:37:57.26 ID:F1quTbHl.net]
>>73 Perl5

use List::Util 'max';
@a = qw{3 1 4 1 5 9 26 53 58 97 93 238};
@b = grep {$n < $_ and $n = max($n, $_)} @a;
print "@b\n";


実行結果
~ $ perl 15_73.pl
3 4 5 9 26 53 58 97 238

83 名前:蟻人間 mailto:sage [2019/08/09(金) 00:53:52.15 ID:ZZ2ybqZz.net]
お題: 太陽系の各天体の位置を物理シミュレーションし、64日後の地球の位置を求めよ。

84 名前:蟻人間 mailto:sage [2019/08/09(金) 01:17:32.06 ID:JH0KcGUq.net]
俺たちって計算能力でコペルニクスを超えられると思う? NASAのデータがあるから昔よりも楽だと思うけど。

85 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 01:27:37.54 ID:F1quTbHl.net]
>>73 Perl5、 >>80 よりこっちの方が若干スマート

$n = -inf;
@a = qw{0 3 1 4 1 5 9 26 53 58 97 93 238};
@b = grep {$n < $_ and ($n = $_), 1} @a;
print "@b\n";


実行結果
~ $ perl 15_73.pl
0 3 4 5 9 26 53 58 97 238

86 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 04:16:04.61 ID:eE0IZ4mx.net]
>>83
ちょっとおもしろい

87 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 08:43:53.16 ID:Pwzp9noT.net]
>64

地球の位置といってもいろいろあります。
地球の赤道を天球上に投影した、「赤経、赤緯」、太陽の天球上の
通り道を天球上に投影した「黄経、黄緯」がありますし、それも、地球の中心を
原点とした、「地心赤経、赤緯」、「地心黄経、黄緯」および、観測地点を原点とした
「地表赤経、赤緯」、「地表黄経、黄緯」もありますので、どれにするかによって
計算式が違ってきます。
なお、JPLでは、太陽と月、および冥王星までの精密位置計算用のプログラムを
発表しています。
期間がながいものは、−4000(B.C.4001)〜4000(

88 名前:A.D.)まで、計算できるものが
あります。
計算用のデータと、テスト用のFortranプログラムも附属しています。
[]
[ここ壊れてます]

89 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 12:56:08.85 ID:1/DU+veY.net]
Perlって読みにくいんだな
{とか@とか$とか使いまくる言語ってマジ苦手

90 名前:デフォルトの名無しさん [2019/08/09(金) 13:03:13.21 ID:OfLBByV9.net]
RubyとPHPにケンカ売ってんの?



91 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 13:05:45.59 ID:weGJYw8v.net]
grep 内のboolian から最後の , 1 を取り除いたら
最初の0を拾わない
何というカオス

92 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 13:27:04.59 ID:F1quTbHl.net]
@b = grep {$n < $_ and {$n = $_}} @a;
こうやりゃいいんだよ

93 名前:デフォルトの名無しさん mailto:sage [2019/08/09(金) 13:51:55.80 ID:3hMObOjl.net]
この方がいいだろ
@b = grep {$n < $_ and ($n = $_, 1)} @a;

94 名前:デフォルトの名無しさん mailto:sage [2019/08/10(土) 22:54:55.68 ID:wV6Kn1Zu.net]
お題:
与えられた数列の要素の中で他と被っていない最小のものを求めよ
被っていない要素が存在しないときは-1を出力すること

例:
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2

95 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 00:46:36.68 ID:In4DYV8Y.net]
>>91 Perl5

use feature say;
use List::Util min;
for ([1,1,1,1,2,2,2,3,3,4], [1,2,3,4,5,5,4,3,2,1], [3,1,4,1,5,9,2,6,5,3,5]) {
 my %h;
 $h{$_}++ for @$_;
 @s = grep{1 == $h{$_}} keys %h;
 $" = ',';
 say "@$_ -> ", @s ? min @s : -1;
}

実行例
~ $ perl 15_91.pl
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2

96 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 01:44:41.14 ID:GTeyRs5o.net]
>>91
perl5
ideone.com/vj47th

97 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 06:08:19.60 ID:0wbGlMwh.net]
>>91 Ruby

f = -> a {a.sort.group_by{|e| a.count(e)}[1]&.min || -1}

[
[1,1,1,1,2,2,2,3,3,4],
[1,2,3,4,5,5,4,3,2,1],
[3,1,4,1,5,9,2,6,5,3,5]
].each{|a| puts '%p => %s' % [a, f[a]]} # =>
[1, 1, 1, 1, 2, 2, 2, 3, 3, 4] => 4
[1, 2, 3, 4, 5, 5, 4, 3, 2, 1] => -1
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] => 2

98 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 06:11:31.27 ID:0wbGlMwh.net]
typo

f = -> a {a.uniq.group_by{|e| a.count(e)}[1]&.min || -1}

99 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 12:01:23.99 ID:tGfhCIDM.net]
>>91 ruby
[ [1,1,1,1,2,2,2,3,3,4], [1,2,3,4,5,5,4,3,2,1], [3,1,4,1,5,9,2,6,5,3,5] ].each{|ar|
print ar.join(','), " -> "
while (m = ar.min) && ar.count( m ) != 1
ar.delete( m )
end
puts m || -1
}

1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2

100 名前:デフォルトの名無しさん mailto:sage [2019/08/11(日) 13:17:24.76 ID:In4DYV8Y.net]
>>91 Perl5 >>92 よりもう少しシンプルに

use List::Util min;
for ('1,1,1,1,2,2,2,3,3,4', '1,2,3,4,5,5,4,3,2,1', '3,1,4,1,5,9,2,6,5,3,5') {
 my %h;
 $h{$_}++ for split ',';
 $s = min grep{1 == $h{$_}} keys %h;
 $s //= -1;
 print "$_ -> $s\n";
}

実行結果
~ $ perl 15_91.pl
1,1,1,1,2,2,2,3,3,4 -> 4
1,2,3,4,5,5,4,3,2,1 -> -1
3,1,4,1,5,9,2,6,5,3,5 -> 2








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

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

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