X



プログラミングのお題スレ Part15
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:39:57.54ID:832c/ukY
プログラミングのお題スレです。

【出題と回答例】
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/

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

※前スレ
プログラミングのお題スレ Part14
http://mevius.5ch.net/test/read.cgi/tech/1558168409/
0002デフォルトの名無しさん
垢版 |
2019/07/28(日) 21:03:19.25ID:KnbJf+WN
宿題、チューリングの泥沼、条件不足等回避のため
出題者は自分で回答可能か確認してからお題を出すこと
0004デフォルトの名無しさん
垢版 |
2019/07/28(日) 21:32:12.69ID:MO+jaDzY
お題
とあるゲームでは、10面ダイスによってスコアを次のように定める
1. x個のダイスを全部振る
2. 振ったダイスのうち、最大の出目をスコアとする
3. 出目がc以上のダイスが存在するなら、その全てのダイスを使って同じ試行を行い、スコアに加算する
例えばc=7の時、2個のダイスの結果が(10,7)→(8,3)→(2)ならスコアは10+8+2=20となる
最初に振るダイスの個数Nとc(≧2)が分かっている時、スコアの期待値を求めよ
0007デフォルトの名無しさん
垢版 |
2019/07/29(月) 11:49:50.47ID:3vvajVS9
サイコロの偏りをもっと明確にしたいなら、乱数エンジンを複数持つか、ランダムデバイスそのもので実行する。
ランダムデバイスは遅いことになってるのでMTに投げるんだけど。
0009蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/30(火) 00:00:42.86ID:NJpsA13e
お題: 炭素原子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)).
0010デフォルトの名無しさん
垢版 |
2019/07/30(火) 03:21:18.39ID:NEOgIkE0
問題がわかりづらい。
0011デフォルトの名無しさん
垢版 |
2019/07/30(火) 06:42:15.48ID:x+cPGemS
出題者は自分で解けることを確認してからお題にしてるのかね?
自明でない不可能な場合の例とか出してこないし怪しいもんだ
0012デフォルトの名無しさん
垢版 |
2019/07/30(火) 10:22:50.80ID:xUDKdiN7
慣れない言語の勉強に使うのに丁度いいね
出題者が答えも貼っといてくれるとありがたい(´・ω・`)
0013デフォルトの名無しさん
垢版 |
2019/07/30(火) 16:13:07.32ID:YUdTZrG6
良いプログラムは良い数式がないと作れないのでこのスレは過疎化する。
0015蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/07/30(火) 16:51:52.79ID:gia580F5
解空間は、サイズ(p+q+r)×(p+q+r)の整数行列の集合になる。
結合の手の個数は有限だから、解行列の成分は上限がある。
よって行列の各成分についてしらみつぶし探索が可能。

自分自身とは結合しないので、A[k,k]=0(つまり、行列の対角成分はゼロ)。
ある行の和は、行番号に対応する原子の結合の手の個数になる。
ある列の和は、列番号に対応する原子の結合の手の個数になる。
連結条件のチェックが必要。
0016デフォルトの名無しさん
垢版 |
2019/07/30(火) 17:04:44.75ID:RYwsY7rK
お題: 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
0019◆QZaw55cn4c
垢版 |
2019/07/30(火) 20:12:47.58ID:3dZzemsO
>>9
複雑すぎます
非環状アルカン(CnH2n+2)の構造異性体を列挙せよ、という簡略化したお題を提案します
0020◆QZaw55cn4c
垢版 |
2019/07/30(火) 20:13:36.62ID:3dZzemsO
>>14
存在することはするのですが、誰も近寄らなくなりました、キチガイが一匹しつこく居候しているので
0026デフォルトの名無しさん
垢版 |
2019/07/31(水) 04:39:05.16ID:BcGPMjSP
>>23
perl


1+1;
print "3\n"
0027デフォルトの名無しさん
垢版 |
2019/07/31(水) 05:06:41.43ID:B/3ESziM
>>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"
0029デフォルトの名無しさん
垢版 |
2019/07/31(水) 14:18:08.83ID:6BPSvdm1
お題、東大入試

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
0030デフォルトの名無しさん
垢版 |
2019/07/31(水) 14:46:10.23ID:w173sz60
>>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)
0031デフォルトの名無しさん
垢版 |
2019/07/31(水) 15:57:49.04ID:oxQy3lj+
・女体限定で、3次元の写真から3Dポリゴンモデルデータを自動作成
・そのデータから胴体部の着衣部分を、裸モデルに修正
・水着でついた脇乳の段差も修正
・元写真の地肌色を使い、女体テンプレのテクスチャを作成
・完成したモデルから胴体部だけ精密レンダリング
・元の写真に貼り付けて完成
0032デフォルトの名無しさん
垢版 |
2019/07/31(水) 17:25:11.51ID:6BPSvdm1
プログラミングのお題スレ Part14
https://mevius.5ch.net/test/read.cgi/tech/1558168409/981-986

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

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

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

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

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

"} {" => -1
"( { ) }" => -1
0036デフォルトの名無しさん
垢版 |
2019/07/31(水) 22:19:24.27ID:w173sz60
ideone バグっているのか?
STDIN の1行目空だと
ちゃんと標準入力としてプログラムに伝わっているけど
リンク先の stdin 枠の中だと省略されているように見える

stdout の 0 はその空を受け取ったもの
0037デフォルトの名無しさん
垢版 |
2019/07/31(水) 22:42:26.48ID:w173sz60
twitterやっていたようなので
そこにバグフィックス要請とテストケース画像貼っておいた
たぶんそのうち直るでしょう
0039デフォルトの名無しさん
垢版 |
2019/07/31(水) 23:34:51.48ID:BcGPMjSP
君の言っていることの意味がよくわからない。
0042デフォルトの名無しさん
垢版 |
2019/08/01(木) 15:47:29.97ID:/tDwAGeP
年収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
0046デフォルトの名無しさん
垢版 |
2019/08/01(木) 19:07:52.51ID:CMxA9z9p
>>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
0048デフォルトの名無しさん
垢版 |
2019/08/02(金) 20:14:36.58ID:fXsI78QL
お題: 数字が与えられるので、その数字を元の数より大きくなるように再構築せよ
大きくできなければ元の数字をそのまま出力せよ

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

in < 921
out > 921
0052デフォルトの名無しさん
垢版 |
2019/08/02(金) 22:45:44.46ID:T1FFAKuC
そんなんばっかだなお前
0056デフォルトの名無しさん
垢版 |
2019/08/03(土) 11:19:47.14ID:4CYzcJxv
「大きくできなければ元の数字をそのまま出力せよ」という条件が
ことごとく無視されててワロタ

あと、「133」みたいに同じ数字が複数含まれる場合はどうなるべきなんだろう
0057デフォルトの名無しさん
垢版 |
2019/08/03(土) 11:39:39.93ID:xpWLAw2C
>>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を使ってみた
0058デフォルトの名無しさん
垢版 |
2019/08/03(土) 11:43:50.21ID:xpWLAw2C
>>57 ごめんなさい
print "$n " if $n > $v;

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

じゃないと「大きくできなければ元の数字をそのまま出力せよ」を満たさなかった…orz
0059デフォルトの名無しさん
垢版 |
2019/08/03(土) 11:49:41.56ID:xpWLAw2C
>>58 そうすると逆に
「元の数「より大きくなる」ように再構築せよ」
については、元の数値が余計に出力されるな…ゴメンねもう一工夫要るわ
それにiteratorである必要ないわ
0060デフォルトの名無しさん
垢版 |
2019/08/03(土) 12:09:48.13ID:xpWLAw2C
>>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);


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

少しメモリを食ってるだろうけど0.04sで解けた
0061デフォルトの名無しさん
垢版 |
2019/08/03(土) 16:01:35.10ID:XF8eWPn5
>>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} "
0063デフォルトの名無しさん
垢版 |
2019/08/04(日) 03:52:38.60ID:vnZdN6SP
>>56で指摘したのに誰も反応してくれないので自分で書く
>>54は、「133」と入れると[313,331,313,331]みたいに結果がダブる
0064デフォルトの名無しさん
垢版 |
2019/08/04(日) 04:17:02.39ID:vnZdN6SP
>>62
C++のnext_permutationは、辞書順で次に来る順列が返るので、
最初の並びにnext_permutationを繰り返し適用すれば題意を満たす数列が得られる。
あと、自前で桁分割するより他言語のように文字列を使った方が楽だと思う。
0065デフォルトの名無しさん
垢版 |
2019/08/04(日) 08:30:18.20ID:FnmDNXLj
>>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}
0066デフォルトの名無しさん
垢版 |
2019/08/04(日) 11:42:59.33ID:1+0Vj0jh
>>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;
0067デフォルトの名無しさん
垢版 |
2019/08/04(日) 13:27:01.79ID:FYuOH6vI
https://ideone.com/mBo1rR
C++.
>>63のダブって表示はならないですね。
文字列だと、自分はいいけど、数字に限定するのが面倒なので、大きな数で処理してます。
文字を許容するんであればお題で書いておけばそのようになるんじゃないですかね??
0068デフォルトの名無しさん
垢版 |
2019/08/04(日) 13:29:31.62ID:FYuOH6vI
あ、そうだった。文字列だと自分より大きいを表現するのがめんどくさいのでした。
0072デフォルトの名無しさん
垢版 |
2019/08/06(火) 14:57:44.83ID:1YPxJa8a
>>70
そういえば、ソートする必要ないね。
書いてるときは保証できなかったから思いつきもしなかった。
0074デフォルトの名無しさん
垢版 |
2019/08/06(火) 19:06:50.12ID:Uq1zh0Vl
>>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
0077デフォルトの名無しさん
垢版 |
2019/08/07(水) 15:33:52.56ID:ts1kCtnm
>>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) "
0078デフォルトの名無しさん
垢版 |
2019/08/08(木) 00:35:30.37ID:X/CTiqlR
>>73
しばらくお題がないとおちつかないな
seq 300|sort -R | perl -ne ' if ($. == 1 or $_ > $hold) { print ; $hold = $_}'
0079デフォルトの名無しさん
垢版 |
2019/08/08(木) 10:41:16.59ID:Q6oNbeov
>>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]
0080デフォルトの名無しさん
垢版 |
2019/08/09(金) 00:37:57.26ID:F1quTbHl
>>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
0081蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/09(金) 00:53:52.15ID:ZZ2ybqZz
お題: 太陽系の各天体の位置を物理シミュレーションし、64日後の地球の位置を求めよ。
0082蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/09(金) 01:17:32.06ID:JH0KcGUq
俺たちって計算能力でコペルニクスを超えられると思う? NASAのデータがあるから昔よりも楽だと思うけど。
0083デフォルトの名無しさん
垢版 |
2019/08/09(金) 01:27:37.54ID:F1quTbHl
>>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
0085デフォルトの名無しさん
垢版 |
2019/08/09(金) 08:43:53.16ID:Pwzp9noT
>64

地球の位置といってもいろいろあります。
地球の赤道を天球上に投影した、「赤経、赤緯」、太陽の天球上の
通り道を天球上に投影した「黄経、黄緯」がありますし、それも、地球の中心を
原点とした、「地心赤経、赤緯」、「地心黄経、黄緯」および、観測地点を原点とした
「地表赤経、赤緯」、「地表黄経、黄緯」もありますので、どれにするかによって
計算式が違ってきます。
なお、JPLでは、太陽と月、および冥王星までの精密位置計算用のプログラムを
発表しています。
期間がながいものは、−4000(B.C.4001)〜4000(A.D.)まで、計算できるものが
あります。
計算用のデータと、テスト用のFortranプログラムも附属しています。
0087デフォルトの名無しさん
垢版 |
2019/08/09(金) 13:03:13.21ID:OfLBByV9
RubyとPHPにケンカ売ってんの?
0088デフォルトの名無しさん
垢版 |
2019/08/09(金) 13:05:45.59ID:weGJYw8v
grep 内のboolian から最後の , 1 を取り除いたら
最初の0を拾わない
何というカオス
0091デフォルトの名無しさん
垢版 |
2019/08/10(土) 22:54:55.68ID:wV6Kn1Zu
お題:
与えられた数列の要素の中で他と被っていない最小のものを求めよ
被っていない要素が存在しないときは-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
0092デフォルトの名無しさん
垢版 |
2019/08/11(日) 00:46:36.68ID:In4DYV8Y
>>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
0094デフォルトの名無しさん
垢版 |
2019/08/11(日) 06:08:19.60ID:0wbGlMwh
>>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
0096デフォルトの名無しさん
垢版 |
2019/08/11(日) 12:01:23.99ID:tGfhCIDM
>>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
0097デフォルトの名無しさん
垢版 |
2019/08/11(日) 13:17:24.76ID:In4DYV8Y
>>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
0099デフォルトの名無しさん
垢版 |
2019/08/11(日) 16:53:20.83ID:RYQKURZ1
昔々Cで数独解くやつ普通に作ったことあるけど普通に作っても人間の感覚では一瞬にして答えが出ちゃうんだよな。ほとんどEnterキー押したらすぐ出る感じ。
そしてこれといって他にアルゴリズムは思い浮かばない。(誰もが思い付くであろう再起でマスに入れられる数を順番に入れてく方式ね)。

これ以上に「素早く」やる方法なんてあるんだろうか?
0102デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:17:47.99ID:z7uw92+V
#include <map>
template<class Container>
std::int64_t MakeHoge(const Container& D) {
std::map < Container::value_type, std::uint64_t> M;

for (auto& o : D) {
M[o]++;
}
for (auto& o : M) {
if (o.second == 1) {
return o.first;
}
}
return -1;
}

詰めまくってみた。C++。
0103デフォルトの名無しさん
垢版 |
2019/08/11(日) 17:20:29.72ID:z7uw92+V
#include <map>
template<class Container>
std::intmax_t MakeHoge3(const Container& D) {
std::map < Container::value_type, std::uintmax_t> M;

for (auto& o : D) {
M[o]++;
}
for (auto& o : M) {
if (o.second == 1) {
return o.first;
}
}
return -1;
}
しつこいけど、これ以上は無理ってくらい詰めた。
0107デフォルトの名無しさん
垢版 |
2019/08/11(日) 18:40:15.26ID:2JPwQqrg
prologのコード見せてよ
0108蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/11(日) 18:56:28.74ID:NLZMdOh3
お題: 論文「数独パズルの難易度判定」(大阪工業大学)を読んで、数独の難易度を判定するプログラムを作れ。
0109◆QZaw55cn4c
垢版 |
2019/08/11(日) 19:37:12.10ID:EWNjTlvC
>>108
吸う毒難易度判定
初期値の与えられているマスが22以下:難問
22以上:簡単
0112デフォルトの名無しさん
垢版 |
2019/08/12(月) 00:58:03.04ID:DPPVhuFK
>>91 Pharo/Squeak Smalltalk

| fn |
fn := [:arr | (arr asBag sortedElements detect: [:kv | kv value = 1] ifNone: [-1 -> 0]) key].

fn value: #(1 1 1 1 2 2 2 3 3 4). "=> 4 "
fn value: #(1 2 3 4 5 5 4 3 2 1). "=> -1 "
fn value: #(3 1 4 1 5 9 2 6 5 3 5). "=> 2 "
0114デフォルトの名無しさん
垢版 |
2019/08/12(月) 21:41:34.96ID:qMi+e5AX
>>91 Perl5 >>97 もう少しスマートに

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 eval;
 ($s) = sort grep{1 == $h{$_}} keys %h;
 $s //= -1;
 print "$_ -> $s\n";
}


実行結果
~ $ perl 15_91_3.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
0115デフォルトの名無しさん
垢版 |
2019/08/13(火) 07:30:43.99ID:kJJDzO2R
>>91
Ruby で

# 数字の配列の配列。改行は削除
nums = <<"EOT".lines( chomp: true ).map{ |str| str.split( "," ).map( &:to_i ) }
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
EOT

results = nums.each_with_object( [ ] ) do |ary, results|
uniq_ary = ary.uniq # 重複排除
uniq_ary.sort! # ソート

res = -1
uniq_ary.each do |num|
if ary.count( num ) == 1
res = num; break
end
end
results.push res
end

p results #=> [4, -1, 2]
0117デフォルトの名無しさん
垢版 |
2019/08/14(水) 01:45:59.79ID:spdKRMJM
>>116
うわぁ…山中俊次かよ
0118115
垢版 |
2019/08/14(水) 03:01:09.16ID:ms62dfnn
>>91
Ruby で、>>115 を修正した

# 数字の配列の配列。改行は削除
nums = <<"EOT".lines( chomp: true ).map{ |str| str.split( "," ).map( &:to_i ) }
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
EOT

def resolve( ary )
# 数字の出現回数を数える。Hash の初期値は、0
hash = ary.each_with_object( Hash.new( 0 ) ) {
|num, hash| hash[ num ] += 1 }

hash_2 = hash.select { |key, val| val == 1 } # 1回のもの
# キーでソートして、最小の数字を返す
number = Hash[ hash_2.sort ].keys.first
number = -1 if number == nil
number
end

p nums.map { |ary| resolve ary } #=> [4, -1, 2]
0119115
垢版 |
2019/08/15(木) 05:28:22.88ID:5MxOdPEK
>>118
の、resolve 関数を修正

# キーでソートして、最小の数字を返す
>number = Hash[ hash_2.sort ].keys.first
pair = Hash[ hash_2.sort ].first # [ key, value ]

keys を使うと、ハッシュのキー配列が作られるため、処理が多くなるので、修正します

def resolve( ary )
# 各数字の出現回数を数える。Hash の初期値は、0
hash = ary.each_with_object( Hash.new( 0 ) ) {
|num, hash| hash[ num ] += 1 }

hash_2 = hash.select { |key, val| val == 1 } # 1回のもの
# キーでソートして、最小の数字を返す
pair = Hash[ hash_2.sort ].first # [ key, value ]
if pair == nil
number = -1
else
number = pair[ 0 ] # key
end
number
end
0120デフォルトの名無しさん
垢版 |
2019/08/16(金) 00:38:41.91ID:eRShYMGh
お題: 任意の2桁の自然数の各桁を、1桁になるまで掛け算する回数の最大回数とその数を示せ

15なら1x5=5と1回
93なら9x3=27, 2x7=14, 1x4=3と3回
0123デフォルトの名無しさん
垢版 |
2019/08/16(金) 04:32:18.49ID:4vR5Al7i
>>120 Ruby 1桁以上に拡張してみた
def colmul( val )
n = 0
while val >= 10
ans = 1
begin
val, c = val.divmod( 10 )
ans *= c
n += 1
end while val >= 10
val *= ans
end
[n, val]
end

[15,93, 77, 123].each{|n|
puts "%5d %3d %d" % [n, *colmul( n )]
}
実行結果
15 1 5
93 3 4
77 4 8
123 2 6
0124デフォルトの名無しさん
垢版 |
2019/08/16(金) 07:11:52.40ID:idyJWhoT
>>120 Squeak Smalltalk (Pharo では若干の修正が必要)

| fn ans |

fn := [:n |
| count digits |
count := 0.
[(digits := n asString asArray collect: #digitValue) size > 1]
whileTrue: [n := digits reduce: #*. count := count + 1].
count
].

ans := Set with: nil->0.

fn value: 15. "=> 1 "
fn value: 93. "=> 3 "
fn value: 277777788888899. "=> 11 "

(1 to: 9) do: [:i |
(i to: 9) do: [:j |
| kv m |
kv := (m := i * 10 + j) -> (fn value: m).
kv value = ans anyOne value ifTrue: [ans add: kv].
kv value > ans anyOne value ifTrue: [ans removeAll; add: kv]
]
].

^ans asArray "=> {77->4} "
0125デフォルトの名無しさん
垢版 |
2019/08/16(金) 09:55:22.61ID:w6EX52R7
>>120 python
from operator import mul
def kake(n, ls):
__m = reduce(mul, map(lambda x:int(x), list(str(n)) ) )
__ls.append(m)
__if len(str(m)) == 1:
____return
__kake(m, ls)

test = [0, 1, 9, 11, 15, 51, 52, 61, 66, 77, 93, 123, 277777788888899]
for n in test:
__ls = []
__kake(n, ls)
__print "n="+str(n)+", "+"list="+str(ls)+", "+"len="+str(len(ls))+", "+"last="+str(ls[-1])

実行結果
n=0, list=[0], len=1, last=0
n=1, list=[1], len=1, last=1
n=9, list=[9], len=1, last=9
n=11, list=[1], len=1, last=1
n=15, list=[5], len=1, last=5
n=51, list=[5], len=1, last=5
n=52, list=[10, 0], len=2, last=0
n=61, list=[6], len=1, last=6
n=66, list=[36, 18, 8], len=3, last=8
n=77, list=[49, 36, 18, 8], len=4, last=8
n=93, list=[27, 14, 4], len=3, last=4
n=123, list=[6], len=1, last=6
n=277777788888899, list=[4996238671872L, 438939648, 4478976, 338688, 27648, 2688, 768, 336, 54, 20, 0], len=11, last=0
0126デフォルトの名無しさん
垢版 |
2019/08/16(金) 10:19:15.90ID:s+gRsoB0
>>120 Ruby

f = -> n {[(1..).find{10 > n = n.divmod(10).reduce(:*)}, n]}

(10..99).group_by{|i| f[i]}.max.tap{|m| m.last.each{|v| puts '%dは%d回で%dになる.' % [v, *m.first]}}

# => 77は4回で8になる.
0127デフォルトの名無しさん
垢版 |
2019/08/16(金) 11:35:03.96ID:Y33v+D/I
>>120 Perl5

use List::Util reduce;
for (qw{15 93 123 277777788888899}) {
 ($n, $i) = ($_, 0);
 while (1 < length $n) {
  $n = reduce {$a * $b} split '', $n;
  $i++;
 }
 print "$_ -> $i回で $nになる\n";
}

実行結果
~ $ perl 15_120.pl
15 -> 1回で 5になる
93 -> 3回で 4になる
123 -> 1回で 6になる
277777788888899 -> 11回で 0になる
0128デフォルトの名無しさん
垢版 |
2019/08/16(金) 11:40:17.74ID:FoYt1ZXR
実用上、意味のないことは寝言という。
0131デフォルトの名無しさん
垢版 |
2019/08/16(金) 19:41:08.88ID:4vR5Al7i
2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
この段階で、掛け算14回じゃなくて1回になるの?
0132デフォルトの名無しさん
垢版 |
2019/08/16(金) 21:11:10.70ID:UOmTAtC9
元のお題は2桁の自然数なのでそれよりも桁が多いならその場合のルールも決めないとダメだろうな。
0133デフォルトの名無しさん
垢版 |
2019/08/16(金) 22:49:37.86ID:WXGx/ZZ4
> 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9=4996238671872
を1回としても14回としても解き方はたいして変わらんからどっちでもいいと思う
とりあえず回答例見たら1回としてるみたいだから1回の方でいいんじゃね
0136デフォルトの名無しさん
垢版 |
2019/08/17(土) 15:01:05.32ID:m7Zf+/1R
>>120 Perl5

use feature current_sub;
use List::Util reduce;
for (qw{15 93 123 277777788888899}) {
 $i = 0;
 $n = sub {
  return shift if 1 == @_;
  $i++, __SUB__->(split'', reduce {$a * $b } @_);
 }->(split'');
 print "$_ -> $i回で $nになる\n";
}

実行結果
~ $ perl 15_120_2.pl
15 -> 1回で 5になる
93 -> 3回で 4になる
123 -> 1回で 6になる
277777788888899 -> 11回で 0になる
0137さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/17(土) 15:58:34.13ID:hkO+8710
お題: オカダンゴムシには進行中に壁にぶつかると左へ、次は右へ(あるいは右へ、次は左へ)と交互に曲がっていく習性がある。この行動は「交替性転向反応」といい、左右に交互に曲がる事で天敵から逃げられる確率を高めているといわれている(ウィキペディアより引用)。

何もない整数平面上にスタート地点(S)とゴール地点(G)が与えられる。仮想ダンゴムシ(@)の周辺に壁(#)をいくつか作って、スタート地点からゴール地点まで誘導せよ。
ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
90度曲がって目の前にすぐに壁がある場合は同じ方へもう90度曲がるものとする。壁はいくつ作ってもよい。

例) S=(0, 0), G=(5, 2)
→#={(6, 0)}.
例) S=(1, 2), G=(-1, 1)
→#={(2, 2), (1, 3), (0, 2), (1, 0)}.
0141デフォルトの名無しさん
垢版 |
2019/08/17(土) 17:21:32.91ID:RHoMoFJP
Y+がビジュアライズして上になるかはビジュアライザーの挙動次第なのでいいのだけど。
最初はX+向いてるのね。承知。
0142デフォルトの名無しさん
垢版 |
2019/08/17(土) 17:25:39.14ID:RHoMoFJP
あ、もう一つあるんだ。
最初にダンゴムシが壁にぶつかったときは右と左どっち優先?

////

@#
////
の時。
方向がX+の時に左へターンしたら無限ループする。
逆に、方向がY+の時右にターンしたら無限ループする。

どや?
0143デフォルトの名無しさん
垢版 |
2019/08/17(土) 17:28:20.45ID:uIV5R7Aj
> ただし、ダンゴムシは最初は右向きを向いていて、最初にぶつかったら左に曲がるものとする。
0147さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/17(土) 20:39:30.65ID:hkO+8710
世界はクソにあふれている! 何てこった! この状況を! この状況を変えるためには、クソをせずに生きれる仕組みを! 皆様と一緒にクソをせずに生きれる仕組みを、実現して! 行きましょう!
0149デフォルトの名無しさん
垢版 |
2019/08/17(土) 23:52:46.77ID:9or86GZG
それよりも交替性転換反応とやらが本当に生存確率を高めるのか
右にばかり曲がりたがる逃亡犯と左にしか曲がれない共産党員を例に
シミュレーションを繰り返すプログラムを書いて?(゚∀゚)
0151デフォルトの名無しさん
垢版 |
2019/08/18(日) 01:00:00.23ID:C9/yeHaG
あなた達は、実は自分で思っているほど
ソフトウエアの開発が得意ではないということに
まだ気がついてすら至っていない
0153デフォルトの名無しさん
垢版 |
2019/08/18(日) 02:07:00.19ID:4oEGaRbg
>>151
君は、実は自分で思っているほど日本語が得意ではないということにまだ気づいていない。
0164さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/18(日) 19:33:02.90ID:f2ZPM7Xh
お題: 壁で囲まれた何もない有限の部屋(面積5m^3前後)の中に、四方向に距離センサーが付いた、丸い形のお掃除ロボット(直径20cm)がある。
各距離センサーは、ロボットからその方向にある障害物までの距離を常に教えてくれる。
ロボットはその場で右または左に5度単位で自転するか、もしくは前方向に5cm単位で前進できる。
部屋全体のおおよその形がわかるまで、ロボットを動かしなさい。

例) 正方形の部屋
例) 正三角形の部屋
例) 凹の形の部屋
0165さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/18(日) 19:46:24.23ID:f2ZPM7Xh
直径20cmが入り込めない隙間は無視、もしくは壁と見なす。
スクリーンショットか動画を作れたら、30点加点する。
0168デフォルトの名無しさん
垢版 |
2019/08/19(月) 11:34:00.91ID:icNxZHqv
>>164
部屋の壁の構成が凹を基本としたヒルベルト曲線だったら「おおよその形」はそのロボットのAIは何と答えればいいの?
ttps://cdn-ak.f.st-hatena.com/images/fotolife/o/obelisk2/20161224/20161224022849.png
0170デフォルトの名無しさん
垢版 |
2019/08/19(月) 12:00:44.91ID:78Wz1qhX
>>160
一晩かんがえてみたんだけどね、ゆる〜くね。
スタートに壁作るなとは書いてないよね??
0171デフォルトの名無しさん
垢版 |
2019/08/19(月) 12:36:53.71ID:ChF0jSyn
4個目のスタート地点の壁を許しても、3個目の答えが間違えてるやん?
[-1,1]の壁を1回透過しないとゴールにたどり着けないやん?

まあ [*いしのなかにいる*] は許されないと思うけどw
0172デフォルトの名無しさん
垢版 |
2019/08/19(月) 12:50:21.54ID:78Wz1qhX
>>171
あぁ、なるほど、先において起動させる前提なのか。
オレ、動的にターン制で考えてたわ。
0180デフォルトの名無しさん
垢版 |
2019/08/20(火) 03:10:44.70ID:p19J/GFP
アスペばっかやんけこのスレ
0186デフォルトの名無しさん
垢版 |
2019/08/27(火) 21:01:10.99ID://c3Bn/y
俺のとあってるし多分いいんじゃね?わからんが
でも>>5-6の時点で出題者からの突っ込みがないのが気になる
出題者出てきてー
0189デフォルトの名無しさん
垢版 |
2019/08/27(火) 22:42:10.07ID:ZWZUVJ+Q
お題:値が変更不可能でインデックスだけ参照できるシャッフルされた配列を何らかの方法でソートする。その際配列や値のコピーは取れない。
C++でいう、constの配列をなんとか整列してみましょう。

自分の答え。:https://ideone.com/4S932i
0190デフォルトの名無しさん
垢版 |
2019/08/28(水) 00:04:27.28ID:4LHTj8UL
>>189 Perl5

use List::Util shuffle;

@a = shuffle 1..10;
@ix = 0..$#a;
print "@a\n";
@iy = sort{$a[$a] <=> $a[$b]} @ix;
print "@a[@iy]\n";

実行例
~ $ perl 15_189.pl
5 2 4 8 3 10 6 9 1 7
1 2 3 4 5 6 7 8 9 10
0191デフォルトの名無しさん
垢版 |
2019/08/28(水) 00:57:09.32ID:iZEqAFR9
激お題:自動プログラミングプログラムを作るか日本語で説明せよ。方法は各自の言語にゆだねる。

https://ideone.com/2UWc8g
自分は上記のようなものを作った。
4kb位のプログラムができるのに多分数年かかる。
コンパイラの通ったかというのを取れれば文章的に正しいやつは何かを残していく。
でも、コンパイラに投げる動作はわからないので入れてない。
0193デフォルトの名無しさん
垢版 |
2019/08/28(水) 01:14:30.34ID:mmOF8lug
>>191 ナンジャそれは、お題でもなんでもない。 まず日本語の勉強をして出直してこい。
お題も人に解る様に出せないような人間はプログラマの素質はない。
0194デフォルトの名無しさん
垢版 |
2019/08/28(水) 01:51:57.69ID:iZEqAFR9
>>193
どこが解りにくかったですか?
テストコードは、言語で使える英数記号類を全探索するモノです。
0195デフォルトの名無しさん
垢版 |
2019/08/28(水) 12:29:21.50ID:gV1iThk/
>>194
>>191全体
0196デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:09:15.46ID:iZEqAFR9
>>195
お題と余談が書いてあるだけだぞ。
とりあえず、刮目して自動プログラミングプログラムを作ってください。
作れなさそうなら、概要を日本語で説明してください。
0197デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:20:49.15ID:iHRPACN2
まず自動プログラミングプログラムってなんだよ
お前の造語なんか知らんわ
0199デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:40:49.41ID:gV1iThk/
>>189
Kotlin
https://paiza.io/projects/hCnNPeSohDhcerAL2MMqag

こんなので良いのかな?

厳密に言ったら最後の出力文字列を作る時の map で値が取り出されて新たなリスト作るからコピーされちゃってんだけどね。
0201デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:52:51.27ID:CKrqMRiB
1文字ごとにカンマが入って空白or改行を使わないプログラミング言語ってなんだろう…?
4kb(この表記だとビットかバイトかわからん)が数年で行けるってどういう計算だろう…?
0202デフォルトの名無しさん
垢版 |
2019/08/28(水) 14:59:27.89ID:iZEqAFR9
>>199
暗黙変数があるとオレ、フリーズしちゃうなぁ。
やったことない言語だけど、結果はあってると思う。
0203デフォルトの名無しさん
垢版 |
2019/08/28(水) 15:03:25.48ID:iZEqAFR9
>>201
文字の列挙のリストには抜けがあるかもしれない。
C++は改行しなくても空白さえあればかける気がするけど。

なお、字数が増えれば増えるほど遅くなる。

とりあえず、実行してみればわかるけど、検索文字を総当たりしてるだけだからね。
んで、コンパイラに投げて通るかどうかのチェック入れないといけないんだ。
0205デフォルトの名無しさん
垢版 |
2019/08/28(水) 15:59:11.53ID:CKrqMRiB
字数が増えれば増えるほど遅くなる、の遅くなり具合がわかってない気がする
使用する文字の種類を60とした場合、総当たりで毎秒10億個生成できても19年で10文字くらいだよ
0207デフォルトの名無しさん
垢版 |
2019/08/28(水) 16:18:28.21ID:iZEqAFR9
>>205
うほ!そんな遅いんかいな。
オーダーよりパッションで作ったのでそこまで考えてない。
それが・・・現実・・・!!!

>>206
そんなかんじだねぇ。
0208デフォルトの名無しさん
垢版 |
2019/08/28(水) 16:19:08.51ID:DKDzG5Os
設問が悪い。
自動プログラミングプログラムの出力が不正でなければ良い→コンパイルエラーないしはランタイムエラーを出さない、で良いの?

phpのソースを書き出せば問題ない。
ランダムな文字列を出力し続けても、文字空間が64文字であれば、5文字目以降、毎回1/1073741824で失敗するがそれ以外のケースで自分自身を表示する正しいプログラムになる。
0209デフォルトの名無しさん
垢版 |
2019/08/28(水) 16:42:26.29ID:e0ao7N2r
>>200 自動プログラミングが何で数字の羅列なんだよ。
何処がプログラミングだよ。 こんな物どんなコンパイラを通したら意味を持ったプログラムになるんだよ。
0211デフォルトの名無しさん
垢版 |
2019/08/28(水) 17:16:03.37ID:iZEqAFR9
>>209
エーっと、C/C++はポインタがあるので実行したマシン破壊する確率は高いな。
わざと文書的に正しければと書いてあるんだが、気づいてないな。

>>208
そうですなぁ。チェッカーがエラーを吐かないでよかった気がする。
0213デフォルトの名無しさん
垢版 |
2019/08/28(水) 17:33:20.06ID:DKDzG5Os
ガチでやるなら遺伝的アルゴリズムで遊んだほうが面白そうな話題ではある。
総当たりは分が悪い。
0214デフォルトの名無しさん
垢版 |
2019/08/28(水) 18:50:08.98ID:sIwi/wTh
みんなまじめに小学生の相手して偉いなぁ
0215デフォルトの名無しさん
垢版 |
2019/08/28(水) 19:02:24.38ID:31wF8+fr
ネットでプログラムとかコードとかの記事検索して予約語が含まれるセンテンスをコピペするプログラムとかどう?(゚∀゚)<これを自動プログラミングと呼べるかどうか知らんけど
0216デフォルトの名無しさん
垢版 |
2019/08/28(水) 19:28:19.63ID:gV1iThk/
>>212
最後まで何をやらせたいのかわからなかった。
0219さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/08/29(木) 00:48:42.64ID:5IzqEHY7
お題: 入力として任意の長さのバイト列(半角アルファベット)が与えられる。入力を左から読み取っていくとき、
読み込まれるバイトの状態遷移を表すデータまたは画像を出力せよ。ただし、初期状態は'^'、終了状態は'$'で
表すものとし、状態遷移図のノードには重複がないものとする。

例)
"AKDAK"

^: A.
A: K.
K: D$.
D: A.
$: .
0223デフォルトの名無しさん
垢版 |
2019/08/29(木) 13:28:32.46ID:gjTy67rx
>>219
> 読み込まれるバイトの状態遷移を表すデータまたは画像

とは何か?
0226デフォルトの名無しさん
垢版 |
2019/08/30(金) 00:51:59.58ID:0mnJOhtL
>>222
D$は、Dに遷移するか、または、$に遷移するって意味じゃないかな
0228デフォルトの名無しさん
垢版 |
2019/08/30(金) 06:09:58.43ID:N+Bub+CM
お題
1億以下の同じ数字でできている数(1,22,777など)をすべて表示する
0231デフォルトの名無しさん
垢版 |
2019/08/30(金) 07:10:25.46ID:N+Bub+CM
>>228
自然数を対象とします。なので0は対象外。
0232デフォルトの名無しさん
垢版 |
2019/08/30(金) 10:00:13.13ID:/ZgOmfmJ
>>228 Ruby

p (1...9).flat_map{|i| (1..9).map{|j| j * (10**i - 1) / 9}}

# => [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99,
111, 222, 333, 444, 555, 666, 777, 888, 999, 1111, 2222, 3333,
4444, 5555, 6666, 7777, 8888, 9999, 11111, 22222, 33333, 44444,
55555, 66666, 77777, 88888, 99999, 111111, 222222, 333333,
444444, 555555, 666666, 777777, 888888, 999999, 1111111,
2222222, 3333333, 4444444, 5555555, 6666666, 7777777, 8888888,
9999999, 11111111, 22222222, 33333333, 44444444, 55555555,
66666666, 77777777, 88888888, 99999999]
0234デフォルトの名無しさん
垢版 |
2019/08/30(金) 11:37:28.31ID:Kz4M8rdT
>>233
評価。
0235デフォルトの名無しさん
垢版 |
2019/08/30(金) 12:26:06.17ID:VkI78Ia/
>>228
同じ数字でできている数って?どういう意味?
0236デフォルトの名無しさん
垢版 |
2019/08/30(金) 12:27:00.95ID:VkI78Ia/
あ、わかった。ごめん。
0237デフォルトの名無しさん
垢版 |
2019/08/30(金) 13:32:59.48ID:Tn7+4gKU
>>228 Pharo/Squeak Smalltalk

(1 to: 8) gather: [:n | (1 to: 9) collect: [:m | (Array new: n withAll: m) polynomialEval: 10]]

#(1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999)
0238デフォルトの名無しさん
垢版 |
2019/08/30(金) 16:39:32.33ID:BnHn7wdj
遅いけど perl5
for (1..100_000_000) { print if s{\A (.) \1* \z}{$& }x }
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999
0239デフォルトの名無しさん
垢版 |
2019/08/30(金) 18:36:49.98ID:9N6Bd3Tw
>>91
Haskell

main = mapM_ (print.only)
[
[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]
]

only ns = f [xs | xs <- (group.sort) ns, length xs == 1]
where
f [] = -1
f ([x]:_) = x


ワンライナーも出来るけど、何やってるか読み取り辛い。

only ns = if lst == [] then -1 else (head.head) lst where lst = [xs | xs <- (group.sort) ns, length xs == 1]
0240デフォルトの名無しさん
垢版 |
2019/08/30(金) 19:34:06.70ID:9dkB4daP
>>228
あほ
0241デフォルトの名無しさん
垢版 |
2019/08/30(金) 23:12:37.99ID:aECV+bPz
>>228 Perl5

@s = map{$a=$_; map{$_ x $a} 1..9} 1..8;
print "@s";

実行;
~ $ perl 15_228.pl
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333
444 555 666 777 888 999 1111 2222 3333 4444 5555 6666
7777 8888 9999 11111 22222 33333 44444 55555 66666 77777
88888 99999 111111 222222 333333 444444 555555 666666 777777
888888 999999 1111111 2222222 3333333 4444444 5555555 6666666
7777777 8888888 9999999 11111111 22222222 33333333 44444444
55555555 66666666 77777777 88888888 99999999
0243デフォルトの名無しさん
垢版 |
2019/08/31(土) 05:23:58.92ID:aUqRNM/Y
a = 0
for i = 1, 8 do
  a = a * 10 + 1
  for j = a, a * 9, a do
    print(j)
  end
end
>>228 Lua
0244デフォルトの名無しさん
垢版 |
2019/08/31(土) 08:18:15.37ID:rAMLyuja
>>228
Haskell

import Data.List

main = (print.sort.concat) [[(sum.take a) [x * 10 ^ y | y <- [0..9]] | x <- [1..9]]| a <- [1..8]]
0245デフォルトの名無しさん
垢版 |
2019/08/31(土) 08:45:29.92ID:h26kuCJS
お題
>>228 を求めることができる
特に最適化を施さないナイーブな実装(例えば>>238 )を書いて
その実行にかかる時間(ミリ秒、秒等)を計測し出力してください

なお遅い言語処理系で1億以下が無理な場合は1千万以下でも構いません
0246デフォルトの名無しさん
垢版 |
2019/08/31(土) 10:03:16.75ID:4OmVCRqb
time perl -e 'for (1..100_000_000) { print if s{\A (.) \1* \z}{$& }x }'
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999 11111111
22222222 33333333 44444444 55555555 66666666 77777777 88888888 99999999
real 1m30.031s
user 1m29.046s
sys 0m0.093s
0247デフォルトの名無しさん
垢版 |
2019/08/31(土) 10:56:28.19ID:Z8IDlpBx
>>245 Pharo/Squeak Smalltalk

| time ans |

time := [ans := (1 to: 100000000) select: [:n | n asString asSet size = 1]] timeToRun.
^{time. ans}

"Core m3-8100Y => an Array(0:00:02:55.58 #(1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111
222 333 444 555 666 777 888 999 1111 2222 3333 4444 5555 6666 7777 8888 9999 11111
22222 33333 44444 55555 66666 77777 88888 99999 111111 222222 333333 444444 555555
666666 777777 888888 999999 1111111 2222222 3333333 4444444 5555555 6666666 7777777
8888888 9999999 11111111 22222222 33333333 44444444 55555555 66666666 77777777
88888888 99999999)) "
0248デフォルトの名無しさん
垢版 |
2019/08/31(土) 10:58:35.47ID:8/I1hpDH
>>245 Perl5、1千万以下、CPU: Core i5 M520@2.4GHz

use Time::HiRes qw(gettimeofday tv_interval);
$t0 = [gettimeofday];
for (1..1e8) {
 push @s, $_ if /^(.)\1*$/;
}
$elapse = tv_interval($t0, [gettimeofday]);
printf "@s\n%.3f[s]\n", $elapse;

実行結果
~ $ perl 15_245.pl
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777 888 999
1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333 44444 55555 66666
77777 88888 99999 111111 222222 333333 444444 555555 666666 777777 888888 999999
1111111 2222222 3333333 4444444 5555555 6666666 7777777 8888888 9999999
49.732[s]
0250デフォルトの名無しさん
垢版 |
2019/08/31(土) 12:36:03.19ID:E0AleLqQ
>>120
Haskell

main = map (\n -> f n 0) [15,93,77,123]

f n a | n < 10 = (n,a)
f n a = f (product [read [x] | x <- show n]) (a + 1)
0251デフォルトの名無しさん
垢版 |
2019/08/31(土) 12:47:22.94ID:8/I1hpDH
>>245 c99、 Core i5 M520@2.4GHz

#include <time.h>
#include <math.h>
#include <stdio.h>
int main() {
 int b = 1, n = 1;
 clock_t s = clock();
 for (int e = 1; e <= 9; e++) {
  int j = pow(10, e) - pow(10, e - 1);
  for (int i = 1; i <= j; i++) {
   if (n == (n / b) * b)
    printf("%d ", n);
   n++;
  }
  b *= 10; b += 1;
 }
 clock_t e = clock();
 printf("\n%.3f[s]\n", (double)(e - s)/1e6);
}

実行結果
$ cc -std=c99 -O2 15_245.c -lm
$ time ./a.out
1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 111 222 333 444 555 666 777
888 999 1111 2222 3333 4444 5555 6666 7777 8888 9999 11111 22222 33333
44444 55555 66666 77777 88888 99999 111111 222222 333333 444444 555555
666666 777777 888888 999999 1111111 2222222 3333333 4444444 5555555
6666666 7777777 8888888 9999999 11111111 22222222 33333333 44444444
55555555 66666666 77777777 88888888 99999999 111111111 222222222
333333333 444444444 555555555 666666666 777777777 888888888 999999999
3.890[s]
0254デフォルトの名無しさん
垢版 |
2019/08/31(土) 13:44:48.13ID:u8Io5isX
ぶー!!!
・・・これが・・・!!!・・・これこそが・・・!!!
・・・だ・・・!!!・・・だそく・・・!!!!
0256デフォルトの名無しさん
垢版 |
2019/08/31(土) 15:12:57.30ID:RMcMP/J8
>>245

Haskell ナイーブな方
Atomコア(Celeron N3050@1.6GHz)
1億以下で約31秒

main = print [x | x <- [1..100000000], let (s:ss) = show x, all (== s) ss]

time ./zorome
real 0m31.426s
user 0m31.123s
sys 0m0.248s

ナイーブな方は探すアルゴリズムで、最適化の方(>>244)は数列を作るアルゴリズム。
(1から99999999までの(1桁から8桁までの)ゾロ目を作る)

[
[[1],[1,10],[1,10,100]...],
[[2],[2,20],[2,20,200]...],
...,
[[9],[9,90],[9,90,900]...]]
]

って言う数列を生成して、合計出してフラットにしてソートしてるだけだよ。
(他の言語のも多少の手順の違い(フラット化とソートしないで「合計出した時点で表示」を縦方向に繰り返したり)はあるけど、基本のアルゴリズムとしては同じ)
0259デフォルトの名無しさん
垢版 |
2019/09/01(日) 19:32:51.46ID:VqTK6sxa
>>257 Perl5

$n = 24;
@a = map{int rand 255} 1..$n;;
print "@a\n";
@b = map{sprintf'%08b', $_} @a;
$" = '';
print "@b\n

実行例
~ $ perl 15_257.pl
155 105 94 58 85 82 124 6 242 94 119 175 69 205 95 25 79 154 237 248 169 254 46 93
100110110110100101011110001110100101010101010010011111000000011011110010010111100111011110101111010001011100110101011111000110010100111110011010111011011111100010101001111111100010111001011101
0263デフォルトの名無しさん
垢版 |
2019/09/02(月) 02:56:48.97ID:oioFkvSQ
>>120

>>125 みたいに、1桁になるまでの変化の様子もリストで渡すようにした。

Haskell

main = mapM put [4,15,93,77,123,277777788888899]

put x = (putStrLn.concat) [show x," -> ",show a,
" loop and value is ",show n,". list = ",show l]
where (l,a,n) = f [] 0 x

f l a n| n < 10 = (reverse l,a,n)
f l a n = f (m:l) (a + 1) m
where m = product [read [x] | x <- show n]
0264デフォルトの名無しさん
垢版 |
2019/09/02(月) 02:57:17.93ID:oioFkvSQ
out:

4 -> 0 loop and value is 4. list = []
15 -> 1 loop and value is 5. list = [5]
93 -> 3 loop and value is 4. list = [27,14,4]
77 -> 4 loop and value is 8. list = [49,36,18,8]
123 -> 1 loop and value is 6. list = [6]
277777788888899 -> 11 loop and value is 0. list = [4996238671872,438939648,4478976,338688,27648,2688,768,336,54,20,0]
0265デフォルトの名無しさん
垢版 |
2019/09/02(月) 06:37:20.55ID:6t6D41pn
>>257 Ruby

n = 16
x = Array.new(n){rand(0x100)}
b = n.times.reduce(0){|s, i| x[~i] * 0x100**i + s}

puts "%p => %0#{n}b" % [x, b]

# => [31, 95, 43, 108, 105, 54, 1, 122, 100, 48, 137, 121, 131, 188, 105, 244] =>
11111010111110010101101101100011010010011011000000001011110100110010000110000100010010111100110000011101111000110100111110100
0266デフォルトの名無しさん
垢版 |
2019/09/02(月) 06:39:28.02ID:6t6D41pn
typo

puts "%p => %0#{n * 8}b" % [x, b]

# => [31, 95, 43, 108, 105, 54, 1, 122, 100, 48, 137, 121, 131, 188, 105, 244] =>
00011111010111110010101101101100011010010011011000000001011110100110010000110000100010010111100110000011101111000110100111110
100
0267デフォルトの名無しさん
垢版 |
2019/09/02(月) 12:10:04.08ID:rT9Zixkt
>>233
勉強になりましたw
0269デフォルトの名無しさん
垢版 |
2019/09/02(月) 15:10:33.79ID:rT9Zixkt
全滅エンドか!?
0271デフォルトの名無しさん
垢版 |
2019/09/03(火) 02:08:35.68ID:FeqFVaAA
>>228
aa=$(echo ^{1..9}\\\{1,\\\}\$\\\| |sed -e "s/ //g; s/\\\|$//;"); seq 1 $((10**8)) |grep -e "$aa"
0272デフォルトの名無しさん
垢版 |
2019/09/03(火) 03:13:14.41ID:4SpqHsfM
数学的な解き方わからず
このx>=3の自然数解を見つける

a>b、 (a^2 - b^2)^x + (2ab)^y = (a^2 + b^2)^z
0273272
垢版 |
2019/09/03(火) 05:28:10.06ID:VYSmTHvF
a=2 b=1で 3^x + 4^y = 5^z
は解無し
0275デフォルトの名無しさん
垢版 |
2019/09/03(火) 08:38:58.69ID:VYSmTHvF
出てくる文字、a b x y z はすべて自然数、正の整数です
0276デフォルトの名無しさん
垢版 |
2019/09/03(火) 08:39:49.44ID:03sYx3ae
a > b > 0 なの?
0 > a なら意味ないんだけど
出題者が問題をそもそも理解してなさそう
0277デフォルトの名無しさん
垢版 |
2019/09/03(火) 08:44:26.60ID:VYSmTHvF
すべて1以上の整数として、
x>=3、  a>b、  (a^2 - b^2)^x + (2ab)^y = (a^2 + b^2)^z
を満たすものを見つける

そこでa=2 b=1の場合は解無しがわかっていて
任意のa,bに対して、(a^2 - b^2)^2 + (2ab)^2 = (a^2 + b^2)^2 が成り立つことも判っています
0278デフォルトの名無しさん
垢版 |
2019/09/03(火) 08:57:07.87ID:VYSmTHvF
指数2だと必ず成立するのはこれだからです
指数3以上で解けるのはどれか、あるかです


ピタゴラス数は無数にある
中学校の数学で習う定理に、「三平方の定理」或いは「ピタゴラスの定理」と呼ばれるものがある。
a^2 + b^2 = c^2 を満たす正の整数の組 (a, b, c) のことを、ピタゴラス数と呼ぶ。
例えば、(3, 4, 5) や (5, 12, 13) などは有名なピタゴラス数である。

ピタゴラス数が無限個存在する
任意の原始的ピタゴラス数 が (|m^2 ? n^2|, 2mn, m^2 + n^2) の形で表せることを示す。
https://nue2004.info/knowledge/knowledge97.htm
0279デフォルトの名無しさん
垢版 |
2019/09/03(火) 09:27:31.81ID:fMS/rXUz
\   / .::::::::::::::::::::::::;;:;;::,ッ、:::::::::   )  く   数  す
  \ l  ,ッィrj,rf'"'"'"    lミ::::::: く   れ  学  ま
     Y           ,!ミ::::::: ヽ  な  野  な
`ヽ、  |           くミ:::::::: ノ   い  郎  い
     |、__  ャー--_ニゞ `i::::,rく   か  は
``''ー- ゝ、'l   ゙̄´彑,ヾ   }::;! ,ヘ.)  !  帰
      ゙ソ   """"´`     〉 L_      っ
      /          i  ,  /|    て    r
≡=- 〈´ ,,.._        i  't-'゙ | ,へ     ,r┘
,、yx=''" `ー{゙ _, -、    ;  l   レ'  ヽr、⌒ヽ'
        ゙、`--─゙      /!         `、
  _,,、-     ゙、 ー''    / ;           `、
-''"_,,、-''"    ゙、    /;;' ,'  /         、\
-''"    /   `ー─''ぐ;;;;' ,'  ノ      
   //    /     ヾ_、=ニ゙
0280デフォルトの名無しさん
垢版 |
2019/09/03(火) 13:20:54.78ID:SA/JpX4x
どう考えてもスレチだよなぁ
必要なのはプログラムじゃなく紙と鉛筆っぽいし
0282デフォルトの名無しさん
垢版 |
2019/09/03(火) 13:52:03.24ID:/IQ7x87c
むしろこのスレは本当にコンピューター使わないと解けないような
パズル問題とかの方が解答つかないことが多い
0285デフォルトの名無しさん
垢版 |
2019/09/03(火) 15:15:29.58ID:R1k47NOJ
(a^2 - b^2)^x + (2ab)^y=0
(a^2 + b^2)^z=0

の連立方程式解くとよさそうに見えるが。
解くのむずくて俺は無理。
0287デフォルトの名無しさん
垢版 |
2019/09/03(火) 15:31:15.82ID:FbgAnO5f
>>257 Ruby
N = 10
X = Random.new.bytes(N)
puts X.unpack('C*').map{|c| '%02X' % c}.join(' '), X.unpack('B*')

結果
82 30 D4 E1 07 32 27 3E A2 E5
10000010001100001101010011100001000001110011001000100111001111101010001011100101
0288デフォルトの名無しさん
垢版 |
2019/09/03(火) 15:38:54.45ID:R1k47NOJ
自分で移項して解こうと思ったがキャパ超えててギブアップ。

>>286
解があることは証明されているのですか?数学ダメなんだよ。
0289デフォルトの名無しさん
垢版 |
2019/09/03(火) 15:40:16.69ID:03sYx3ae
>>288
(a^2 + b^2)^z=0 <=> a = 0 and b = 0
a > b はどこ行ったの?
てか勝手に両辺=0にしちゃその時点で必要性満たしてないよね
0290デフォルトの名無しさん
垢版 |
2019/09/03(火) 15:45:42.09ID:R1k47NOJ
数学ダメなのでセオリー知らないんだけど。マジ解らん。

正直すまんかった。
0298デフォルトの名無しさん
垢版 |
2019/09/03(火) 16:02:55.16ID:R1k47NOJ
多倍長無いと証明には至らないな。
というわけで今回は抜けるわ。
乱文申し訳ない。
0301デフォルトの名無しさん
垢版 |
2019/09/03(火) 16:42:54.68ID:03sYx3ae
>>291
規程してないよって言ってるけど
貴方が提示した条件は a=0 and b=0 と同値ですよって指摘してるんですけど難しいですか私が言ってる事
0303デフォルトの名無しさん
垢版 |
2019/09/03(火) 21:38:14.04ID:MpIMqTuu
>>277
なんでxだけ3以上なの?
yとzは本当に1以上の整数として解いていいの?
aとbは定数として扱うの?
なんなの?
0304デフォルトの名無しさん
垢版 |
2019/09/03(火) 22:12:17.83ID:VYSmTHvF
x=y=z=2以外の解があるか?

すべて自然数、変数 a>b、 (a^2 - b^2)^x + (2ab)^y = (a^2 + b^2)^z の解

答えしらず。 a=2 b=1だけはいまのところ他にないを証明可能
0306デフォルトの名無しさん
垢版 |
2019/09/03(火) 22:40:59.77ID:MpIMqTuu
>>304
だからxだけ3以上でyとzは1以上の整数として計算していいか聞いてんだけど?
で、もしそうだったとしてなんでxだけ3以上に仮定してんのかも合わせて聞いてんだけど答えろよ
0307デフォルトの名無しさん
垢版 |
2019/09/04(水) 00:41:31.51ID:5HyNYB53
304は3以上を仮定してない、すべて自然数
0308デフォルトの名無しさん
垢版 |
2019/09/04(水) 02:57:47.93ID:5U+WeLbN
あーこりゃ致命的に頭悪い奴か
数学も日本語も通じないとは
0309デフォルトの名無しさん
垢版 |
2019/09/04(水) 07:57:08.75ID:FC7xGJ7s
定理を発見したら著作権で保護されるのかな。
0313デフォルトの名無しさん
垢版 |
2019/09/04(水) 11:24:41.75ID:P7o6e2y0
お題: 平面上にいくつかの円 (内部も含む円) がある
それが重なったり重ならなかったりしていて、最も重なっている箇所ではN個の円が重なっているとする
このとき、各円の座標と半径が与えられた場合にNを返すプログラムを書け
0315デフォルトの名無しさん
垢版 |
2019/09/04(水) 14:06:48.93ID:HTJbgiFI
それ円周率パイとネイピア数のe の積が
N個の円の重なる唯一の x座標とy座標の円達を与えられて返すの辛くないか?
0316デフォルトの名無しさん
垢版 |
2019/09/04(水) 14:13:24.75ID:yXyTPmQk
>>315
辛くねえよ
どうやったら方程式解いて超越数が出てくんだよ
ちょっとは考えてからレスしろ
0317デフォルトの名無しさん
垢版 |
2019/09/04(水) 14:29:48.47ID:HTJbgiFI
例として313が N=4 で、それを与える円4つが
(x-ePi-1)^2+(y-ePi)^2=1
(x-ePi+1)^2+(y-ePi)^2=1
(x-ePi )^2+(y-ePi-1)^2=1
(x-ePi )^2+(y-ePi+1)^2=1
だったら大変かもしれない?
0318デフォルトの名無しさん
垢版 |
2019/09/04(水) 17:19:01.11ID:reYoOADS
>>273
これ解無しって言ってるけど自明じゃないよね
ホントにあってんのか?
0319デフォルトの名無しさん
垢版 |
2019/09/04(水) 18:34:12.43ID:6EOP5CCF
>>306
横レスだが
騒ぐ前に元の>>272の問題文を良く見なさい
それで自分で判断できなければ数学的な問題に取り組むのは止めておいたほうが良い
0320デフォルトの名無しさん
垢版 |
2019/09/04(水) 18:42:19.25ID:8qjE+V3b
>>319
一連のやり取り見て出題者がそこら辺理解してなさそうだったから改めて確認しただけなんですけど
>>272を見ただけでは>>306の全ての質問に答えられないことは明白なのに何いってんの?
数学の論理もわからねえくせに見当違いのお説教してんじゃねえよ
0322デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:10:06.78ID:5HyNYB53
>>318
省いててわかりずらいかもしれないがアウトライン。一般化はできないだろう解き方。


3^x + 4^y = 5^z の自然数解は(2,2,2)唯一つ

mod 3で1 ≡ (-1)^z、 z偶数が必要
z=2wとおくと 3^x = (5^w + 2^y) (5^w - 2^y)
簡単な考察で右辺の後項が3の倍数ならば前項は3の倍数になりえないので後項=1、前項=3^xが必要
w偶数とすると結果2式をmod 3で比較して不成立、w奇数が必要
y>=3ならばmod 8で5 ≡ 3^x、任意のxで不成立
y=1ならば解なし
0323デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:23:20.13ID:5HyNYB53
かいてから考えたら間違ってるところがでてきた
ここまではいいとして、これあってないな


> y>=3ならばmod 8で5 ≡ 3^x、任意のxで不成立
0324デフォルトの名無しさん
垢版 |
2019/09/04(水) 19:26:32.69ID:5HyNYB53
いやあってた
5^2 ≡ 1 (mod 8)になってしまうとおもったら
w奇数だから、5^3 ≡ 5 (mod 8)だった
5しかでない
0325デフォルトの名無しさん
垢版 |
2019/09/04(水) 20:01:35.58ID:P7o6e2y0
>>314
あら既出だったのか
Twitterで見つけてきたんだけど、その人もこのスレ見てたのかな
それとも問題自体が有名な問題なのかな?
0326デフォルトの名無しさん
垢版 |
2019/09/04(水) 22:19:56.37ID:bGWgoiea
少なくとも自分はAOJで見た記憶がある
たしか高校生向けのコンテストの問題だったはず…
0327デフォルトの名無しさん
垢版 |
2019/09/04(水) 22:31:18.96ID:A7beDSD/
>>313
座標と半径が与えられたら、ひたすらHypotするんだ!!
これ、ゲーム技術だから覚えておくとよいよ。(偉そう
0328デフォルトの名無しさん
垢版 |
2019/09/04(水) 22:47:39.03ID:5HyNYB53
自作かとおもってたがWikipediaにほぼおなじのあった。解は指数2に限るという。
のってて解けてないとすると難問か


ピタゴラスの定理 - Wikipedia

Jesmanowicz 予想
1956年に Jesmanowicz が以下の予想を提出した。

(a, b, c) を原始ピタゴラス数、n を自然数とする。x, y, z が
(an)^x + (bn)^y = (cn)^z
で自然数解を持つには、x=y=z=2 であることが必要である。
0329デフォルトの名無しさん
垢版 |
2019/09/04(水) 22:56:59.22ID:5HyNYB53
Jesmanowicz予想で検索


KAKEN 研究期間 2011 ? 2012 不定方程式におけるTerai予想とJesmanowicz予想

まず始めに、Terai予想のケース(1)のP=q=r=2の場合(Jesmanowicz予想)について考察した。
藤田育嗣氏(日本大学)との共同研究で、Jesmanowicz予想を三つ組みa,b,cがある合同条件を満たす場合に証明した。
Pingzhi Yuan氏(華南師範大学)との共同研究では、申請者の以前の研究結果を大幅に拡張することが出来た。
次に、Terai予想のケース(1)の一般的な場合について考察した。
最近、Florian Luca氏(メキシコ自治国立大学モレリア数学研究所)が、以前の研究の多くを(本質的に)一般化する結果を与えた。
その手法は、Baker理論とそのp進版の理論が有効に用いられていた。しかし、その結果は、不完全な点があり、申請者はその部分を補う計算を行なった。

さらに、申請者はTerai予想の類似問題を提起した。それは、
2以上の自然数p,q,rに対して、a^p+b^q=c^rを満たすa,b,cに対して、
指数型ディオファントス方程式c^x+b^y=a^zは、q=r=2かつc=b+1のときに限り自然数解x,y,zを持ち、
そのときにただ一つの自然数解(x,y,z)=(1,1,p)を持つである。
申請者は、Terai予想で扱われている三つ組みa,b,cについて考察を行い、
Baker理論とそのp進版の理論を用いて、いくつかの場合に予想は成立することを証明した。
特に、後半の主張である"解の一意性"を証明した。

最後に、Terai予想では扱われない三つ組みについても研究結果を得た。
まず、Alain Togbe氏(Purdue大学)との共同研究を行い、氏の以前の連続整数に関する研究を広く拡張することが出来た。
また、申請者は、三つ組みがある線形回帰数列の項として与えられる場合に方程式の解を決定した。
それによって寺井伸浩氏(足利工業大学)によって提起されたフィボナッチ数列に関する予想を解決した。
https://kaken.nii.ac.jp/grant/KAKENHI-PROJECT-11J05674/
0330デフォルトの名無しさん
垢版 |
2019/09/04(水) 23:07:59.22ID:5HyNYB53
完全解決してないが、結構解けてるらしい


早稲田大学整数論セミナーの予定 (2014年度 第5回)

タイトル: 原始ピタゴラス数に関する Jesmanowicz 予想について

アブストラクト: 1956 年, Jesmanowiczはピタゴラス数に関する指数型不定方程式
(m^2 - n^2)^x + (2mn)^y = (m^2 + n^2)^z  は, ただ一つの正の整数解 (x; y; z) = (2; 2; 2) を持つことを予想した.
ただし, m > n, gcd(m; n) = 1, m ≠ n mod 2 を満たす正の整数とする.

Journal of Number Theory の論文 (2014 年) において, n = 2 とき Jesmanowicz 予想が成り立つことを証明した.
これは, 与えられた n > 1 に対し m について何も仮定せず Jesmanowicz 予想が成り立つ最初の結果である.
最先端の楕円曲線や modular formの理論から導かれる一般化された Fermat 方程式に関する結果を用いて, m に何も条件を付けずに Jesmanowicz 予想が成り立つことを証明することができた.

本講演では, これをさらに拡張して, n=2 が奇素数の冪でかつ m > 72n のときJesmanowicz予想が成り立つことを証明できたので紹介する.
これらの結果の系として, n=2 が 50 未満の奇数のとき Jesmanowicz 予想が成り立つことが容易に得られる.

https://www.waseda.jp/sem-wnt/kako/pdf2014/20140516.pdf
0333デフォルトの名無しさん
垢版 |
2019/09/05(木) 10:41:35.98ID:jPhMORz8
置く場所の最大サイズ2000*2000くらいまでだとprocessingとかで半透明の円を重ね合わせれば一番濃いところが正解だから合ってるかどうかだいたい見て分かる
rが小数で半径が0.0001から1億くらいまでまちまちだと面倒
0335デフォルトの名無しさん
垢版 |
2019/09/05(木) 11:32:41.41ID:JTGocygG
>>334
そいつらはいつものアホやからスルーしなはれ
0336デフォルトの名無しさん
垢版 |
2019/09/05(木) 13:09:10.29ID:n5jm1pTY
>>326
高校生レベル高いな
まぁアルゴリズムとか高校生でもすごい子いるもんなー
競プロとかすごいもんなー
0338デフォルトの名無しさん
垢版 |
2019/09/06(金) 18:11:06.63ID:O7F8x+Ks
>>337
お前いつもスマートだよな
0339デフォルトの名無しさん
垢版 |
2019/09/06(金) 21:58:05.28ID:h6IBFFVJ
材料グループAと材料グループBがあるとする。
それぞれには、ランダムな固有値を持っており、
固有値の差が、ある数値以下の組み合わせのみ使用可能とする。
ただし、材料グループA、B内の材料は一度使うとなくなるため一度しか組み合わせれない。
それぞれのグループの材料が100ずつあったとして適切に組み合わせれば
全てがマッチングできる。ただ人組でもペアを間違えるとマッチングできない。

こういったことを実現するためには、どういった考え方でプログラミングすればいいでしょうか。
0341デフォルトの名無しさん
垢版 |
2019/09/06(金) 22:06:24.07ID:IlHiLkpw
>>339
各グループの材料を固有値の昇順にソートして小さい方からペア作ってくのではダメなのか?
0342デフォルトの名無しさん
垢版 |
2019/09/06(金) 22:10:20.13ID:adnLBrFU
A:大<->小
B:小<->大

のペアがましといえばまし。
真ん中がマッチしない可能性はある。
0343339
垢版 |
2019/09/06(金) 22:10:34.94ID:h6IBFFVJ
なるほど、とても簡単な問いだったのですね。
なんか難しい事ばかり考えていました。
0344デフォルトの名無しさん
垢版 |
2019/09/06(金) 22:11:12.30ID:5B1pyUbX
diff のアルゴリズムがもうちょっと複雑なのにも対応できるやつじゃなかったか?
0345デフォルトの名無しさん
垢版 |
2019/09/06(金) 22:14:00.34ID:adnLBrFU
あー、差が以下か。
A:小<->大
B:小<->大

でいいわ。。。
俺もなんか難しいこと考えてた。そーりー。
0346339
垢版 |
2019/09/06(金) 22:14:53.61ID:h6IBFFVJ
必ずマッチングできない100ずつあったとした場合でも昇順ソートして同じ順位にいるもので、比較してマッチングできれば実施、できなければ上位を参照してマッチングできたら抜けて、できなければさらに上位とマッチングみたいなことをすれば良いのか。
0347339
垢版 |
2019/09/06(金) 22:23:16.91ID:h6IBFFVJ
あっ違う違う。
昇順にソートして組み合わせるとマッチングできないもの出てきます。
というのも差が最小の組み合わせではなくて、
差がある一定以下である事なので、昇順にソートして隣り合うものではダメです。

少し考えたのですが、全ての組み合わせを実施して、その計算結果、今回は差がある数値以下である数が多い組み合わせを採用するみたいなことになるんですかね
0349339
垢版 |
2019/09/06(金) 23:00:40.30ID:h6IBFFVJ
ないですね。
ということは、やはり最小のマッチング以外はありえないということになるのですね。

材料在庫が変動していたとしても、その瞬間の最小の差のペアを作ることが
一番効率の良いマッチング方法になるということか、、、。
0351デフォルトの名無しさん
垢版 |
2019/09/06(金) 23:19:00.83ID:Sfa1dP8m
全てマッチングできるとは限らず最も多くマッチングできる組み合わせ
を求める ならちょっと工夫必要そう
0352デフォルトの名無しさん
垢版 |
2019/09/06(金) 23:24:40.52ID:h6IBFFVJ
皆さんありがとう。

最も多くマッチングさせるときは、閾値に一番近い選択を行うことがシンプルということかな?

>>350
コードありがとうございます。
プログラムを生業にしている者ではないのでC++の開発環境から構築になりますが、試してみます。
0354デフォルトの名無しさん
垢版 |
2019/09/06(金) 23:32:51.82ID:adnLBrFU
大したコードではないが、そこまで威力があるとは思わなかった。
動機なんてそんなもんか。
0355蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/06(金) 23:43:04.03ID:sc/CXZHY
お題: ある会社の営業曜日(複数可)と営業時間が与えられる。今月1ヶ月の営業時間の合計を求め、今月のカレンダーの下に表示せよ。ただし、その会社は祝日・祭日を特別扱いしないものとする。
0356399
垢版 |
2019/09/07(土) 00:15:01.96ID:meGL1HdM
>>354
おぉ見るたびマッチング精度上がってる
ありがとうございます!
参考にさせてもらいます
0359デフォルトの名無しさん
垢版 |
2019/09/07(土) 10:40:38.85ID:K3PTI0jA
わからんな
結晶や薄膜やらだと本当に固有値がある
ヤツは「材料」って言っていて、その先に何を想定してるかこちらには伏せられたまま

もしかすると高分子の製薬かもしれない
使うと無くなるんだろ?
0363399
垢版 |
2019/09/07(土) 20:55:02.76ID:aT864lGO
>>362
やっぱり、最小のペアを選んでいくことがベストなのかな?

できれば差は出来るだけ小さい方が良くて、結果みてると後者の方が良好な結果が出てる気がする
0366デフォルトの名無しさん
垢版 |
2019/09/08(日) 08:38:41.51ID:GRxK0QRw
>>313
正方形だと3倍速い
0367デフォルトの名無しさん
垢版 |
2019/09/08(日) 09:39:44.56ID:46Wp6heU
3倍早いだけだったらオーダーが変わらねーじゃん
円が一万個一億個一兆個だったらどうなんの
0368デフォルトの名無しさん
垢版 |
2019/09/08(日) 09:58:44.95ID:GRxK0QRw
3日の仕事が1日で済むとも言う。
0369デフォルトの名無しさん
垢版 |
2019/09/08(日) 13:16:12.58ID:rbzdrKrZ
>>363
ランダム生成している数字が割と一様なのでそういう結果になるけど、
まばらに片寄っていたらどうすればいいかはその時しかわからんなぁ。
0371蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/08(日) 23:23:17.86ID:YT+ZQkc/
お題: 質問文とn個の項目からなるメニューを実装せよ。

質問文とn個の文字列が入力として与えられる。質問文とn個の項目をかっこよく表示し、ユーザーが一つ項目を選ぶまで待つ。選んだら、選んだ項目を出力する。
0372蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/08(日) 23:47:28.87ID:YT+ZQkc/
お題: マイ ドキュメントのフォルダ階層構造を表示せよ。
0373デフォルトの名無しさん
垢版 |
2019/09/08(日) 23:48:15.93ID:gIfFAHmp
お題
与えられた数列の、隣り合う2要素の差のリストを作る関数等を作ってください。

入力数列例
3 1 4 1 5 9 2 6 5
出力数列例
-2 3 -3 4 4 -7 4 -1

余力があれば、ファイルなどから非常に長い数列を与えられても対処できる実装を試みてください

http://gushwell.ldblog.jp/archives/52379839.html を一部改変)
0374デフォルトの名無しさん
垢版 |
2019/09/08(日) 23:48:22.91ID:7lW0qzzX
お題:北のミサイルをなんとかせよ
0376デフォルトの名無しさん
垢版 |
2019/09/09(月) 00:57:49.46ID:G8Ger3PB
>>373 Perl5

sub f {
 map{$_[$_ + 1] - $_[$_]} 0..$#_-1;
}
@a = qw{3 1 4 1 5 9 2 6 5};
@b = f @a;
print "@b\n";

実行結果
~ $ perl 15_373.pl
-2 3 -3 4 4 -7 4 -1
0377デフォルトの名無しさん
垢版 |
2019/09/09(月) 07:20:37.09ID:F7fW2XyB
>>373 Pharo/Squeak Smalltalk

| fn |
fn := [:xs | xs allButFirst - xs allButLast].

fn value: #(3 1 4 1 5 9 2 6 5). "=> #(-2 3 -3 4 4 -7 4 -1) "
0383デフォルトの名無しさん
垢版 |
2019/09/09(月) 18:55:29.45ID:nBEHXDpg
>>373
ファイルからの読み込み派が居ない件。。。

Haskell

main = readFile "count.txt" >>= return.read >>= \lst -> print $ zipWith (-) (tail lst) lst
― ファイルから読まない場合は
― main = print $ zipWith (-) (tail lst) lst where lst = [3,1,4,1,5,9,2,6,5]

test.txt
[3,1,4,1,5,9,2,6,5]

out:
[-2,3,-3,4,4,-7,4,-1]
0385デフォルトの名無しさん
垢版 |
2019/09/10(火) 00:22:25.45ID:2zzGvcE4
>>219 Perl5

$s = 'AKDAK';
@a = ('^', split'', $s);

$o{$_} //= ++$i for @a;
%e = map{$a[$_] => $a[$_+1]} 0..$#a-1;
@p = sort{$o{$a} <=> $o{$b}} keys %o;

$d{$p[-1]} = $p[-1].'$';
push @p, '$';
$e{'$'} = '';

print "'$s'\n→\n";
for (@p) {
 $v = $e{$_};
 $r = $d{$v} // $v;
 print "$_: $r.\n";
}


実行結果
~ $ perl 15_219.pl
'AKDAK'

^: A.
A: K.
K: D$.
D: A.
$: .
0387デフォルトの名無しさん
垢版 |
2019/09/10(火) 01:20:32.52ID:2zzGvcE4
ほらまぁ
状態遷移を表形式で定型的に定義した方が
言葉の羅列やグラフもどきポンチ絵などで表現するより明確な場面
さまざまなとき
0388デフォルトの名無しさん
垢版 |
2019/09/10(火) 01:22:32.02ID:2zzGvcE4
あいや、表じゃなくて図か。
そしたら、なんとなく依存関係などをややこしいグラフで表現して
ひもつけたとか賜って解釈したような気にさせるとき

自分で考えなよ
0389デフォルトの名無しさん
垢版 |
2019/09/10(火) 02:40:29.88ID:Ik1iUNRF
>>373 javascript
[3,1,4,1,5,9,2,6,5]
.reduce((acc, n, i, arr) => [...acc, arr[i + 1] - n], [])
.slice(0, -1)
0390デフォルトの名無しさん
垢版 |
2019/09/10(火) 08:11:29.51ID:lIijspdS
>>373

>>379 のブロック内で処理するのが分かりやすかったので、Haskellもprint以外の処理をリスト内包表記で完結するようにした。

main = print [y - x | let lst@(_:ls) = [3,1,4,1,5,9,2,6,5], (x,y) <- zip lst ls]

文字数としては >>383 より増えるが、読みやすさ優先。
0392デフォルトの名無しさん
垢版 |
2019/09/10(火) 18:46:19.95ID:CNsNp03m
分かったよじゃあoverlappingPairsCollect実装するよ…

const overlappingPairsCollect = (arr, cb) => {
let head = arr.shift();
const overlappingPairs = [];
for (const value of arr) {
overlappingPairs.push([head, value]);
head = value;
}
return overlappingPairs.map(([a, b]) => cb(a, b));
}

overlappingPairsCollect([3,1,4,1,5,9,2,6,5], (a, b) => b - a);
//=> [-2,3,-3,4,4,-7,4,-1]
0393デフォルトの名無しさん
垢版 |
2019/09/10(火) 19:17:03.68ID:CNsNp03m
ああ… forの前にif (!head) return overlappingPairs; のearly return入れ忘れた…
0396デフォルトの名無しさん
垢版 |
2019/09/10(火) 20:05:04.03ID:9QXTHM58
なるほどjavascriptね!
0398デフォルトの名無しさん
垢版 |
2019/09/10(火) 20:31:26.62ID:ER41jhKS
>>397
コード追加。MakeHogeで困ることあるかなぁ?
あんまりユースケース見えてないから、不具合あったら教えて。
0400デフォルトの名無しさん
垢版 |
2019/09/10(火) 23:08:14.13ID:aMyCuNre
お題
スネークケースをアッパーキャメルケースに変換せよ
アンダースコアを単語の区切りとみなし、単語の先頭は大文字に、先頭以外は小文字に変換すること
また、単語を連結したときに数字が連続する場合はアンダースコアを残すこと

(例)
snake_case => SnakeCase

ODAI00_99_TEST => Odai00_99Test

x_0_x => X0X

UpperCamelCase => Uppercamelcase
0401デフォルトの名無しさん
垢版 |
2019/09/10(火) 23:20:02.02ID:Ik1iUNRF
>>399
allButFirstとallButLastは簡単だけどjsは生き残ってるスクリプト言語にしては珍しく演算子使ったリスト同士の演算が用意されてないのでfnは>>377みたいにキレイに書けない。

const allButFirst = arr => arr.slice(1);
const allButLast = arr => arr.slice(0, -1);
const fn = arr => allButLast(arr).reduce((acc, v, i) => (acc[i] -= v, acc), allButFirst(arr));

fn([3,1,4,1,5,9,2,6,5]);
//=> [-2,3,-3,4,4,-7,4,-1]
0402デフォルトの名無しさん
垢版 |
2019/09/11(水) 00:10:49.73ID:JxGfX2fh
>>400 Perl5

use feature say;
for (<DATA>) {
 say map{ucfirst lc} /((?:\d_\d|[^_\s])+)/g;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase


実行結果
~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
Uppercamelcase
0405デフォルトの名無しさん
垢版 |
2019/09/11(水) 00:44:08.30ID:hWizELa3
>>397
C++むずかしすぎワロタwwwww
0406デフォルトの名無しさん
垢版 |
2019/09/11(水) 00:47:45.94ID:TkJgDVYV
C++とJSとの違いは大雑把に言って、使う型を先に決めるか後で決めるか。という程度だと思う。

オレ、自分の幸福度を上げるために、80行位で問題とくようにしている。
というか、手癖でそれくらいになる。
0407デフォルトの名無しさん
垢版 |
2019/09/11(水) 02:04:01.50ID:hWizELa3
>>400 JavaScript
const fn = s => s.split`_`
.map(([first, ...rest]) => [first.toUpperCase(), rest.join``.toLowerCase()].join``)
.reduce((acc, word) => acc + (/[0-9]{2}/.test(acc[acc.length - 1] + word[0]) ? '_' : '') + word);

fn('snake_case');
//=> "SnakeCase"
fn('ODAI00_99_TEST');
//=> "Odai00_99Test"
fn('x_0_x');
//=> "X0X"
fn('UpperCamelCase');
//=> "Uppercamelcase"
0408デフォルトの名無しさん
垢版 |
2019/09/11(水) 02:47:21.46ID:0/zUYWhl
>>400 Squeak Smalltalk

| fn |

fn := [:str |
| words |
words := str asLowercase subStrings: '_'.
words first capitalized , (words overlappingPairsCollect: [:x :y |
((x last isDigit and: [y first isDigit]) ifTrue: '_' ifFalse: '') , y capitalized
]) join
].

fn value: 'snake_case'. "=> 'SnakeCase' "
fn value: 'ODAI00_99_TEST'. "=> 'Odai00_99Test' "
fn value: 'x_0_x'. "=> 'X0X' "
fn value: 'UpperCamelCase'. "=> 'Uppercamelcase' "
fn value: 'Odai00_9_9Test'. "=> 'Odai00_9_9test' "
0409デフォルトの名無しさん
垢版 |
2019/09/11(水) 06:02:16.09ID:CEu0fvWD
>400 Ruby

f = -> s {s.split(/(?<=\D)_|_(?=\D)/).map(&:capitalize).join}

%w[
   snake_case ODAI00_99_TEST x_0_x UpperCamelCase
].each{|s| puts '%s => %s' % [s, f[s]]}

# =>
snake_case => SnakeCase
ODAI00_99_TEST => Odai00_99Test
x_0_x => X0X
UpperCamelCase => Uppercamelcase
0413デフォルトの名無しさん
垢版 |
2019/09/11(水) 21:27:05.78ID:C94vqLvq
>>400

UpperCamelCaseはそのまま返すべきだろう。
(と言う事で、1文字目が大文字かつ全文に’_’が無い場合は、(恐らくUpperCamelCaseだろうと期待して)そのまま返すようにした)

Haskell

import Data.Char

main = mapM_ (print.f) ["snake_case","ODAI00_99_TEST","x_0_x","UpperCamelCase","notupperCamelCase"]

f [] = []
f lst@(x:_) | and [elem x ['A'..'Z'], (not.elem '_') lst] = lst
f (x:xs) = toUpper x:map toLower a ++ f (map toLower $ f' a b)
where
(a,b) = span (/= '_') xs

f' _ [] = []
f' [] (y:ys) = ys
f' xs lst@('_':y:ys) |and [(isDigit.last) xs, isDigit y] = lst
f' _ (_:ys) = ys


out:

"SnakeCase"
"Odai00_99Test"
"X0X"
"UpperCamelCase"
"Notuppercamelcase"
0414デフォルトの名無しさん
垢版 |
2019/09/11(水) 23:29:56.75ID:sKkTHzOH
>>400 Perl5、>>402-403 の修正、>>413 のように UpperCamelCase など_を含まない文字列はそのまま返す

use feature say;
for(<DATA>) {
@a = split/(?<!\d)_|_(?!\d)|\s/;
say 1 == @a ? @a : map{ucfirst lc} @a;
}
__DATA__
snake_case
ODAI00_99_TEST
x_0_x
UpperCamelCase
_local_vvar_
lavel_style_
OdAi00_9_9TeST


実行結果
~ $ perl 15_400_fix.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
Odai00_9_9Test
0415デフォルトの名無しさん
垢版 |
2019/09/11(水) 23:34:45.60ID:sKkTHzOH
>>414 ゴメン、実行結果貼り間違えた(下記のように最後のOdAi00_9_9TeSTはそのまま出る)

~ $ perl 15_400.pl
SnakeCase
Odai00_99Test
X0X
UpperCamelCase
LocalVvar
LavelStyle
OdAi00_9_9TeST
0416デフォルトの名無しさん
垢版 |
2019/09/11(水) 23:43:35.81ID:sKkTHzOH
>>412 Perl5

@a = a..z;
@x = map{$_-1} grep{$_&1} 1..@a;
@b = @a[@x];
print "[@b]\n";


実行結果
~ $ perl 15_412.pl
[a c e g i k m o q s u w y]
0420デフォルトの名無しさん
垢版 |
2019/09/12(木) 11:37:50.98ID:Cxpf63qu
>>412 JavaScript
[1, 2, 3, 4, 5].filter((val, idx) => (idx + 1) % 2)
//=> [1, 3, 5]
0423デフォルトの名無しさん
垢版 |
2019/09/12(木) 21:30:23.66ID:+vUO8BYK
>>373 J
f =: 2 & (-~/\)

f 3 1 4 1 5 9 2 6 5
_2 3 _3 4 4 _7 4 _1


>>412 J
f =: _2 & ([/\)

f 1 2 3 4 5
1 3 5
0424デフォルトの名無しさん
垢版 |
2019/09/12(木) 21:33:45.75ID:cqw0/uFd
さすがJ
サッパリ分からん
0425デフォルトの名無しさん
垢版 |
2019/09/13(金) 00:40:21.67ID:6zSQdjjj
>>412
せめて、リストの中身は順番と関係無い内容の方が。。。
(例えば"abcde"とか)

Haskell

main = (print.oddlist) [1..5]

oddlist xs = [x | (x,y) <- zip xs [1..], odd y]
0427デフォルトの名無しさん
垢版 |
2019/09/13(金) 13:13:33.48ID:zfsxzWX8
>>412 Tcl
set x {1 2 3 4 5}
set r {}
foreach {a b} $x {set r [concat $r $a]}
puts $r

実行結果
1 3 5
0429デフォルトの名無しさん
垢版 |
2019/09/13(金) 21:37:33.86ID:sQZEDK+j
tcl/tkで「tk部分ははいいがtclがクソ」みたいなのよく見た気がするんだけど、あれどういうとこが根拠なん?
0430デフォルトの名無しさん
垢版 |
2019/09/14(土) 04:14:12.84ID:x5aQTHnU
お題: すべての人民は和平のために火急的に速やかに自己の復元を実現しなければならない。
0431デフォルトの名無しさん
垢版 |
2019/09/14(土) 04:28:39.19ID:BS6VTuNp
>>412 Io
a := list(1, 2, 3, 4, 5)
a select(i, v, i isEven) println

実行結果
list(1, 3, 5)
0432デフォルトの名無しさん
垢版 |
2019/09/14(土) 07:49:29.90ID:/8qdS/t9
>>419

>>420

スレ違いだし、関数型言語だけが再利用性が高いとは言わないけど、
仮にoddlistがリストに対して良く使われる処理なら

[1,2,3,4,5].oddlist()

とか使いたいよね?
確かRubyはそう言う基本クラスにメソッド追加出来たと思うけど(うろ覚え)、
それをライブラリにして公開したいとする。

そうなると名前の競合とか起こり得るので

import mylib

[1,2,3,4,5].mylib.oddlist()

としたいとか、ならないだろうか。

変数と関数は別が良いって思った。

(議論の流れになるなら、別スレに誘導してね)
0434デフォルトの名無しさん
垢版 |
2019/09/14(土) 08:24:26.09ID:Hd+E1riT
>>429
スレチだが教えてやる
数字が文字列として扱われて実行時にパースされるから馬鹿みたいに遅いことだ
0436デフォルトの名無しさん
垢版 |
2019/09/14(土) 19:11:38.33ID:Rj/aIpzV
>>426
クリプタって何?
0437デフォルトの名無しさん
垢版 |
2019/09/14(土) 19:29:31.44ID:daGZRaa0
ザラキ唱える人じゃないか
0440デフォルトの名無しさん
垢版 |
2019/09/14(土) 21:03:45.14ID:KmV3vhTN
cryptoなんだからcryptorじゃないの?
0446デフォルトの名無しさん
垢版 |
2019/09/14(土) 22:26:10.43ID:hhxdRhHk
EmScriptEn
0448デフォルトの名無しさん
垢版 |
2019/09/14(土) 23:35:07.41ID:1m2PUwRG
>>432
釈迦に説法は空しいし恥ずかしいのでやめよう
どう考えてもおまいより>>419のほうが力量が上
議論の余地は無いので安心していい
0449デフォルトの名無しさん
垢版 |
2019/09/15(日) 10:23:47.74ID:4T3I9hnw
>>426 Perl 5.30

# -*- coding: utf-8 -*-
no warnings 'experimental::signatures';
use feature qw(say signatures); # lexical_subs);
sub ReversibleHash_Encode($S, $C) {
 @a = unpack 'C*', $S;
 $l = @c = split '', $C;
 my $o; ++$o while $l**$o < 256; #my $o = 1 + log(256)/log $l;
 use integer;
 my sub _enc($i) { join '', reverse map{($i, $m) = ($i/$l, $i%$l); $c[$m]} 1..$o }
 %e = map{$_ => '%'._enc $_} 0..255;
 join '', map{$e{$_}} @a;
}
sub ReversibleHash_Decode($S, $C) {
 @s = $S =~ /(%\w+)/g;
 %d = map{$e{$_} => $_ } keys %e;
 pack 'C*', map{$d{$_}} @s;
}
say $t = ReversibleHash_Encode 'ウィキペディア', '0123456789';
say $s = ReversibleHash_Decode $t, '0123456789';
$Ch = "abcdefghijklnmopqrstuvwxyz0123456789";
say $t = ReversibleHash_Encode $s, $Ch;
say $s = ReversibleHash_Decode $t, $Ch;


実行結果
~ $ perl 15_426.pl
%227%130%166%227%130%163%227%130%173%227%131%154%227%131%135%227%130%163%227%130%162
ウィキペディア
%gl%dw%ew%gl%dw%et%gl%dw%e3%gl%dx%ek%gl%dx%d1%gl%dw%et%gl%dw%es
ウィキペディア
0451デフォルトの名無しさん
垢版 |
2019/09/15(日) 11:42:49.90ID:4T3I9hnw
>>412 Prl5 (≦5.28)、配列の添字を0始まり以外にする$[ (array_base feature)を使用

$[ = 1;
@a = a..z;
@x = grep{$_ & 1} 1..@a;
@b = @a[@x];
print "@b\n";


実行結果
~ $ perl 15_412_array_base.pl
a c e g i k m o q s u w y


※5.12〜5.28では$[は非推奨になり、設定すると
Use of assignment to $[ is deprecated at 15_412_2.pl line 1.
というwarningが出ます、5.30からは$[の設定できなくなりました
0452デフォルトの名無しさん
垢版 |
2019/09/15(日) 15:11:01.79ID:G44yhCx+
>>412 R
要素が 奇数個だとワーニングが出ちゃうけど

a<-1:9
print(matrix(a,2)[1,])
0453デフォルトの名無しさん
垢版 |
2019/09/15(日) 15:41:23.29ID:5s85lzPu
鰐んぐ
魚にんぐ
0455デフォルトの名無しさん
垢版 |
2019/09/16(月) 04:35:46.66ID:NOoJUh0d
お題: 文字列が渡されるので文字vの左隣の文字を小文字、右隣の文字を大文字に変換しなさい
0460デフォルトの名無しさん
垢版 |
2019/09/16(月) 15:26:20.20ID:eLMc9ESO
お題:1から100までの自然数がある。ランダムに30個抜き出せ。
0461デフォルトの名無しさん
垢版 |
2019/09/16(月) 15:30:00.20ID:4Q9Ti1cA
>>460 Ruby

p [*1..100].sample(30)

# => [13, 29, 96, 79, 78, 17, 89, 88, 69, 51, 44, 16, 54, 62,
47, 19, 45, 26, 43, 40, 91, 32, 30, 86, 84, 85, 15, 6, 41, 95]
0462デフォルトの名無しさん
垢版 |
2019/09/16(月) 16:08:30.72ID:ShPpQTCq
>>460
Kotlin script

println((1..100).toMutableList().apply {shuffle()}.slice(0..29).joinToString())
0463デフォルトの名無しさん
垢版 |
2019/09/16(月) 16:53:32.17ID:P3J/MfSa
>>460 Perl5、※選択に重複がないようにした

@a = 1..100;
use List::Util shuffle;
@b = (shuffle @a)[0..29];
print "@b\n";


実行結果
~ $ perl 15_460.pl
64 90 99 41 46 11 25 23 2 12 43 42 24 96 59 44 19 7 92 47 15 86 84 68 13 100 76 34 87 9
0464デフォルトの名無しさん
垢版 |
2019/09/16(月) 16:59:32.09ID:ZgnCsjLO
>>460 J
(30?100) { >: i. 100
0465デフォルトの名無しさん
垢版 |
2019/09/16(月) 17:36:43.98ID:enU8we0d
>>464
なるほど全然わからん
0467デフォルトの名無しさん
垢版 |
2019/09/17(火) 17:37:59.85ID:IoM9hprN
プログラム言語標準の文字列(e.g. java.lang.String) が与えられ、ランレングス圧縮した結果をプログラム言語標準の文字列で返す関数を作成してください。ただし、入力に数字が入っていた場合のケースは考慮しなくても構いません。
テストケース(関数名 = f)
f("あいうえお") -> "あいうえお"
f("ああいいうう") -> "あ2い2う2"
f("あいうあいう") -> "あいうあいう"
0470デフォルトの名無しさん
垢版 |
2019/09/17(火) 19:42:43.30ID:N7hzq5cx
python に あ2い2う2
のようにカウンティング結果を含んだリストを返すライブラリが
はいっていたな
0472デフォルトの名無しさん
垢版 |
2019/09/17(火) 21:47:22.78ID:s7WBnLNZ
>>467 JavaScript
const f = s => [...s]
.reduce((acc, ch) => {
const [lastCh, n = 1] = acc.pop() || [];
if (!lastCh) return [[ch]];
if (lastCh == ch) {
return [...acc, [lastCh, n + 1]];
} else {
return [...acc, [lastCh, n == 1 ? '' : n], [ch]];
}
}, [])
.flat(Infinity)
.join``;
0473デフォルトの名無しさん
垢版 |
2019/09/17(火) 23:32:50.16ID:htBCID9n
>>467 Perl5

use utf8;
binmode STDOUT, ':encoding(utf-8)';
for (qw{あいうえお ああいいうう あいうあいう あうあうあー ああああ}) {
 my $s;
 while (/((.)\g-1*)/g) {
  $s .= $2;
  $s .= $l if 1 < ($l = length $1);
 }
 print "$s\n";
}


実行結果
~ $ perl 15_467.pl
あいうえお
あ2い2う2
あいうあいう
あうあうあー
あ4
0474デフォルトの名無しさん
垢版 |
2019/09/17(火) 23:58:08.34ID:htBCID9n
>>467 Perl5、しくった、お題は「関数を作れ」だった…orz

use utf8;
binmode STDOUT, ':encoding(utf-8)';
sub f {
 my $s;
 while (/((.)\g-1*)/g) {
  $s .= $2;
  $s .= $l if 1 < ($l = length $1);
 }
 $s
}
for (qw{あいうえお ああいいうう あいうあいう あうあうあー ああああ}) {
 print f($_)."\n";
}


~ $ perl 15_467_f.pl
あいうえお
あ2い2う2
あいうあいう
あうあうあー
あ4
0475デフォルトの名無しさん
垢版 |
2019/09/18(水) 10:00:45.90ID:Qm7jF2Kv
>>467 Ruby

f = -> s {s.gsub(/(.)\1+/){[$1, $&.size].join}}

%w[あいうえお ああいいうう あいうあいう あうあうあー ああああ].each{|s| puts [s, f[s]].join(' => ')}
# =>
あいうえお => あいうえお
ああいいうう => あ2い2う2
あいうあいう => あいうあいう
あうあうあー => あうあうあー
ああああ => あ4
0476デフォルトの名無しさん
垢版 |
2019/09/18(水) 10:37:56.54ID:Qm7jF2Kv
>>432 Ruby

module Hoge
  refine Array do
    def oddlist
      select.with_index{|s, i| i.odd?}
    end
  end
end

class C1
  p [0, 1, 2, 3, 4].oddlist rescue p$!
  # => #<NoMethodError: undefined method `oddlist' for []:Array>
end

class C2
  using Hoge
  p [0, 1, 2, 3, 4].oddlist
  # => [1, 3]
end
0478デフォルトの名無しさん
垢版 |
2019/09/18(水) 17:30:11.83ID:quy23QLp
むずかし過ぎワロタwww
俺にC++は絶対ムリwwwww
0479デフォルトの名無しさん
垢版 |
2019/09/18(水) 17:40:05.70ID:GIOjMe2C
>>478
自分の福祉のために圧迫しない程度に冗長に書いてるけど、ショートコーディングももちろんできるよ。
記憶力と直感と若干の経験で書いている。
0485蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/19(木) 03:17:38.21ID:fzYUHnaE
お題: 明日の東京都の天気を教えてくれる「お天気ねえさん」を実装せよ。

https://www.drk7.jp/weather/
ここのXMLデータを参考に、明日の東京都の天気を優しく説明してくれるような説明テキストを生成せよ。

例) 明日XX月YY日の東京都の天気は○○です。○○注意報が出ています。傘を忘れないでね。
0486蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/19(木) 03:40:46.99ID:fzYUHnaE
ある種のデータは石油のように重要だから、データ自動生成は条件が揃えばお金儲けにつながる。まあ、とことんチャレンジしたまえ。
0490デフォルトの名無しさん
垢版 |
2019/09/19(木) 21:01:33.69ID:Iq+eqHsU
>>467 Lua
マルチバイト文字には対応していない。
function f(s)
   local r,c="",1
   for i=1,#s do
   if s:sub(i,i)==s:sub(i+1,i+1) then
   c=c+1
   else
     r=r..s:sub(i,i)
   if c>1 then
   r=r..c
   c=1
   end
   end
   end
   return(r)
end
print(f("aaabbc"))

実行結果
a3b2c
0492デフォルトの名無しさん
垢版 |
2019/09/19(木) 21:20:20.35ID:7Zlc7qce
>>467
perl5
デバッガが日本語で化けるんで英語だけ
print("aabbccddd" =~ s{ (.) \1* }{ "$1" . length"$&" }xgre);
a2b2c2d3
0493デフォルトの名無しさん
垢版 |
2019/09/20(金) 00:35:55.08ID:brDhMnbX
>>485 Perl5 (LWP::UserAgent、LWP::Protocol::https、XML::Simple のinstallしてあるPCで)

# -*- coding: utf-8 -*-
use utf8; use Data::Dump 'dump'; use Data::Dumper;
binmode STDOUT, ':encoding(utf-8)';
use feature say;
$pno = 13; # ex) 01:北海道, 13:東京, 20:長野, 47:沖縄
$url = "https://www.drk7.jp/weather/xml/$pno.xml";;
require LWP::UserAgent; # with LWP::Protocol::https
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko');
$xml = LWP::UserAgent->new->get($url)->content;
use XML::Simple;
my $xs = new XML::Simple; #(keyattr => ['area']); # (forcearray => ['info'], keyattr => ['pref']);
my $data = $xs->XMLin($xml);
say "$_: $data->{$_}" for qw{title link description pubDate author managingEditor};
$pref = $data->{pref}; say "都道府県: $pref->{id}";
%area = %{$pref->{area}};
for $region (keys %area) {
 $area = $area{$region};
 printf "地域: $region (緯度=%s, 経度=%s)\n", @{$area->{geo}}{qw{lat long}};
 for $info (@{$area->{info}}) {
  say " $info->{date} 天気:$info->{weather} (画像 $info->{img})";
  $info->{$_} and say ' 'x9, $info->{$_} for qw{weather_detail wave};
  %temp = %{$info->{temperature}};
  say ' 'x6, " 気温[$temp{unit}]: ", join 'から', sort map{"$_->{content}°"} @{$temp{range}};
  %rfc = %{$info->{rainfallchance}};
  say ' 'x6, " 降水確率 : ", join ', ', map{"$_->{hour}時:$_->{content}$rfc{unit}"} @{$rfc{period}};
 }
}
0494デフォルトの名無しさん
垢版 |
2019/09/20(金) 00:38:16.81ID:brDhMnbX
実行結果(例)

~ $ perl 15_485.pl
title: weather forecast xml
link: http://www.drk7.jp/weather/xml/13.xml
description: 気象庁の天気予報情報を XML で配信。1日1回 AM 6:00 ごろ更新。
pubDate: Thu, 19 Sep 2019 18:00:01 +0900
author: 気象庁
managingEditor: drk7.jp
都道府県: 東京都
地域: 伊豆諸島南部 (緯度=33.2419, 経度=139.8418)
2019/09/19 天気:くもり時々雨 (画像 http://www.drk7.jp/MT/images/MTWeather/202.gif)
         北東の風 やや強く くもり 夜のはじめ頃 雨 八丈島 では 夜遅く 雷を伴い 激しく 降る
         波 3メートル うねり を伴う
       気温[摂氏]: 21°から23°
       降水確率 : 00-06時:0%, 06-12時:80%, 12-18時:50%, 18-24時:50%
2019/09/20 天気:くもり時々雨 (画像 http://www.drk7.jp/MT/images/MTWeather/203.gif)
         東の風 やや強く くもり 一時 雨
         波 4メートル のち 3メートル ただし 三宅島 では 3メートル
       気温[摂氏]: 20°から23°
       降水確率 : 00-06時:50%, 06-12時:60%, 12-18時:60%, 18-24時:50%
2019/09/21 天気:くもり一時雨 (画像 http://www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 21°から26°
       降水確率 : 00-06時:70%, 06-12時:70%, 12-18時:70%, 18-24時:70%
2019/09/22 天気:くもり一時雨 (画像 http://www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 23°から29°
       降水確率 : 00-06時:50%, 06-12時:50%, 12-18時:50%, 18-24時:50%
2019/09/23 天気:くもり一時雨 (画像 http://www.drk7.jp/MT/images/MTWeather/202.gif)
       気温[摂氏]: 25°から29°
       降水確率 : 00-06時:50%, 06-12時:50%, 12-18時:50%, 18-24時:50%
…(後略
0496デフォルトの名無しさん
垢版 |
2019/09/20(金) 04:34:57.12ID:vpcMUgg5
お題

以下の、列区切りが空白である入力文字列を、
最後の列の数値が、小さい順番で、行を並べ替えよ

答えは、上下が反転する

a b c 44
x y 33
z 22
11
0497デフォルトの名無しさん
垢版 |
2019/09/20(金) 07:37:10.18ID:ZVVuMGcz
>>496
cat text
a b c 44
x y 33
z 22
11

cat text | perl -pe 's/.*? \s? (\d+)/$1:$&/xgm' | sort -n | perl -pe 's/^\d+://'
11
z 22
x y 33
a b c 44
0499デフォルトの名無しさん
垢版 |
2019/09/20(金) 09:52:16.00ID:PYkAN+VQ
>>496 Ruby

puts <<~EOS.each_line.sort_by{|s| s[/\S+\n?/].to_i}
  a b c 44
  x y 33
  z 22
  11
EOS

# =>
11
z 22
x y 33
a b c 44
0501デフォルトの名無しさん
垢版 |
2019/09/20(金) 14:08:52.93ID:qcElLt/f
>>500
初手でウエイト入れないで読みに行って、アクセス規制法に引っかかるのとかありそう。
鯖落としたら、怒られるからな。警察に。
0502デフォルトの名無しさん
垢版 |
2019/09/20(金) 15:01:57.40ID:8HAndpSr
>>496 J
echo@>(/: {: @:(0&".) &.>) <;._2 stdin ''
0503デフォルトの名無しさん
垢版 |
2019/09/20(金) 15:07:26.20ID:uyZD/oLi
http://appmarketinglabo.net/osaka-bakurotalk/
Q、hamonさん、ここだけの面白い話は何かありますか?

hamon:
絶対にこれをつくれば海外で10万DLされるという「超鉄板ジャンル」がある。
それは「3Dのリアルな人間をつかった実在のスポーツゲーム」、中身がクソでも10万DLはされる。
「ボクシングvs腕相撲」という実質もぐらたたきのようなゲームが30万DLいった。
「スキージャンプ アルティメイタム」というゲームが10万DLくらい。
マイナーなスポーツでもそのような結果なので、競技人口のベスト10のスポーツを調べてつくれば10万DLは固い。
普通につくるとコストがかかるが、UNITYでつくればストア上でモーションも売っているのでかなり稼げると思う。
0504デフォルトの名無しさん
垢版 |
2019/09/21(土) 00:27:57.30ID:dB3ZeAcF
お題: 同じ文字列がいくつあるか数えるプログラムを作成しなさい。
※出力は出現回数順でソートされている必要はありません。

入力
Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga

出力
Hoge 2
Fuga 3
Foo 2
Bar 1
0505デフォルトの名無しさん
垢版 |
2019/09/21(土) 00:39:37.54ID:6wFtRpPA
>>504 Perl5

$h{$_}++ for qw{Hoge Fuga Foo Fuga Foo Hoge Bar Fuga};
print "$_ $h{$_}\n" for keys %h;


実行結果
~ $ perl 15_504.pl
Fuga 3
Hoge 2
Bar 1
Foo 2
0507デフォルトの名無しさん
垢版 |
2019/09/21(土) 00:46:28.49ID:YPz6oCKs
>>504
cat text
Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga

cat text | perl -ne '$dirs{ s/\R//r } += 1; END{for $key (keys %dirs) {printf "%-4s %s\n", $key, $dirs{$key} } }'
Foo 2
Fuga 3
Bar 1
Hoge 2
0508デフォルトの名無しさん
垢版 |
2019/09/21(土) 00:50:19.09ID:Ei1MM/mp
うほっ。C++のunordered_mapはオーダー要求しないから、そこを使って最適化物故むとかやるんかいな。
VCとGCCと挙動違う。
0509デフォルトの名無しさん
垢版 |
2019/09/21(土) 00:59:47.45ID:6wFtRpPA
>>496 Perl5

sub f {$_[0] =~ /(\d+)/; $1};
print sort{ f($a) <=> f($b) } <DATA>;
__DATA__
a b c 44
x y 33
z 22
11


実行結果
~ $ perl 15_496.pl
11
z 22
x y 33
a b c 44
0512デフォルトの名無しさん
垢版 |
2019/09/21(土) 05:37:07.36ID:RmdAWOHY
>>504 Ruby
a=readlines.map(&:chomp)
a.uniq.each{|v| puts("#{v} #{a.count(v)}")}
0514デフォルトの名無しさん
垢版 |
2019/09/21(土) 16:12:27.45ID:ZyFDPzPp
お題:正の整数が与えられるので、英語の序数に変換せよ
1 => 1st
23 => 23rd
12 => 12th
0515デフォルトの名無しさん
垢版 |
2019/09/21(土) 16:40:16.71ID:6wFtRpPA
>>514 Perl5

%o = qw{1 st 2 nd 3 rd};
$o = $o{$_}//'th', print "$_$o\n" for 1..10,12,23;

実行
~ $ perl 15_514.pl
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
12th
23th
0519デフォルトの名無しさん
垢版 |
2019/09/21(土) 19:12:36.02ID:AojYT9zq
1st 2nd 3rd
11th 12th 13th
21st 22nd 23rd
101st 102nd 103rd
111th 112th 113th
121st 122nd 123rd

皆さんここらへん大丈夫?
0520デフォルトの名無しさん
垢版 |
2019/09/21(土) 19:41:28.17ID:6wFtRpPA
>>514 Perl5、>>519 で指摘された誤りの修正 テヘペロ

%h = qw{1 st 2 nd 3 rd};
for (1..4,11,12,13,21,22,23,101,102,103,111,112,113,121,122,123) {
 /(\d?)(\d)$/;
 printf "$_ => $_%s\n", $1 eq 1 ? 'th' : $h{$2}//'th';
}


実行結果
~ $ perl 15_514.pl
1 => 1st
2 => 2nd
3 => 3rd
4 => 4th
11 => 11th
12 => 12th
13 => 13th
21 => 21st
22 => 22nd
23 => 23rd
101 => 101st
102 => 102nd
103 => 103rd
111 => 111th
112 => 112th
113 => 113th
121 => 121st
122 => 122nd
123 => 123rd
0521さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/21(土) 20:51:54.21ID:BmADEcuL
お題: 与えられた西暦年月日を年号年月日に変換しなさい。ただし、変換するのは大正時代から令和までとし、範囲外であればERRORを表示しなさい。
0522さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/21(土) 21:04:33.10ID:BmADEcuL
お題: YYYY/MM/DD形式で与えられた西暦年月日の文字列が正しい年月日を表しているかどうか判定せよ。
0524デフォルトの名無しさん
垢版 |
2019/09/21(土) 22:12:07.89ID:y97V3EOz
>>522 Perl5

use Time::Piece;
for (<DATA>) {
 chomp;
 my $t;
 eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')};
 $t //= 'Invalid';
 print "$_: $t\n";
}
__DATA__
1970/01/05
1990/12/31
2019/04/28
2019/05/01
1920/02/29
0000/13/32


実行結果
1970/01/05: Mon Jan 5 00:00:00 1970
1990/12/31: Mon Dec 31 00:00:00 1990
2019/04/28: Sun Apr 28 00:00:00 2019
2019/05/01: Wed May 1 00:00:00 2019
1920/02/29: Sun Feb 29 00:00:00 1920
0000/13/32: Invalid
0525524
垢版 |
2019/09/21(土) 22:29:42.44ID:y97V3EOz
>>524

Time::Piece->strptime は
1900/01/01 よりも前の日付だと
正しい西暦の年月日を入力しても
parse結果が不定となってしまうということがさっき分かりました。
したがって残念ながら>>524のcodeは>>522の題意を満たしているとは
言いがたいものでした。ゴメンね〜
0527蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/21(土) 22:44:04.41ID:7nrsNPcd
令和1年を令和元年にしないといけないという落とし穴があるようだ。
0528デフォルトの名無しさん
垢版 |
2019/09/21(土) 22:45:06.50ID:Awwp+36u
>>504 Ruby

p $<.map(&:chomp).yield_self{|e| e.uniq.map{|v| [v, e.count(v)]}}

# => [["Hoge", 2], ["Fuga", 3], ["Foo", 2], ["Bar", 1]]
0530デフォルトの名無しさん
垢版 |
2019/09/22(日) 01:12:38.88ID:35++XhB6
>>496 Squeak Smalltalk

#('a b c 44' 'x y 33' 'z 22' '11') sortBy: [:x | x splitInteger last] ascending

"=> an OrderedCollection('11' 'z 22' 'x y 33' 'a b c 44') "
0531デフォルトの名無しさん
垢版 |
2019/09/22(日) 01:25:15.35ID:35++XhB6
>>504 Pharo/Squeak Smalltalk

'Hoge
Fuga
Foo
Fuga
Foo
Hoge
Bar
Fuga' lines asBag sortedElements

"=> {'Bar'->1 . 'Foo'->2 . 'Fuga'->3 . 'Hoge'->2} "
0532デフォルトの名無しさん
垢版 |
2019/09/22(日) 01:56:51.52ID:35++XhB6
>>467 Pharo/Squeak Smalltalk

| fn |

fn := [:str | String streamContents: [:ss |
(str as: RunArray) runsAndValuesDo: [:n :x |
ss nextPut: x; nextPutAll: (n = 1 ifTrue: [''] ifFalse: [n asString])
]
]].

fn value: 'あいうえお'. "=> 'あいうえお' "
fn value: 'ああいいうう'. "=> 'あ2い2う2' "
fn value: 'あいうあいう'. "=> 'あいうあいう' "
0533デフォルトの名無しさん
垢版 |
2019/09/22(日) 08:19:31.82ID:uuB9aO9i
>>514 Ruby

suffixes = %w[th st nd rd]
f = -> n {(-(-((n - 10) / 10 % 10) / 9)) * 41 / (n % 10 * 10 + 11) * (n % 10)}

[
  1, 2, 3, 4, 11, 12, 13, 21, 22, 23, 101, 102, 103, 111, 112, 113, 121, 122, 123
].each{|v| puts '%1$d => %1$d%2$s' % [v, suffixes[f[v]]]}

# =>
1 => 1st
2 => 2nd
3 => 3rd
4 => 4th
11 => 11th
12 => 12th
13 => 13th
21 => 21st
22 => 22nd
23 => 23rd
101 => 101st
102 => 102nd
103 => 103rd
111 => 111th
112 => 112th
113 => 113th
121 => 121st
122 => 122nd
123 => 123rd
0536デフォルトの名無しさん
垢版 |
2019/09/22(日) 09:16:58.95ID:W3ewN8v1
(dolist (n (list 1 2 3 11 12 13 21 22 23 101 102 103 111 112 113 121 122 123) ) (format t "~:R~%" n))
first
second
third
eleventh
twelfth
thirteenth
twenty-first
twenty-second
twenty-third
one hundred first
one hundred second
one hundred third
one hundred eleventh
one hundred twelfth
one hundred thirteenth
one hundred twenty-first
one hundred twenty-second
one hundred twenty-third
0537デフォルトの名無しさん
垢版 |
2019/09/22(日) 09:21:41.49ID:uuB9aO9i
>>534-535
ラムダ式.
任意の自然数 n に対して次の式は n の序数詞の末尾が th なら 0, st なら 1, nd なら 2, rd なら 3 を返す.(除算は切り捨て)
(-(-((n - 10) / 10 % 10) / 9)) * 41 / (n % 10 * 10 + 11) * (n % 10)
0538デフォルトの名無しさん
垢版 |
2019/09/22(日) 10:14:00.13ID:UtdvR7ZT
>>514 Lua
function f(n)
   local r,x
   x=n%10
   if n%100-x==10 or x<1 or x>3 then
   r="th"
   else
   r=({"st","nd","rd"})[x]
   end
   return n..r
end
0539デフォルトの名無しさん
垢版 |
2019/09/22(日) 11:43:05.12ID:OEThTvH6
>>514 JavaScript
const f=n=>n+=[,'st','nd','rd'][n%100>>3^1&&n%10]||'th'
実行結果略
0540デフォルトの名無しさん
垢版 |
2019/09/22(日) 11:51:21.39ID:OEThTvH6
>>522, >>521 JavaScript
const isValid = seireki => {
let check
try {
check = new Intl
.DateTimeFormat('ja-JP', {year: 'numeric', month: '2-digit', day: '2-digit'})
.format(new Date(seireki))
} catch (e) { return false }
return seireki === check ? true : false
}
const seirekiToWareki = seireki => {
if (!isValid(seireki)) return 'ERROR'
const wareki = new Intl
.DateTimeFormat('ja-JP-u-ca-japanese', {era: 'long', year: 'numeric', month: 'numeric', day: 'numeric'})
.format(new Date(seireki))
.replace(/(正|和|成)1(年)/, '$1元$2')
return ['大正', '昭和', '平成', '令和'].includes(wareki.slice(0, 2)) ? wareki : 'ERROR'
}
`1979/01/05
1990/12/31
2019/04/28
2019/05/01
1920/02/29
0000/13/32`
.split`\n`.forEach(seireki => {console.log(seirekiToWareki(seireki))})
実行結果:
昭和54年1月5日
平成2年12月31日
平成31年4月28日
令和元年5月1日
大正9年2月29日
ERROR
0541デフォルトの名無しさん
垢版 |
2019/09/22(日) 14:55:10.69ID:yzO2ACAf
>>521-523 Perl5

use Time::Piece; #use Data::Dump 'dump';
@fy = (['2019/05/01', '令和'], ['1989/01/08', '平成'], ['1926/12/25', '昭和'], ['1912/07/30', '大正']);
$$_[0] = Time::Piece->strptime($$_[0], '%Y/%m/%d') for @fy;
for (qw{1970/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 1912/07/29 2019/02/29}) {
 my ($t, $t0, $era, $nen);
 eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')};
 if ($t and $t->strftime('%Y/%m/%d') eq $_) {
  do {($t0, $era) = @$_, last if $$_[0] <= $t} for @fy;
  if ($t0) {
   $nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年' if $t0;
   $t = "$era$nen".$t->mon.'月'.$t->mday.'日';
  } else {
   $t = 'ERROR';
  }
 } else {
  $t = 'Invalid';
 }
 print "$_: $t\n";
}

実行結果
~ $ perl 15_521.pl
1970/01/05: 昭和45年1月5日
1990/12/31: 平成2年12月31日
2019/04/28: 平成31年4月28日
2019/05/01: 令和元年5月1日
1920/02/29: 大正9年2月29日
1912/07/29: ERROR
2019/02/29: Invalid
0543デフォルトの名無しさん
垢版 |
2019/09/22(日) 15:13:26.78ID:yzO2ACAf
>>541
$nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年' if $t0;
の「 if $t0」も削除し忘れだな、ゴメンチャイ
0545デフォルトの名無しさん
垢版 |
2019/09/22(日) 17:24:37.46ID:W3ewN8v1
無駄に否定演算子で分かりにくくしている
if (!arg_reverse)
r = sd_journal_next_skip(j, 1 + after_cursor);
else
r = sd_journal_previous_skip(j, 1 + after_cursor);
0547デフォルトの名無しさん
垢版 |
2019/09/22(日) 18:17:09.14ID:yzO2ACAf
>>521 Perl5 >>541 を少しコンパクトにしてみた

use Time::Piece;
@fy = (['2019/05/01','令和'],['1989/01/08','平成'],['1926/12/25','昭和'],['1912/07/30','大正']);
$$_[0] = Time::Piece->strptime($$_[0], '%Y/%m/%d') for @fy;
for (qw{1970/01/05 1990/12/31 2019/04/28 2019/05/01 1920/02/29 1912/07/29 2019/02/29}) {
 my ($t, $t0, $era, $nen);
 eval {$t = Time::Piece->strptime($_, '%Y/%m/%d')};
 $s = 'Invalid';
 if ($t and $t->strftime('%Y/%m/%d') eq $_) {
  do {($t0, $era) = @$_, last if $$_[0] <= $t} for @fy;
  $s = 'ERROR';
  if ($t0) {
   $nen = ($y = $t->year - $t0->year, $y ? $y + 1 : '元').'年';
   $s = "$era$nen" . $t->mon . '月' . $t->mday . '日';
  }
 }
 print "$_: $s\n";
}
0548蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 20:58:52.87ID:Pb++lLAf
お題: マイドキュメントにある全てのファイルの更新日時を取得し、曜日ごとに平均時刻を集計せよ。
0549デフォルトの名無しさん
垢版 |
2019/09/22(日) 21:11:37.57ID:PDMeYfrK
マイドキュメントがなかった
0550蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 21:23:02.16ID:Pb++lLAf
お題: あるフォルダにある全てのファイルの更新日時を全て同じ日時にリセットせよ。
0552蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 21:35:34.35ID:rZK31NHQ
※未来の日時にするとMakefileなどで不具合の原因になるかもしれないので、やめよう。必ず過去の日付で。
0554蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 22:00:19.44ID:rZK31NHQ
>>553
カレンダー苦手?
そりゃごめんね。誰でも解けるような問題解いて面白い? もしかして
0557デフォルトの名無しさん
垢版 |
2019/09/22(日) 22:23:23.82ID:W3ewN8v1
>>548
\ls -l --time-style=+%a:%T ~/ | perl -lane 'print $F[5]' | sed "/^$/d" | perl -F: -lane '{++$i{$F[0]}; $acc{$F[0]} += $F[1]*3600 + $F[2] *60 + $F[3] }END{ print "$_ ". $acc{$_}/$i{$_} . " seconds" for keys %acc}'
日 49262.7 seconds
金 52984.3125 seconds
火 56316.8461538462 seconds
木 47056.3333333333 seconds
月 53660.7894736842 seconds
土 49998.1538461538 seconds
水 48117.5 seconds
0559蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 22:44:17.87ID:rZK31NHQ
お題: 自分のプログラムファイルが何バイトかを表示せよ。
0560デフォルトの名無しさん
垢版 |
2019/09/22(日) 22:48:43.53ID:Yf8464Y3
>>548 Perl5、なお>>550は(utimeを使えばできますが)回答は作成いたしません

use File::Find 'find';
sub hier {
 my $mtime = (lstat)[9];
 push @epochs, $mtime if -f _;
}
find({wanted => \&hier}, "$ENV{USERPROFILE}/My Documents");
@w = ([],[],[],[],[],[],[]);
for (@epochs) {
 ($sec, $min, $hour, $wday) = (localtime $_)[0..2,6];
 push @{$w[$wday]}, 3600*$hour + 60*$min + sec;
}
use List::Util 'sum';
use Time::Piece;
@dw = qw(日 月 火 水 木 金 土);
for (0..6) {
 $n = @{$w[$_]};
 $mean = sum(@{$w[$_]}) / $n;
 $s = Time::Piece->new($mean);
 printf "$dw[$_](%4d): %s\n", $n, $s->hms;
}

実行結果
~ $ perl 15_548.pl
日( 104): 21:04:43
月( 94): 22:57:25
火( 46): 21:41:46
水( 298): 12:55:47
木( 322): 05:04:39
金(2020): 07:01:42
土(1650): 22:50:54
0563蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 23:00:26.05ID:rZK31NHQ
>>559
はいはい、模範解答出せばいいんでしょ?

// C++/Win32
#include <windows.h>
#include <stdio.h>
int main(void)
{
char buf[MAX_PATH];
GetModuleFileNameA(NULL, buf, MAX_PATH);
WIN32_FIND_DATAA find;
HANDLE hFind = FindFirstFileA(buf, &find);
printf("%ld bytes", find.nFileSizeLow);
FindClose(hFind);
return 0;
}
0564蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/22(日) 23:03:43.50ID:rZK31NHQ
>>559 別解ね。
/* C */
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fp = fopen(argv[0], "rb");
fseek(fp, 0, SEEK_END);
printf("%ld bytes\n", ftell(fp));
fclose(fp);
return 0;
}
0566デフォルトの名無しさん
垢版 |
2019/09/22(日) 23:25:59.86ID:35++XhB6
>>514 Pharo/Squeak Smalltalk

| suffixes fn |

suffixes := #(st nd rd), (Array new: 7 withAll: #th).
suffixes := (0 to: 9) gather: [:idx | suffixes].
suffixes from: 11 to: 13 put: #th.

fn := [:n | n asString, (suffixes atWrap: n)].

fn value: 1. "=> '1st' "
fn value: 23. "=> '23rd' "
fn value: 12. "=> '12th' "
0567デフォルトの名無しさん
垢版 |
2019/09/22(日) 23:32:48.92ID:Yf8464Y3
>>560 修正、0割回避、localtimeが返すepochのmtimeはUTCベースなのでTZ設定追加し9時間ずれ対策

$ENV{TZ} = 'UTC';
use File::Find 'find';
use Time::Piece;
sub hier {
 my $mtime = (lstat)[9];
 push @epochs, $mtime if -f _;
}
find({wanted => \&hier}, "$ENV{USERPROFILE}/My Documents");
print "Number of files = " . @epochs . "\n";
@w = ([],[],[],[],[],[],[]);
for (@epochs) {
 ($sec, $min, $hour, $wday) = (localtime $_)[0..2,6];
 push @{$w[$wday]}, 3600*$hour + 60*$min + sec;
}
use List::Util 'sum';
@dw = qw(日 月 火 水 木 金 土);
for (0..6) {
 $n = @{$w[$_]};
 if ($n) {
  $mean = sum(@{$w[$_]}) / $n;
  $s = Time::Piece->new($mean);
  printf "$dw[$_](%4d): %s\n", $n, $s->hms;
 }
}
0568蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/23(月) 00:23:07.10ID:JAc5gnVl
>>548
出題の狙い。犯罪捜査において被疑者または関係者の生活パターンを知りたいときに、パソコンのファイルの日時の統計のデジタル鑑識により、パソコンの使用実態が類推可能であることを示すものである。
0569デフォルトの名無しさん
垢版 |
2019/09/23(月) 00:28:46.25ID:GyCF+Do4
出勤とか寝る時間があまり変わらないという仮定で
同一人物の疑いがある2つのコテハンを
数百スレ分から時間別書き込み頻度から検証したことがあるが
それにくらべると得られる情報少なすぎて草
0571デフォルトの名無しさん
垢版 |
2019/09/23(月) 01:01:29.40ID:ZSRjXCoe
>>568
朝と夜に作ったファイルの平均は昼になるし
ダウンロードした大規模なOSSのアーカイブを展開した物とか入っているんで
曜日ごとの平均時刻じゃー何の傾向も分かりません
0572デフォルトの名無しさん
垢版 |
2019/09/23(月) 01:43:06.73ID:ZSRjXCoe
>>567
そうじゃねぇだろ、file systemのmtimeはUTCベースなのに
わざわざlocaltimeでTZ=JST_9の日時に変換してから
時分秒だけTime::Pieceに食べさせるから
GMTとして解釈され9時間ずれたんだよ。
それを回避するためTZ環境変数にUTCを設定するとは
何たる尻の青い、くちばしの黄色い、まだ駆け出しの青二才、未熟者
0573デフォルトの名無しさん
垢版 |
2019/09/23(月) 04:00:12.20ID:Sp7ybd6s
>>559 Common Lisp
https://ideone.com/idfFJM (sbcl)
https://ideone.com/8G7hUD (clisp)

ideoneは、sbclの場合は compile-file で作成したファイルを実行しているらしく
結果が異なっているのはそのため
0576デフォルトの名無しさん
垢版 |
2019/09/23(月) 13:54:34.61ID:2RLjyW/B
>>504 Lua

a={}
for x in io.lines() do a[x]=(a[x] or 0)+1 end
for k,v in pairs(a) do print(k,v) end
0579デフォルトの名無しさん
垢版 |
2019/09/27(金) 02:50:14.35ID:/3CUbuCi
>>550
シェルスクリプト (find, touch コマンド使用)

2019/09/27 02:48:00 に合わせる場合

#!/bin/sh
find あるフォルダ -type f -exec touch -t 201909270248.00 {} \;
0580デフォルトの名無しさん
垢版 |
2019/09/27(金) 19:49:32.99ID:jf7tgLq0
>>548
Powershell

ls ([Environment]::GetFolderPath(5)) -Recurse -Force |? {!$_.PSIsContainer} `
|% {$_.LastWriteTime} | sort {[int]$_.DayOfWeek} | group {"{0:ddd}" -f $_} `
|% {"{0}{1,10:T}" -f $_.Name, [DateTime][Int64]($_.Group |% {$_.TimeOfDay.Ticks} | measure -Average).Average}
0581デフォルトの名無しさん
垢版 |
2019/09/27(金) 19:57:07.16ID:jf7tgLq0
>>580をコピペで実行するときは、`の後の半角空白を削除しないとエラーになる。
0584デフォルトの名無しさん
垢版 |
2019/09/27(金) 23:07:29.28ID:Z4UqEtTG
>>582 javascript
[...new Set([3, 1, 4, 1, 5])].sort().reverse()
0586デフォルトの名無しさん
垢版 |
2019/09/28(土) 00:23:41.09ID:gcUBCYXO
>>582 Perl5 二回答

%h = map{$_=>1} qw(3 1 4 1 5);
@a = sort{$b<=>$a} keys %h;
print "@a\n";

use List::Util 1.45 'uniq';
@a = uniq sort{$b<=>$a} qw(3 1 4 1 5);
print "@a\n"


実行結果、いずれも
~ $ perl 15_582.pl
5 4 3 1
0587デフォルトの名無しさん
垢版 |
2019/09/28(土) 00:52:45.19ID:HcOq9X6n
>>568
それだったら曜日毎の1時間毎のファイル数でグラフにするとかしないと分かりづらいのではないか?

ああ。そういうお題作ればいいか。
0588デフォルトの名無しさん
垢版 |
2019/09/28(土) 01:09:55.39ID:HcOq9X6n
お題: 指定のディレクトリ以下にある全てのファイルの更新日時を取得し、曜日毎、及び時間毎にしてグラフにして出せ。

これは同じ曜日の同じ時間で更新されているファイルのカウントということね。例えば今週と先週の土曜日の7:00代の更新ファイルが一つづつあれば土曜日7時代のカウントが2になる。
で、グラフにする時は表示方法はなんでもいいので例えばテキストでアスタリスク2個で出す。(後でこちらでもプログラム作るのでそれ参考にしてもいい)。
ディレクトリの指定方法は普通なら引数での指定が良いだろうけどプログラムに埋め込んでも標準入力やファイルから読み込んでも何でもいい。それはこのお題では肝心な事ではないので。
0589デフォルトの名無しさん
垢版 |
2019/09/28(土) 02:06:50.36ID:63IK4172
それだったらファイル、ディレクトリ操作は除外してランダムに日時発生させるとかでいいだろ
機種依存するので
ランダム生成は依存しない
0592デフォルトの名無しさん
垢版 |
2019/09/28(土) 03:10:19.21ID:63IK4172
unixタイムとかで、日時と整数は一対一対応してるだろ
ランダム生成で日時は作れる
0593デフォルトの名無しさん
垢版 |
2019/09/28(土) 03:15:41.26ID:HcOq9X6n
>>592
いや、そうじゃなくて >>589 は何番のレスに対するレスなの?
0594デフォルトの名無しさん
垢版 |
2019/09/28(土) 03:30:16.66ID:63IK4172
何番と限らず日時と整数は一対一できるから日時が関係するあらゆる問題
0595デフォルトの名無しさん
垢版 |
2019/09/28(土) 03:58:16.37ID:HcOq9X6n
>>594
いや、 >>589 は何かを読んだ結果書いたんでしょ? 何を読んで書いたの?
0597デフォルトの名無しさん
垢版 |
2019/09/28(土) 10:58:14.32ID:bVbqLRNA
>>582
@Mathematica

deleteDuplicatesSort[lst_] := lst //
 DeleteDuplicates //
 Sort[#, Greater] & ;

In[1] := deleteDuplicatesSort[{3, 1, 4, 1, 5}]
Out[1] = {5, 4, 3, 1}


# Mathematica のカーネルがいつの間にか無償開放されてた!
#
# 「「Mathematica」や“Wolfram|Alpha”の核「Wolfram Engine」が開発者向けに無償開放」
# https://forest.watch.impress.co.jp/docs/news/1186454.html
0598デフォルトの名無しさん
垢版 |
2019/09/28(土) 15:09:30.05ID:E6lKnilk
C++標準のファイルシステムでは、パスは取れるが、時間を取得する関数がないっぽい。
0602デフォルトの名無しさん
垢版 |
2019/09/28(土) 21:56:43.99ID:yaf8uxdw
>>588
PowerShell

$path = [Environment]::GetFolderPath(5)
$all = ls $path -Recurse |? {!$_.PSIsContainer} |% {$_.LastWriteTime}
$max = [Math]::Max(10, ($all | group DayOfWeek, Hour | measure Count -Max).Maximum)

"時" + (("日月火水木金土" -split "") -join "|".PadRight(9))
"--+" + ("-" * 10 + "+") * 7

$y = $all | group Hour -AsHashTable
0..23 |% {
if ($y[$_]) {
$x = $y[$_] | group {[int]$_.DayOfWeek} -AsHashTable
} else {
$x = @()
}
$line = "{0,2}" -f $_
0..6 |% {
$n = ($x[$_].Count * 10 + [int]$max / 2 - 1) / $max
$line += "|" + ("*" * $n).PadRight(10)
}
$line + "|"
}
0603蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/29(日) 02:59:00.33ID:8mEp/ii8
お題: 地球上の2地点を緯度・経度で指定すると、(球面上の)直線距離を求めてくれるプログラム。

地球がほぼ球体であることを仮定してもよい。
0604蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/29(日) 03:04:31.30ID:8mEp/ii8
ロンドンからニューヨーク。
北京から台湾。
ニュージーランドからトルコ。
0606蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/29(日) 03:55:31.74ID:8mEp/ii8
ヒント: 度をラジアンに変換。dの公式に代入する。緯度経度はグーグル マップで調べる。コサインの逆関数はアークコサイン。
0607デフォルトの名無しさん
垢版 |
2019/09/29(日) 09:16:55.67ID:GG+B8frl
数学の問題どすな

地球半径をR、緯度をΦ、経度をΘとすると
地表上の点Pの座標(x,y,z)は

(x,y,z)=R(cosΦcosΘ,cosΦsinΘ,sinΦ)
(R,0,0)は赤道上の東(西)経0度の地点
(ギニア湾 ガーナ アクラ沖約600km)

(0,R,0)も赤道上の東(西)経180度の地点
(太平洋 ナウル島から約1450km)

二地点の座標をベクトルに見立て
内積をR^2で割って逆余弦関数に
与えた結果にRを掛けたモノが答え
0608デフォルトの名無しさん
垢版 |
2019/09/29(日) 09:23:23.08ID:GG+B8frl
ちょい間違った
(0,R,0)は東経90度の赤道上の太平洋上の地点で
スリランカ・コロンボから約1360kmの地点
(-R,0,0)がナウル島から1450kmの地点
(0,-R,0)はガラパゴス諸島から20〜25km程度の
太平洋上の地点
0612デフォルトの名無しさん
垢版 |
2019/09/29(日) 12:00:03.35ID:bEy1wMJX
>>603 大円距離の問題なんだから、距離が一番短くなる2点間の長さとすべき、
great-circular distance

>>605 の数値を使い
地球の半径を 6378.137 km
2点の緯度経度 
139.74477,35.6544 ,
39.8261, 21.4225

Python

https://ideone.com/qp1Fer

答え  9,491.28 km
0614デフォルトの名無しさん
垢版 |
2019/09/29(日) 12:33:05.14ID:mYJaebwB
>>603-6

use Math::Trig qw{deg2rad acos};
($lat1, $long1) = map{deg2rad $_} (51.507448,-0.1287243); # ロンドン ウエストミンスター チャールズ1世騎馬像
($lat2, $long2) = map{deg2rad $_} (40.712775,-74.005973); # ニューヨークCity Park Hall(市庁舎)
$theta = $long1 - $long2;
$dist = sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta);
$dist = 6378.137 * acos($dist);
printf "%.2f[Km]\n", $dist;

実行結果
~ $ perl 15_604.pl
5576.40[Km]

cf.)
https://www.geodatasource.com/developers/perl
0616デフォルトの名無しさん
垢版 |
2019/09/29(日) 19:44:37.93ID:aa2vZ2v/
お題:8queenで面白いパターンを見つけよ。
0617デフォルトの名無しさん
垢版 |
2019/09/29(日) 23:06:17.59ID:OI4EUI6E
お題:もっと面白いお題を考えよ。
0620蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/09/30(月) 02:22:51.44ID:i5LhrskR
お題: サイズ15x15の空白マス('_')がある。黒マス('#')をいくつかランダムに置いて、空白マスが縦または横向きに5マス連続に並ばないようにしたい。ただし、
1. なるべく早く黒マスを配置せよ。
2. 実行のたびに常にランダムにまんべんなく配置せよ。
3. 黒マスが縦または横に隣り合ってはいけない。
4. (ア)全て並べる、そして(イ)並びが正しいか検証する、の(ア)と(イ)を15回繰り返してかかる時間を実測せよ。
0621デフォルトの名無しさん
垢版 |
2019/09/30(月) 09:19:26.74ID:eZfyppwl
>>617
考えた。

でもこれは発表しない。誰にも教えない。墓まで持っていく。
0623デフォルトの名無しさん
垢版 |
2019/09/30(月) 16:46:23.79ID:ypiuCBLp
>>620
https://ideone.com/FggLLg
C++。ふえ〜。円の当たり判定しようと思ったのに、うごかないよ〜。
コード間違ってるのか、数学ぶっ壊れたのかわからん。
デバッグしてくれる人募集。

コード間違ってるんやったら、俺の認識限界がおかしいな。
0628デフォルトの名無しさん
垢版 |
2019/09/30(月) 20:18:42.58ID:H9c5jpU6
>>620
なるほど
コレだな

黒マスルール - Wikipedia
https://ja.wikipedia.org/wiki/%E9%BB%92%E3%83%9E%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%AB

http://ja-kouka.shinobi.or.jp/wp/wp-content/uploads/2018/07/1b6137e740902d821bd7f9678b59d7d2.jpg

出来上がった白黒の升目に上手いこと単語を置くとクロスワードパズルになる
「縦または横向きに5マス連続に並ばない」は「縦または横向きに4マスまで連続に並んでもいい」だ
そこにさらに追加ルールを仕込むとクロスワードパズルの枠が出来上がる
0629デフォルトの名無しさん
垢版 |
2019/10/01(火) 07:35:49.09ID:NlppalS8
お題

言語限定(コマンドプロンプト・パワーシェル・bash/csh等のUNIXシェル)

10000までの素数を列挙して出力

当然だが、スクリプト言語処理系やコンパイラに丸投げさせるのは禁止
というか、技量の程度が疑わてしまうのでお勧めしない
0631デフォルトの名無しさん
垢版 |
2019/10/01(火) 08:35:57.10ID:NlppalS8
プログラミング言語なんて、禁止の塊で出来たものなんで
「禁止の所産」って奴な
0632デフォルトの名無しさん
垢版 |
2019/10/01(火) 08:56:55.24ID:H2UNgdyX
>>629
シェルスクリプトスレ池
0635デフォルトの名無しさん
垢版 |
2019/10/01(火) 09:21:08.21ID:R4cuDBX/
遅くまともな言語ではないやつで、どうにかして動くのを作れというお題なんだろ
まともな言語使用してしまえばお題からずれてるかと
0636デフォルトの名無しさん
垢版 |
2019/10/01(火) 09:53:39.77ID:PlApYvsP
配列使えるシェルもあるからそういうの使えば楽かも
shでもsetすりゃ配列だが

まあでも遅そうで実用性なさげ
0638629
垢版 |
2019/10/01(火) 13:54:46.98ID:NlppalS8
>>637
スゴイw
やれば出来るものですね。
10000を超えても出力し続けてますw
0639デフォルトの名無しさん
垢版 |
2019/10/01(火) 14:02:08.82ID:ygg8X6aa
あ、10000までの制限がないww
limit=100までにしてるから10000以降に出た数値は信頼性ないwww

修正したものを実行して確認中…10000で止まったらUPる…遅い(´・ω・`)
0641デフォルトの名無しさん
垢版 |
2019/10/01(火) 15:07:38.24ID:ygg8X6aa
まあまだ 49(7*7) 289(17*17) 961(31*31) 2209(47*47) 3721(61*61) 6241(79*79)を出力するバグがあったわけだがw
0643デフォルトの名無しさん
垢版 |
2019/10/01(火) 16:30:10.47ID:7XyHUR/V
シェルスクリプトでチョコチョコと何かやる分には良いが、プログラムを書くというのとは違うだろ。
プログラムはそれなりのものた^_^書いた方が効率的。

どっちからでも起動できるんだから餅は餅屋。
0644デフォルトの名無しさん
垢版 |
2019/10/01(火) 16:32:34.41ID:9fvqkmcJ
^_^;
0646デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:04:23.70ID:rsBZCnlu
>>629
遅くても構わなければ、PowerShellではとても簡潔に書ける。

$p = 2..10000
while ($p) {
  $p[0]
  $p = @($p |? {$_ % $p[0]})
}
0647デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:59:35.52ID:Ueonb/Q5
誰が遅くても構わないと言った
0650デフォルトの名無しさん
垢版 |
2019/10/01(火) 22:21:18.49ID:H9NeHROf
>>648
ジェネリックに書くとして、ハッシュ関数はどうやって書けばいいんだ?
std::vector<std::list<T>>> HashMap;
っていう感じのことはできそうではあるけどな。
0651デフォルトの名無しさん
垢版 |
2019/10/02(水) 07:55:46.84ID:YpMEiTCH
# Java

HashMap<String, Integer> shop = new HashMap<String, Integer>();

shop.put("apple", 100);
shop.put("banana", 125);
System.out.println(shop.get("banana")); //=> 125

# Python

shop = { 'apple':100 , 'banana':125 }
print(shop['banana'])
# 125
0652デフォルトの名無しさん
垢版 |
2019/10/02(水) 12:25:17.61ID:56vpBHGI
それは実装ではない。
0653デフォルトの名無しさん
垢版 |
2019/10/02(水) 13:20:24.28ID:+RotAwEg
>>648
このスレの住民のレベルに合っていてかつプログラマにとって必要不可欠な知識なので良いお題
0654デフォルトの名無しさん
垢版 |
2019/10/02(水) 13:31:58.92ID:vkK/4cs1
実装って何を言ってるのかな? コンパイラを作れってこと? それとも基本関数を使ってそれらしいハッシュマップを作れという事?
実装されている言語にさらに実装しろって意味不明。
0657デフォルトの名無しさん
垢版 |
2019/10/02(水) 15:31:03.84ID:vkK/4cs1
言わんとすることは何となくわかるんだが、多分ジェネリックが有る言語なら比較的考えやすいがジェネリックがない言語ではどう解釈するのかな。
0658蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/02(水) 16:28:04.58ID:Q9AIQiw1
お題:文字列操作のUndo/Redoを実装せよ。

文字列Sに対し
(a) 文字位置indexからcount文字を別の文字列strで置き換える(replace)、
(b) 文字位置indexからcount文字を削除する(erase)、
(c) 文字位置indexに別の文字列strを挿入する(insert)
という操作が連続的に可能であるとき、これらの操作に対するUndo/Redo(元に戻す/やり直す)を実装せよ。

ただし操作対象の文字列Sが長いときにメモリーを無駄にする実装にしてはいけない。

解答例:
Undo/Redo framework for C++11
https://github.com/katahiromz/UndoSystem
0659デフォルトの名無しさん
垢版 |
2019/10/02(水) 19:48:30.85ID:By3xLmz3
ここの回答に使われる言語でハッシュマップ自分で実装せなあかん言語なんて少ないと思うが?
0661デフォルトの名無しさん
垢版 |
2019/10/02(水) 20:29:20.39ID:OIQKJ8Sl
シリアライズ、文字列化できてればCRC32でも一応ハッシュとして使える
0663デフォルトの名無しさん
垢版 |
2019/10/02(水) 20:49:55.37ID:OIQKJ8Sl
そんなに汎用的、一般的なのを作る必要もないとおもうので
入力は文字列限定で動くやつ作ればクリアでは?
0666デフォルトの名無しさん
垢版 |
2019/10/02(水) 21:48:13.96ID:uTylPaUx
ハッシュ関数は適当。昔2chで見たのパクった。
HMのサイズ7にしておけばよかった。素数だからな。
0667デフォルトの名無しさん
垢版 |
2019/10/02(水) 21:59:13.49ID:bMxkjAXQ
お題: 簡易的なXMLをパースして構造を出力せよ

in < <div><p><a></a></p></div><span><p></p></span>

out >
div
__p
____a
span
__p
0670デフォルトの名無しさん
垢版 |
2019/10/03(木) 08:18:12.13ID:z1c5xmGq
>>629
> というか、技量の程度が疑わてしまうのでお勧めしない
人の心配する前に自分の出題技量の程度を心配しなよ…
0671デフォルトの名無しさん
垢版 |
2019/10/04(金) 01:29:13.30ID:rw3arA+q
いいじゃねーかそんなこまけーことどうでも
ケツの穴のちいせぇやろうだな。
何ならおじさんが広げてやろうかw
0674デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:06:50.47ID:IeSaX57c
>>629
の出題意図を読み取れば、
記憶域を余り自由に使えない環境で
如何に工夫して目的が達成できるか
ということではないかと
その意味では、Power-shellは少し
強力杉だから除外すべきだったかも
知れないが(遅いから使われる
ことは少ないだろけどスクリプト言
語処理系であるとも言えなくもないし)
0675デフォルトの名無しさん
垢版 |
2019/10/04(金) 14:58:22.06ID:BEYT4ZYw
シェルスクリプトって元々プログラミング言語じゃないからな。 あくまでも補助的なもの。
それでプログラミングすると言うのは本末転倒。 間違った方向性でしかない。

貧弱な環境でも使えるものと言うなら、BASIC や、Python の組込型がコンパクト。 PIC や子供のおもちゃにすら入ってる。 百円のチップにすら入ってるからな。

コンパイラでも良いのならCが最もシンプル。
0678675
垢版 |
2019/10/04(金) 18:12:04.35ID:aN85/uHn
わりいわりい、iOS13になって、日本語の途中の空白は全て全角になったから、なんか間抜けな感じになったな。

良いか悪いかわからんが慣れてくれ。
0679デフォルトの名無しさん
垢版 |
2019/10/04(金) 18:43:32.54ID:hcjI0QEW
。の後にスペースをひとつ入れているようだ
0680デフォルトの名無しさん
垢版 |
2019/10/04(金) 18:44:20.57ID:hcjI0QEW
スペース入れなきゃいいのでは?
0681デフォルトの名無しさん
垢版 |
2019/10/04(金) 19:36:54.12ID:bnA3YiVJ
空白なのは頭ん中だけにしとけwww
0683デフォルトの名無しさん
垢版 |
2019/10/05(土) 01:36:41.50ID:iITy9V8b
空っぽかと思ったら、実は分厚い頭蓋骨が詰まった中心に
ポツンとノミのような脳みそがある、石頭だったでごじゃる
0685デフォルトの名無しさん
垢版 |
2019/10/05(土) 15:19:46.96ID:6iFRuM3K
>>629 bash 4.3.42(3)

n=10000
eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [ ${a[$i]} ]; then
  echo $i
  for ((j=2*$i; j<=$n; j+=$i)); do
    unset a[$j]
  done
 fi
done

実行結果
$ bash 15_629_prime.sh
2

3

5

7

9941
9949
9967
9973
0686デフォルトの名無しさん
垢版 |
2019/10/05(土) 15:21:16.04ID:6iFRuM3K
>>685 実行結果、貼りそこなって変な改行は入ってた…orz 訂正

実行結果
$ bash 15_629_prime.sh
2
3
5
7

9941
9949
9967
9973
0687デフォルトの名無しさん
垢版 |
2019/10/05(土) 15:31:29.76ID:6iFRuM3K
>>686 いや、for ((j=$i*$i; j<=$n; j+=$i)); do だよ間違えた、25%早くなる

n=10000
eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [[ ${a[$i]} ]]; then
  echo $i
  for ((j=$i*$i; j<=$n; j+=$i)); do
    unset a[$j]
  done
 fi
done
0689デフォルトの名無しさん
垢版 |
2019/10/05(土) 17:13:25.01ID:6iFRuM3K
>>687

eval "a=('' '' {2..$n})"
for i in ${a[@]}; do
 if [[ ${a[$i]} ]]; then

この書き方、a[]の最初の0,1番目の要素に空文字を設定しておいて
それを配列のインデックスとして使い、あまりいい書き方じゃないと気がついた
動いているんで、あせって直さないでおくけど ゴメンね〜
0690デフォルトの名無しさん
垢版 |
2019/10/05(土) 20:48:42.33ID:oVPf95FK
お題:
https://regexcrossword.com/playerpuzzles/59e565c95008d
のようなHEXマスの正規表現クロスワードパズルのソルバーを実装せよ。
n=1でいいので処理時間も報告せよ。
0693デフォルトの名無しさん
垢版 |
2019/10/05(土) 22:27:44.93ID:NXndjuW4
>>691
出題者ではないが、まず、完成図面を作って、そこから問題を作ったほうが早そうだ。
ヘックスの扱い方わからねーんだ俺。
昔聞いたことあるけど、そのうち・・・と思ってたら曖昧になってしまった。
0694デフォルトの名無しさん
垢版 |
2019/10/05(土) 23:11:05.60ID:6iFRuM3K
>>667 Perl5

$in = '<div><p><a></a></p></div><span><p></p></span>';
use XML::Simple;
$xml = new XML::Simple->XMLin('<document>'.$in.'</document>');
use Data::Dumper;
$Data::Dumper::Terse = 1;
print Dumper $xml;


実行結果
~ $ perl 15_667_Simple.pl
{
 'div' => {
  'p' => {
   'a' => {}
  }
 },
 'span' => {
  'p' => {}
 }
}
0696デフォルトの名無しさん
垢版 |
2019/10/06(日) 05:37:10.28ID:oevqPO9x
お題: L形図形を表示する
[入力]
1
[出力]
a
bc

[入力]
2
[出力]
ba
ca
abcc
bcab

[入力]
3
[出力]
bacb
cbaa
acba
bcca
bcabcccb
cabcabca
abccaabc
bcabbcab
0697デフォルトの名無しさん
垢版 |
2019/10/06(日) 05:55:18.89ID:vrVeYjyl
>>696
最後のやつが4ではなく3?
それと文字はabc使っているが、どういう規則で並べるのか?
0699675
垢版 |
2019/10/06(日) 09:02:51.40ID:O+kT1S2P
最後は4だろ
0700デフォルトの名無しさん
垢版 |
2019/10/06(日) 09:24:22.51ID:+7MXB6fE
>>697
おそらく1のパターンのL字を4つで向きを変えてくっつけて大きなL字にしたものが2のパターン。2を4つ使って同じことをやって3を作ってるということだと思う。愚直に再帰的にやれば簡単そう。
0703デフォルトの名無しさん
垢版 |
2019/10/06(日) 17:34:25.93ID:kRqXlweR
お題: プログラム実行後にプログラム自身を削除するプログラムを作れ
実行内容は以下のメッセージを出力する
「このプログラムが起動するのは一度きりである。実行ののち、消去される。」
0705675
垢版 |
2019/10/06(日) 18:05:59.73ID:m+CayYCA
>>703 そんな問題は却下。 
どんな問題でもファイルを削除する様な問題は出してはいけない。
ど素人もいるんだからそんな問題は出すべきではない。
0707デフォルトの名無しさん
垢版 |
2019/10/06(日) 20:12:57.33ID:XBuBF2Rc
#!/bin/sh
echo このプログラムが起動するのは一度きりである。実行ののち、消去される。
\rm -f $0
0709デフォルトの名無しさん
垢版 |
2019/10/06(日) 20:19:37.81ID:bPt7YQEe
>>707みて、できなくはないが、やりたくない気分になった。
http://www.t-net.ne.jp/~cyfis/c/stdlib/system.html
上記を使えば、PGからコマンドラインに干渉できる。が!ねぇ・・・。
場所もargc[0]に書いてあるんだけどねぇ・・・。

WA.
0711デフォルトの名無しさん
垢版 |
2019/10/07(月) 13:22:48.77ID:lSqRbxbA
>>703
Linux等のUNIX系OS

at now +1 min

などとやって at job が一分後に動くようにして次の1行を入力してから Ctrl+D で終了させる。

echo 'このプログラムが起動するのは一度きりである。実行ののち、消去される。'

その後1分待つと上記文言の出力後 at job は削除される。

ただし通常の出力先である標準出力はないことになっているのでatによって拾われてメールでエラーメッセージと共に送られてくる。
それを見たい場合はmailコマンドで送られてきたメールの内容を見る等する。
0712蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/07(月) 18:38:53.78ID:tyyduGK2
>>703 C++/Win32

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv)
{
printf("このプログラムが起動するのは一度きりである。実行ののち、消去される。\n");
FILE *fp = fopen("delete-me.bat", "w");
fprintf(fp, "@echo off\n");
fprintf(fp, ":retry\n");
fprintf(fp, "del \"%s\"\n", argv[0]);
fprintf(fp, "if exist \"%s\" goto retry\n", argv[0]);
fprintf(fp, "del delete-me.bat\n");
fclose(fp);
ShellExecuteA(NULL, NULL, "cmd", "/c delete-me.bat", NULL, SW_HIDE);
return 0;
}
0713デフォルトの名無しさん
垢版 |
2019/10/07(月) 22:21:05.16ID:aU+ghkHH
>>703 Perl5

print "このプログラムが起動するのは一度きりである。実行ののち、消去される。\n";
unlink $0;


実行結果
~ $ perl 15_703.pl
このプログラムが起動するのは一度きりである。実行ののち、消去される。
~ $ ls -o 15_703.pl
/usr/bin/ls: cannot access 15_703.pl: No such file or directory


嫌なプログラミンッグだな、一歩書き間違がや大参事。
こういうお題はご遠慮願いたいものだ…
0714デフォルトの名無しさん
垢版 |
2019/10/07(月) 22:32:50.62ID:aU+ghkHH
すまぬ >>713 は題意とは違うな。
プログラムの実行が終了してから削除されるわけか…

>>703 bash

(sleep 4; rm -f $0)&
echo このプログラムが起動するのは一度きりである。実行ののち、消去される。

実行結果
$ bash 15_703.sh
… 数秒後
$ ls -o 15_703.sh
ls: 15_703.sh にアクセスできません: No such file or directory
0715デフォルトの名無しさん
垢版 |
2019/10/07(月) 22:35:14.10ID:aU+ghkHH
>>714 実行結果貼りそこなったorz

$ bash 15_703.sh
このプログラムが起動するのは一度きりである。実行ののち、消去される。
$ ls -o 15_703.sh
-rw-r--r-- 1 ******** 98 10月 7 22:29 15_703.sh
… 数秒後
$ ls -o 15_703.sh
ls: 15_703.sh にアクセスできません: No such file or directory
0716デフォルトの名無しさん
垢版 |
2019/10/07(月) 23:18:10.62ID:Hq5Oz5C1
MSX BASIC
10 print"オハヨウフェルペスクン,コンカイノキミノニンムダガイカリャクナオコノテープハジドウテキニショウメツスル"
20 new
0718蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/07(月) 23:54:31.61ID:9cpaLYwd
実行時にexeにロックがかかるから、実行終了を待つsystem関数では消せないんだ、これが。
0719蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/08(火) 00:32:11.48ID:LPLIE15X
拡張子.batはコマンドプロンプトのバッチファイルを表す。
0721デフォルトの名無しさん
垢版 |
2019/10/08(火) 01:10:33.04ID:LQA6uDl1
>>720
C++&Windows.
おかしなキーコンビネーションで投稿してしまったが、それは置いといて。
結構な沼だったわ。
0726デフォルトの名無しさん
垢版 |
2019/10/08(火) 03:07:50.37ID:LQA6uDl1
タスクスケジューラには一個のタスクしか持たせることができません。
タスクスケジューラの健康のために削除タスクと削除タスクをkillするタスクを入れたという欲が出ました。
さて、どうすればよかったのでしょうか・・・。
0727デフォルトの名無しさん
垢版 |
2019/10/08(火) 03:25:53.77ID:LQA6uDl1
https://ideone.com/8DBn1u
チョットシンプルになった。
けど、ただスケジュールしてバッチファイル作るだけになっちゃった・・・。Orz

ううううううぼぉぉぉおあぁぁぁあああ。。。
0729デフォルトの名無しさん
垢版 |
2019/10/08(火) 22:43:05.75ID:8UaWwWzr
「インターネットには戦力外通告とかが無いから頭の悪い人がいつまでも打席に立って三振し続ける」
0730デフォルトの名無しさん
垢版 |
2019/10/09(水) 01:57:50.31ID:vwSn6CxZ
お題: TCPデータグラムが流れてくるのでFINフラグが立っていたら「切断します」と出力せよ
0731デフォルトの名無しさん
垢版 |
2019/10/10(木) 00:51:51.46ID:P0sO6qGI
>>729
IT分野の実社会では、単価にそれほど差がないのをいいことに
パーフォマンダウンによる差額で利ざやを稼ごうという
商売が横行して、結果としてIT分野が廃れている

だから。こまけーこたー いいんだよ
0733デフォルトの名無しさん
垢版 |
2019/10/10(木) 19:12:56.39ID:AtKsFWU7
>>690 解けた人いない?
0735デフォルトの名無しさん
垢版 |
2019/10/10(木) 20:46:59.80ID:78OW/ryc
いやお題はパズルを解けじゃなくてパズルのソルバーの実装だからwww
0736蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/10(木) 21:25:17.60ID:VnnXeZwz
古典的な人工知能の探索アルゴリズムを研究すれば、この程度のソルバーは作れる。
0737デフォルトの名無しさん
垢版 |
2019/10/10(木) 21:48:13.15ID:PZRS9XbT
つまり研究しないと作れないってことか。
0740デフォルトの名無しさん
垢版 |
2019/10/11(金) 01:56:11.32ID:H4pwkZny
いや総当たりでも出来たなら貼ってくれや。
別に総当たりでも恥ずかしくもなんともないと思うが…
0742デフォルトの名無しさん
垢版 |
2019/10/11(金) 09:03:11.12ID:Cra8acMD
できた!
みせて。
見せたくない!

うーん…
0750デフォルトの名無しさん
垢版 |
2019/10/12(土) 11:04:47.64ID:ewC1g8Dg
>>744 Pharo/Squeak Smalltalk

| bag |
bag := Bag new.
(0 to: 9) asDigitsToPower: 4 do: [:digits | bag add: digits sum].
^ bag sortedElements

"=> {0->1 . 1->4 . 2->10 . 3->20 . 4->35 . 5->56 .
6->84 . 7->120 . 8->165 . 9->220 . 10->282 .
11->348 . 12->415 . 13->480 . 14->540 . 15->592 .
16->633 . 17->660 . 18->670 . 19->660 . 20->633 .
21->592 . 22->540 . 23->480 . 24->415 . 25->348 .
26->282 . 27->220 . 28->165 . 29->120 . 30->84 .
31->56 . 32->35 . 33->20 . 34->10 . 35->4 . 36->1} "
0753デフォルトの名無しさん
垢版 |
2019/10/12(土) 11:52:28.41ID:msiQ/n9S
>>750
@Mathematica

Range[0, 9999] //
 Map[IntegerDigits, #] & //
 Map[Total, #] & //
 Tally

{{0, 1}, {1, 4}, {2, 10}, {3, 20}, {4, 35}, {5, 56}, {6, 84},
 {7, 120}, {8, 165}, {9, 220}, {10, 282}, {11, 348}, {12, 415},
 {13, 480}, {14, 540}, {15, 592}, {16, 633}, {17, 660}, {18, 670},
 {19, 660}, {20, 633}, {21, 592}, {22, 540}, {23, 480}, {24, 415},
 {25, 348}, {26, 282}, {27, 220}, {28, 165}, {29, 120}, {30, 84},
 {31, 56}, {32, 35}, {33, 20}, {34, 10}, {35, 4}, {36, 1}}
0755デフォルトの名無しさん
垢版 |
2019/10/12(土) 13:25:43.66ID:VvSWBOR5
>>748 言われた通りの改定問題

X,Yが与えられる。
X以上Y以下の連続する整数で、数字和の頻度。
もっとも大きい頻度はいくつか。
制約 0 <= X < Y <= 5000億

1) 0 9999 --> 670
  合計18が、670ある。>>744の入力値
2) 1234567 9876543 --> 459034
3) 1 500000000000 --> 20406732610
4) 12345678909 498765432123 --> 20000965162

※Y-Xが MAX5000億なので愚直(力技)はきつい。
※頻度表は"桁数*9"程度あるので、最高値出力のみに変更
0757デフォルトの名無しさん
垢版 |
2019/10/12(土) 18:44:18.00ID:I5ZWyiFj
>>740
>>741じゃねーけど総当りもどきで解いてみた
https://ideone.com/nZqnpN
https://i.imgur.com/3esPPr0.jpg
さすがにフルに総当りするととても終わりそうにないのでちょっとズルして各マスに入る文字を正規表現に使われている"ABCDEFGHMNORXYZ"に限定した
(ソースの217行目)
Celeron 1005M 1.9GHzのしょぼいノートPCで1,386秒(23分)程度だった
0758デフォルトの名無しさん
垢版 |
2019/10/12(土) 19:36:00.00ID:vBnCHMzu
>>757
すんごい
実行時間もすんごい…
0759デフォルトの名無しさん
垢版 |
2019/10/12(土) 19:59:28.15ID:hTj/2FIT
>>754 Perl5、計算量を減らしたアルゴリズム

sub f {
 @s = @_;
 for $l (1..9) {
  $s[$_ + $l] += $_[$_] for 0..$#_;
 } @s }
@b = f f f f 1;
print "$_,$b[$_] " for 0..$#b;

実行結果
~ $ perl 15_774_digit_sum_1.pl
0,1 1,4 2,10 3,20 4,35 5,56 6,84 7,120 8,165 9,220 10,282 11,348 12,415 13,480 14,540 15,592 16,633 17,660 18,670 19,660 20,633 21,592 22,540 23,480 24,415 25,348 26,282 27,220 28,165 29,120 30,84 31,56 32,35 33,20 34,10 35,4 36,1

もっと減らしたアルゴリズムを考えたい気もするけど、
これで一回投稿
0761744
垢版 |
2019/10/12(土) 20:24:43.33ID:1DgZSjUc
白状すると単にrubyで書きたいだけのお題だったんだけど
(Array#repeated_permutationを使いたいだけ)
みんな色々面白いこと考えるもんだね
0762蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/13(日) 14:56:19.23ID:w8oKE2gz
お題: ストップウォッチを作れ。

最初にEnterキーを押すとスタート。
次にEnterキーを押すとストップ。
経過した時間を表示する。
0763675
垢版 |
2019/10/13(日) 15:28:31.50ID:XFDKT5kN
>>744 Python
https://ideone.com/v1nrdn
―――-

import pandas as pd

array = []
for i in range(0,10000):
array.append(sum(list(map(int,str(i)))))

srv =pd.Series(array).value_counts().sort_index()

print(srv)
0765デフォルトの名無しさん
垢版 |
2019/10/13(日) 21:07:01.46ID:w512EwKm
>>755 C
http://ideone.com/qdx79j
一応Y = LLONG_MAXまでできる、あってるか知らんが
ただのスパゲッティになってしもた
0767デフォルトの名無しさん
垢版 |
2019/10/14(月) 02:00:45.97ID:Ws6GlsT+
>>762
Kotlin
まずは仕様通りのもの。

fun main() {
 val br = System.`in`.bufferedReader()
 br.readLine()
 val t0 = System.nanoTime()
 br.readLine()
 val t1 = System.nanoTime()
 val t = t1 - t0
 println("%d.%09d".format(t / 1000000000L, t % 1000000000))
}

しかしこれでは途中経過が出てこなくてつまらない。ということでこれ。

fun main() {
 val br = System.`in`.bufferedReader()
 br.readLine()
 val t0 = System.nanoTime()
 while (true) {
  if (br.ready()) {
   val c = br.read()
   if (c == '\n'.toInt())
    break
  }
  val t1 = System.nanoTime()
  val t = t1 - t0
  print("%d.%09d\r".format(t / 1000000000L, t % 1000000000))
 }
 println()
}
0773◆QZaw55cn4c
垢版 |
2019/10/14(月) 15:57:50.03ID:eo8SsHS2
>>771-772
それは 2^511-1 は 2^7-1 でも割り切れることを主張しているのですか?
0775デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:26:24.40ID:ead7I0ur
>>773
2^511-1 = 2進数で1が511個 = 2進数で1111111が73個並んだ形
2^511-1を2^7-1で割ったら2進数で0000001が73個並んだ形
ってことじゃろ
0777◆QZaw55cn4c
垢版 |
2019/10/14(月) 21:23:44.39ID:eo8SsHS2
>>774-775
2^{ab}-1 = (2^a-1)(1 + 2a + 2^2a + 2^3a + ... + 2^(b-1)a)
と因数分解できるんですね…
thx a lot.
0779675
垢版 |
2019/10/15(火) 01:03:22.38ID:LXkkA+L3
もう何処かのチャレンジ問題を議論するスレでも良いのでは?
0780デフォルトの名無しさん
垢版 |
2019/10/15(火) 01:28:25.21ID:4KtvCQDg
お題: お題スレの過去スレからお題をランダムに選択し出力するプログラムを作成せよ
0788デフォルトの名無しさん
垢版 |
2019/10/16(水) 16:11:48.25ID:EcYqpM5S
QZが自身をキチガイだと認識しているのならば、QZはキチガイという言葉の正しい意味を理解していない
0790◆QZaw55cn4c
垢版 |
2019/10/16(水) 20:10:11.38ID:JF94p0Fe
>>789
どういうところが「頭がおかしい」と思ったのですか?
0791デフォルトの名無しさん
垢版 |
2019/10/17(木) 01:44:31.12ID:QhHbr34y
>>790
周囲が迷惑している行為や的外れで頓珍漢な言動をした際にそれを指摘しても、分からないから具体的に言えという。普通の人からすれば明らかな場合であろうと。
そして具体的に説明しても、自分はそう感じないから理解しない、納得しないと言い、言動を改めない。

本人の中では論理的整合性がとれた言動なのかも知れないが、周囲からすれば会話ができない困った奴に見える。
0793デフォルトの名無しさん
垢版 |
2019/10/17(木) 02:18:55.29ID:E+5qu981
他人の迷惑考えずこんなの貼っちゃう奴だしな

848 ◆QZaw55cn4c  sage 2019/07/20(土) 08:18:17.29 ID:jbjCUWIF
お題と回答
5 : 6 10 32 36 44
9 : 15 34 35 79

まんま>>791に該当するわ
0794デフォルトの名無しさん
垢版 |
2019/10/17(木) 09:29:19.87ID:yTQXhZUg
複素数の多価関数を何度説明しても理解してなかったし脳に欠陥があるのだろう
0795デフォルトの名無しさん
垢版 |
2019/10/17(木) 12:35:29.92ID:MLKesy/P
多価関数を理解できなかったのかwww
じゃあリーマン面も分からないだろうな
そんな状態で一丁前に「留数定理」とのたまうから頭おかしい
0797◆QZaw55cn4c
垢版 |
2019/10/17(木) 19:46:20.65ID:LNHzPSkK
>>795
>そんな状態で一丁前に「留数定理」とのたまう
多分、それは「留数定理は忘れた」という文脈以外ではいったことがないと思いますよ

>>794
「何度も」説明を受けた覚えはありませんよ、むしろ意図的に答えを隠されたような隔靴掻痒的なほのめかししかなかったと記憶しています

>>793
問題を明確に指摘された後は、その貼り付けは実施していないのですが

>>794
今はすべてを実数に限定した線形微分方程式ですらとても苦しんでいるので、複素解析/j関数論とかは当分無理だと思います、関数論のいい教科書があれば教えてください
0798デフォルトの名無しさん
垢版 |
2019/10/17(木) 20:10:25.04ID:Fo0iAhjp
>>797
あれだけ明瞭な説明を受けて理解できないどころかはぐらかされたと感じるならばお前は脳の病気だな
0799デフォルトの名無しさん
垢版 |
2019/10/17(木) 22:10:55.40ID:lFPJOlZz
5chなんて無駄にマウント取るやつばっかりだから、コテつけてごちゃごちゃ言っても時間の無駄だぞ
袋叩きにあうだけ
0800デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:24:53.30ID:RRRrLQ0r
自演擁護乙。
0801蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/18(金) 23:48:51.61ID:981JMrNY
気を取り直していくぞ。

お題: 現在時刻のアナログ時計のSVG画像を出力せよ。丸い外枠と短針と長針だけでいいが、可能なら秒針と文字盤も表示せよ。
0802デフォルトの名無しさん
垢版 |
2019/10/19(土) 02:49:07.69ID:PZMkyc4n
暇な人向けのお題:なるべく公正な多数決システムを考案せよ。
サンプル:https://ideone.com/Ayr1Az

上記は多数決して、3人サンプルして、じゃんけんする。というプロセスで導き出される。
0803デフォルトの名無しさん
垢版 |
2019/10/19(土) 18:44:38.13ID:PZMkyc4n
暇な人向けのお題II!
9x9のセルが与えられる。そのセルは磁石である。
真空状態での磁気シミュレーションをして量子コンピュータに近似せよ。

一つの万能ではない方針。
1パス目で相互作用を足し込む。
2パス目で相互作用の蓄積を作用素数で割る。

ライフゲームがヒントになるかもしれない。
0805デフォルトの名無しさん
垢版 |
2019/10/21(月) 08:37:49.94ID:HKPBZHRe
お題
入力された正整数を漢数字表記にして出力せよ
10の何乗まで対応するかは任せる

514 -> 五百十四
131072 -> 十三万千七十二
90010 -> 九万十
0806デフォルトの名無しさん
垢版 |
2019/10/21(月) 09:41:08.94ID:5iZNWaQ2
>>805 python

%pip install kanjize
from kanjize import int2kanji, kanji2int
print(int2kanji(123456789))
# 一億二千三百四十五万六千七百八十九
0807デフォルトの名無しさん
垢版 |
2019/10/21(月) 09:45:18.93ID:HKPBZHRe
>>806
そんなのあるのか…
0809デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:31:36.37ID:W7vxtZcq
じゃあunicodeにシュメル文字が収録されたので、それで。
フフフ、ライブラリなんてあるまい
0810デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:35:10.39ID:ZDMJHUdn
>>809 Python

%pip install sumerianize
from fumerianize import int2sumerian, sumerian2int
print(int2sumerian(123456789))
# ????????????????????????
0811デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:39:33.90ID:n9VxwF2L
あんのかよワロタw
0814デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:50:52.74ID:hy8thByE
>>805
それと同じお題を以前出した覚えがある。
まあいいか。スレ見に来てる人も変わってるだろうし。
0815デフォルトの名無しさん
垢版 |
2019/10/21(月) 16:23:33.20ID:5iZNWaQ2
>>813 表示できていないのは見る人がフォントを入れていないからだろ。 不思議でも何でもない。
0816デフォルトの名無しさん
垢版 |
2019/10/21(月) 16:37:23.10ID:lI38JOob
>>812
それと同じお題も過去にあったような。双方向で変換ってやつかな。

まだやったことない人なら頭の体操(またはボケ防止)にはなるからやってみると良いと思う。
0818デフォルトの名無しさん
垢版 |
2019/10/21(月) 20:27:05.91ID:niRnsl0k
実はcpanからお題を決めてるんじゃないかなというのがしばらく続いてたと思う
0821デフォルトの名無しさん
垢版 |
2019/10/21(月) 23:57:16.86ID:PlH6WJHg
適当な整数を入力してそれが円周率の何桁目で出てくるか出力せよ。

何桁まで対応するかは任せる。
0823デフォルトの名無しさん
垢版 |
2019/10/22(火) 12:07:39.33ID:rZX4V0+4
>>821 Perl5、小数点以下10000桁まで一番最初に見つかった桁を出力

$d = 893; # 適当な整数
use Math::BigFloat try => 'GMP,Pari';
$pi = Math::BigFloat->bpi(10000);
#print "$pi\n";
$pi =~ s/\.//; # 小数点「.」を除去
$i = index $pi, $d;
print $i < 0 ? "無し\n" : "小数点以下 $i 桁目\n";


実行結果
~ $ perl 15_821.pl
小数点以下 999 桁目
0825デフォルトの名無しさん
垢版 |
2019/10/22(火) 12:40:06.09ID:E1qN728j
じゃあNP問題だと証明しろよ
0826デフォルトの名無しさん
垢版 |
2019/10/22(火) 13:54:00.39ID:rZX4V0+4
>>823
一度にある桁まで求めておいてから検索するよりも、
ガウス=ルジャンドルのアルゴリズムまたはラマヌジャンの式を使うなどして
下の桁まで収束を進めながら検索してゆく方が面白かったかな
0828デフォルトの名無しさん
垢版 |
2019/10/22(火) 19:15:47.41ID:/ue0mcGS
ぬるぽ問題
0829デフォルトの名無しさん
垢版 |
2019/10/22(火) 19:35:05.18ID:JpCkwFny
じゃあそれにしよう。

適当な文章を入力して縦横斜めにぬるぽの3文字が入っていればガッと出力する。
ひらがなだけにするかそれ以上の対応をするかは任せる。
0832デフォルトの名無しさん
垢版 |
2019/10/23(水) 20:25:56.13ID:LcbXQT4h
お題:整数配列の奇数要素のみをソートした配列を返す処理を書いてください

入力例:[6, 5, 4, 3, 2, 1]
出力例:[6, 1, 4, 3, 2, 5]
0834デフォルトの名無しさん
垢版 |
2019/10/23(水) 20:53:23.91ID:65oBAktI
奇数だけ抜き出した配列作成→ソート→元の配列の奇数の位置にソートした配列の要素を入れてくだけで良さそう
0837デフォルトの名無しさん
垢版 |
2019/10/23(水) 22:37:14.26ID:PSSarBFK
>>832 Perl5

@s = (6, 5, 4, 3, 2, 1);
@ix = grep{$s[$_] & 1} keys @s;
@iy = sort{$s[$a] <=> $s[$b]} @ix;
@s[@ix] = @s[@iy];
use Data::Dump 'dump';
print dump @s;

実行結果
~ $ perl 15_832_sort_odd_elem.pl
(6, 1, 4, 3, 2, 5)
0838デフォルトの名無しさん
垢版 |
2019/10/24(木) 08:28:31.82ID:5RTZY+Zo
>>832 J
f =: 3 : 0
a =. I. 2 | y
b =. /:~ a { y
b (a) } y
)

f 6 5 4 3 2 1
6 1 4 3 2 5
0841デフォルトの名無しさん
垢版 |
2019/10/24(木) 12:04:34.69ID:yRKIAYVV
>>839
[6, 5, 3, 2, 1] とかだと結果が間違っている上、nilとか足されてひどいことになるyo?

p [6, 5, 3, 2, 1].partition.with_index{|_, i| i.even?}.then{|e, o| e.zip(o.sort).flatten}
# => [6, 2, 3, 5, 1, nil]

正しくは => [6, 1, 3, 2, 5]
0843デフォルトの名無しさん
垢版 |
2019/10/24(木) 16:54:57.81ID:ZpMPcQ0n
>>842
配列コピーしない場合奇数が出たらその後の要素を見て一番小さい奇数と要素の交換でもどう?
配列のコピー不要や。
0846デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:26:52.21ID:GgLEjF73
アプリ作成したいのですが、素人なのでどなたか相談に乗ってください。

飲み物が入ったコップを定期的に重量を量り、
そのデータを無線で受信してサーバーで記録し
プロットするアプリを作りたいです。

またRaspiなどのPCはなしで作りたいのですが
組み込みPC?を使わないとできませんか?

またこういったアプリに適した言語などありますでしょうか?
0847デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:32:12.57ID:D+sRag4r
プログラム部分はたいしたことがないとおもうのだが
装置、ハードのほうが大事だろ
そもそもプログラムもハード依存するかもしれないし
特に既成品なら
0848デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:48:27.50ID:GgLEjF73
ありがとうございます。
ハードウェアの知識が全く無いため困っています。
飼い猫のために水の量を管理してあげたいんです。

下記のような組み合わせで出来そうでしょうか?

ADコンバータ
KKHMF HX711モジュール 秤量センサー 24位精度ADモジュール 圧力センサーモジュール

重量センサー
uxcell 計量ロードセル アルミ合金材質 500g計量 電子天秤 有線 計量センサー
0849デフォルトの名無しさん
垢版 |
2019/10/25(金) 03:57:48.67ID:uJcHRouN
やり方わからないんだけど、カメラで撮影して映像解析して量が分かるのであればスマホやタブレット用のアプリでできそうだよね。
(PCに小さいカメラ付けても良いが)。
0853デフォルトの名無しさん
垢版 |
2019/10/25(金) 11:49:06.01ID:C/odSq3f
>>832
Ruby で、

input_ary = [ 6, 5, 4, 3, 2, 1 ]
odd_ary = [ ]; index_ary = [ ]

input_ary.each_with_index do |num, idx|
if num.odd?
odd_ary.push num
index_ary.push idx
end
end

odd_ary.sort! # ソート

# 同時に、複数の配列をループする
index_ary.zip( odd_ary ).each { |idx, num| input_ary[ idx ] = num }
p input_ary
0854デフォルトの名無しさん
垢版 |
2019/10/25(金) 12:30:51.02ID:GgLEjF73
>> 849 , 850, 851, 852
情報ありがとうございます。

スレチだったみたいで申し訳ないです。
センサーありきなので、Raspiは使わないと思うのですが
板覗いてみます。
0856デフォルトの名無しさん
垢版 |
2019/10/26(土) 01:38:30.03ID:o5w2ifn2
お題: 端末上で(´・ω・`)を端から端まで移動し、往復させよ
ただし、端についたら(´・ω・`)は増幅し(´・ω・`)(´・ω・`)になる
同様に再び端についたら(´・ω・`)(´・ω・`)は増幅し(´・ω・`)(´・ω・`)(´・ω・`)になる
左右に移動できなくなる又ははみ出す場合は逆に(´・ω・`)を減らしていき、最終的に(´・ω・`)を消滅させよ
0857デフォルトの名無しさん
垢版 |
2019/10/26(土) 06:24:17.44ID:2eoY+VbT
お題: Unicode 1 文字を与えると East Asian Width に従った属性値を返す関数を作成し、その関数に対して任意の文字を与えてテストするプログラムを作れ。
返す属性値の F, H, W, Na, A, N は文字列でも良いし対応する数値でも良いし enum のような(またはCなら #define されている)名前でも良い。
East Asian Width の一覧は下記URLのテキストの内容を使用する。これを最初に読んで初期化するように作っても良いし、最初からプログラムに適した形式で埋め込まれていても良い。
http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt
参考: 東アジアの文字幅
https://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85
0858デフォルトの名無しさん
垢版 |
2019/10/26(土) 07:11:59.41ID:I0XoRu/q
お題:>>832 に「偶数要素は2で割って降順ソート」という要件を追加してください
すでに回答済みの場合は最少限の変更でのご対応で腕(もしくは言語のポテンシャル)を見せてください
0860デフォルトの名無しさん
垢版 |
2019/10/26(土) 11:01:29.07ID:/Rj6VhaF
>>832 Pharo/Squeak Smalltalk

| fn |
fn := [:arr |
| sortedOdds |
sortedOdds := (arr select: #odd) sort readStream.
arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [x]]
].

fn value: #(6 5 4 3 2 1) "=> #(6 1 4 3 2 5) "


>>835

| fn |
fn := [:arr |
| sortedOdds sortedHalfEvens |
sortedOdds := (arr select: #odd) sort readStream.
sortedHalfEvens := ((arr select: #even) sort reversed / 2) readStream.
arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [sortedHalfEvens next]]
].

fn value: #(0 9 8 4 6 5 1 2 7 3) "=> #(4 1 3 2 1 3 5 0 7 9) "
0862デフォルトの名無しさん
垢版 |
2019/10/26(土) 11:45:52.80ID:4aRwI3hq
>>859 Perl5、最小限でか…

@s = (0, 9, 8, 4, 6, 5, 1, 2, 7, 3);
@ix = grep{$s[$_] & 1} keys @s;
@iy = sort{$s[$a] <=> $s[$b]} @ix;
@s[@ix] = @s[@iy];
@iz = grep{~$s[$_] & 1} keys @s;
@s[@iz] = map{$_ / 2} reverse sort{$a <=> $b} @s[@iz];
use Data::Dump 'dump';
print dump @s;

実行結果
~ $ perl 15_859.pl
(4, 1, 3, 2, 1, 3, 5, 0, 7, 9)
0864デフォルトの名無しさん
垢版 |
2019/10/26(土) 12:22:15.14ID:GFiKSQ9h
>>856
Porwershell。バージョンによってはプロンプト画面に直接貼り付けると$sの文字列が
化けるので、その場合はファイルに保存して実行。

$s = "('・ω・``)"
$w = $Host.UI.RawUI.WindowSize.Width - 1
$m = [Math]::Floor($w / 10)

foreach ($n in 1..$m + ($m - 1)..0) {
  $d = $w - 10 * $n
  foreach ($x in (($d..1), (1..$d))[$n % 2]) {
    $l = "`r" + " " * $x + $s * $n + " " * ($d - $x)
    Write-Host $l -NoNewline
    if (!$n) {Write-Host; break}
    Sleep -m 20
  }
}
0865デフォルトの名無しさん
垢版 |
2019/10/26(土) 13:49:47.32ID:f6JeNzn+
Mathematica12

定義
f1[a_]:=SubsetMap[Sort,a,Position[a,_?OddQ,1]]
f2[a_]:=SubsetMap[ReverseSort[#]/2&,f1[a],Position[a,_?EvenQ,1]]

実行結果
f1[{6,5,4,3,2,1}]
{6,1,4,3,2,5}

f2[{0,9,8,4,6,5,1,2,7,3}]
{4,1,3,2,1,3,5,0,7,9}
0866デフォルトの名無しさん
垢版 |
2019/10/26(土) 17:08:24.41ID:kYj2w42l
>>832, >>858 Ruby

f = -> ary {
  e, o = ary.partition(&:even?).map(&:sort)
  ary.map{|v| v.even? ? v : o.shift}
}
g = -> ary {
  e, o = ary.partition(&:even?).map(&:sort)
  ary.map{|v| v.even? ? e.pop >> 1 : o.shift}
}

p f[[6, 5, 4, 3, 2, 1]] # => [6, 1, 4, 3, 2, 5]
p g[[0, 9, 8, 4, 6, 5, 1, 2, 7, 3]] # => [4, 1, 3, 2, 1, 3, 5, 0, 7, 9]
0868デフォルトの名無しさん
垢版 |
2019/10/26(土) 22:02:49.24ID:+YWUVQNg
>>856
https://ideone.com/lw7uIj
C++。なんか表示位置ずれるなーと思ったら、「()」これ半角じゃねーか。
そのせいで、プログラムが持ってる長さと表示の長さが合わなかった。

しかし、汚くなった無し、思ったより時間がかかってしまった。
0871蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/26(土) 22:38:02.04ID:Q5f3+aYX
お題: あるフォルダ(例えばC:\Windows)についてフォルダの階層構造を木構造(tree)を表すテキストとして出力せよ。

インデントでもいい。罫線を使ってもいい。
0872デフォルトの名無しさん
垢版 |
2019/10/26(土) 22:38:38.76ID:T/HAOzs9
tree
0875デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:36:46.58ID:Up+ppHZL
0876デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:56:14.95ID:mT+r0MIT
0878デフォルトの名無しさん
垢版 |
2019/10/27(日) 01:48:49.90ID:hTxWtEZY
0879デフォルトの名無しさん
垢版 |
2019/10/27(日) 02:14:55.86ID:qZK0Jir5
0880デフォルトの名無しさん
垢版 |
2019/10/27(日) 12:00:30.73ID:czi1K5eV
>>858-859
PowerShell

$a = 0, 9, 8, 4, 6, 5, 1, 2, 7, 3
$b = 0, 0
$i = 0, 0
$odd = {$_ % 2}
$b[0] = @($a |? {!(&$odd)} |% {$_ / 2} | sort -descending)
$b[1] = @($a |? {&$odd} | sort)
$c = $a |% {$b[(&$odd)][$i[(&$odd)]++]}

"入力: [" + ($a -join ", ") + "]"
"出力: [" + ($c -join ", ") + "]"
0883デフォルトの名無しさん
垢版 |
2019/10/28(月) 21:54:57.80ID:UPe4TNxT
Common Lisp
>>832
(let* ((l '(6 5 4 3 2 1))
    (odds (sort (remove-if-not #'oddp l) #'<)))
 (mapcar (lambda (x) (if (oddp x) (pop odds) x)) l))

>>858-859
(let* ((l '(0 9 8 4 6 5 1 2 7 3))
    (odds (sort (remove-if-not #'oddp l) #'<))
    (evens (sort (remove-if-not #'evenp l) #'>)))
 (mapcar (lambda (x) (if (oddp x) (pop odds) (/ (pop evens) 2))) l))
0885デフォルトの名無しさん
垢版 |
2019/10/28(月) 22:33:53.27ID:cHOU2eIF
>>871
Powershell。標準のtreeコマンドと違い、システム/隠しフォルダも表示する。
バージョンによってはプロンプト画面に貼り付けると罫線文字が消えてしまうので、
その場合はps1ファイルに保存して実行するか、PowerShell ISEに貼り付ける。

function MyTree($path, $branch)
{
 if (!$branch) {$path}
 $dir = @(ls -Force -PSPath $path -EV e -EA SilentlyContinue |? {$_.PSIsContainer})
 if ($e) {$branch + "::アクセス不可"}
 if (!$dir) {return}
 0..($last = $dir.Count - 1) |% {
  $branch + ("├─", "└─")[$_ -eq $last] + $dir[$_].Name
  MyTree $dir[$_].FullName ($branch + ("│ ", "  ")[$_ -eq $last])
 }
}

MyTree "C:\Windows"
0888蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/29(火) 01:01:17.43ID:CdNgVa0z
お題: 平面(0, 0)-(100,100)上に点を100個、配置する。k-means法を用いて点の集合を3つのグループに分け、それらを図示せよ。
0889デフォルトの名無しさん
垢版 |
2019/10/29(火) 08:42:30.06ID:CowX2GWO
>>858-859
Ruby で、

input_ary = [ 0, 9, 8, 4, 6, 5, 1, 2, 7, 3 ]

even_ary, odd_ary = input_ary.partition( &:even? ) # 偶数・奇数配列

odd_ary.sort! # 奇数要素をソート

# 偶数要素は、2で割って降順ソート
even_ary.map! { |num| num / 2 }
even_ary.sort!
even_ary.reverse!

p results = input_ary.map { |num| num.even? ? even_ary.shift : odd_ary.shift } # 偶数・奇数
0893デフォルトの名無しさん
垢版 |
2019/10/29(火) 21:04:32.22ID:OodB9NB8
日本標準時2100に起動し、Web上から文字列「惣流・アスカ・ラングレー」を含む.jpgファイルもしくは.jpegあるいは.pingファイルをC:秘蔵に1GB分保存するコードを教えてください
0894デフォルトの名無しさん
垢版 |
2019/10/29(火) 21:19:03.11ID:zdS42c06
式波だろオッサン
0896デフォルトの名無しさん
垢版 |
2019/10/29(火) 22:18:10.10ID:VtVeF5OO
>>893
firebird -t0:21:0:0 --everyday --query 惣流・アスカ・ラングレー --suffix "jpg|jpeg|ping" --dst "C:\secret" --limit 1GB
0899デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:31:20.50ID:5BPqTvCN
お題: 3^3^3^... のような反復指数を10の反復指数に近似するプログラムを作成しなさい。
入力されるそれぞれの指数は1より大きい実数とします。
計算後の最も右の指数xは 1<x≦10 としてください。

例:
3^3^3^3^3^3 = 10^10^10^10^10^1.099
2.718^2.718^2.718^2.718^7.705 = 10^10^10^10^2.983
(5.0e+50)^(6.0e+60)^(7.0e+70)^(8.0e+80)^(9.0e+90) = 10^10^10^10^10^10^1.968
1.1^1.1^1.1^1.1^1.1 = 1.112
0900デフォルトの名無しさん
垢版 |
2019/11/01(金) 23:58:48.16ID:Yq8XY12s
a^n = b^x を解く問題でいいじゃん
0907デフォルトの名無しさん
垢版 |
2019/11/02(土) 19:40:47.26ID:0iFQzt0L
>>899
PowerShellで最初の2例だけ。

function lg($x) {[Math]::log10($x)}
function pow($x, $y) {[Math]::pow($x, $y)}

function tetrconv($a)
{
$k = lg ((pow $a[-2] $a[-1]) * (lg $a[-3]) + (lg (lg $a[-4])))
$b = @(10) * ($a.count - 1) + [Math]::round($k, 3)
($a -join "^") + " = " + ($b -join "^")
}

tetrconv (@(3) * 6)
tetrconv (@(2.718) * 4 + 7.705)
0908デフォルトの名無しさん
垢版 |
2019/11/02(土) 21:32:51.49ID:0iFQzt0L
>>899
最後の2例にも対応した。

function lg($x) {[Math]::log10($x)}
function pow($x, $y) {[Math]::pow($x, $y)}

function tetrconv($a)
{
  $k = $a[-1]
  foreach ($i in -2..-$a.count) {
    if ($k -gt 10) {break}
    $k = pow $a[$i] $k
  }
  if ($i - 1 -ge -$a.count) {$k *= lg $a[$i - 1]}
  if ($i - 2 -ge -$a.count) {$k += lg (lg $a[$i - 2])}
  while ($k -gt 10) {
    $k = lg $k
    $i++
  }
  if ($i += $a.count) {$i++}
  $b = @(10) * $i + [Math]::round($k, 3)
  ($a -join "^") + " = " + ($b -join "^")
}

tetrconv (@(3) * 6)
tetrconv (@(2.718) * 4 + 7.705)
tetrconv (5.0e50, 6.0e60, 7.0e70, 8.0e80, 9.0e90)
tetrconv (@(1.1) * 5)
0909デフォルトの名無しさん
垢版 |
2019/11/03(日) 00:32:05.95ID:ORedds2P
偶数の場合は半分に、奇数の場合は3倍して1加算して結果が1になるまでその数値を出力してください。

1まで出力して完了です。

単純だけど、どこまで短く書ける?
0911デフォルトの名無しさん
垢版 |
2019/11/03(日) 12:57:12.82ID:ax9Okew1
コラッて怒れば良いんじゃないかな
0914デフォルトの名無しさん
垢版 |
2019/11/03(日) 18:50:15.71ID:6KV8hNPc
縦と横のサイズが与えられるのでアスペクト比を求めよ
0916デフォルトの名無しさん
垢版 |
2019/11/03(日) 21:50:08.17ID:rJL4Vpjg
>>899
別の入力値 (例えば@(1.7) * 5や@(1.5) * 14) を試してみたら出力値がおかしかったので修正。

function lg($x) {[Math]::log10($x)}
function pow($x, $y) {[Math]::pow($x, $y)}

function tetrconv($a)
{
  $k = 1
  foreach ($i in ($a.count - 1)..0) {
    $k = pow $a[$i] $k
    if ($k -gt 20) {break}
  }
  if ($i -ge 1) {$k *= lg $a[$i - 1]}
  if ($i -ge 2) {$k += lg (lg $a[$i - 2])}
  while ($k -gt 10) {
    $k = lg $k
    $i++
  }
  $b = @(10) * $i + [Math]::round($k, 3)
  ($a -join "^") + " = " + ($b -join "^")
}

tetrconv (@(3) * 6)
tetrconv (@(2.718) * 4 + 7.705)
tetrconv (5.0e+50, 6.0e+60, 7.0e+70, 8.0e+80, 9.0e+90)
tetrconv (@(1.1) * 5)
0917デフォルトの名無しさん
垢版 |
2019/11/04(月) 07:30:04.95ID:T8mOMaiU
お題:
m から n までの整数のうち、桁数字の和が s になるものをすべて列挙する
関数を書け。

具体的に:
1 から 100 までの整数のうち、桁数字の和が 12 になるものは、
39、48、57、66、75、84、93 である。

関数の実行例:
f(1, 100, 12) → [39, 48, 57, 66, 75, 84, 93]
0918デフォルトの名無しさん
垢版 |
2019/11/04(月) 10:20:33.30ID:xKwnPcPn
数列和好きだね これで何回目だ?
数列和求めて何か嬉しいのか? 簡易計算ミスを防げるとか
0923デフォルトの名無しさん
垢版 |
2019/11/04(月) 19:35:11.53ID:6jo2x8my
>>917
PowerShellで単純に書けば

function f($a, $b, $s) {$a..$b |? {(iex ([char[]]"$_" -join "+")) -eq $s}}
f 1 100 12

だが、桁が増えると遅すぎるので、少し工夫すると、

$M = [Math]

function g($s, $n)
{
  if ($n -eq 1) {return $s}
  $d = $M::pow(10, $n - 1)
  for ($i = $M::max(0, $s - 9 * ($n - 1)); $i -le $M::min(9, $s); $i++) {
    g ($s - $i) ($n - 1) |% {$d * $i + $_}
  }
}

function f($a, $b, $s)
{
g $s ($M::ceiling($M::log10($b))) |? {$_ -ge $a -and $_ -le $b}
}

f 1 10000000 12
0924デフォルトの名無しさん
垢版 |
2019/11/04(月) 19:36:29.94ID:6jo2x8my
7桁まではまあまあだが8桁以上だと遅いので、Cで書き換えると9桁でも瞬時に終わった。
(出力をファイルにリダイレクトした場合)。Visual Studioでは動作するが、
ideone.comでは変なコンパイラエラーが発生する。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void g(int a, int b, int s, int n, int t, int x)
{
  int d, i;

  if (n == 0) {
    if (t == s && x >= a && x <= b) printf("%d\n", x);
  } else {
    for (d = i = 1; i < n; i++) d *= 10;
    for (i = max(0, (s - t) - 9 * (n - 1)); i <= min(9, s - t); i++) {
      g(a, b, s, n - 1, t + i, d * i + x);
    }
  }
}

void f(int a, int b, int s)
{
  g(a, b, s, ceil(log10(b)), 0, 0);
}

int main(void)
{
  f(1, 1000000000, 12);
  return 0;
}
0926デフォルトの名無しさん
垢版 |
2019/11/05(火) 20:14:32.31ID:e+hxAdfR
お題:グラフの最長距離探索プログラムを作りなさい。分からなければダイクストラの最短距離探索プログラムを改造して作りなさい。
0927デフォルトの名無しさん
垢版 |
2019/11/05(火) 20:40:24.45ID:3L71zPwH
>>926
全探索になるから辛い。
X以上になったら打ち切りとかできないし、枝がX個以上なら切るとかもできない。
0929デフォルトの名無しさん
垢版 |
2019/11/05(火) 22:48:36.11ID:4YhU7TUN
>>917
Common Lisp
(defun f (m n s)
 (print (loop for i from m to n
        if (= s (loop for (j k) = (multiple-value-list (floor i 10)) then (multiple-value-list (floor j 10))
               sum k
               until (zerop j)))
        collect i)))

(f 1 100 12)
0931デフォルトの名無しさん
垢版 |
2019/11/07(木) 22:47:28.91ID:Iq2Mem9/
>>924を読み返してみたら、1変数減らしてすっきりさせられることに気付いた。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void g(int a, int b, int r, int n, int x)
{
  int d, i;

  if (n == 0) {
    if (r == 0 && x >= a && x <= b) printf("%d\n", x);
  } else {
    d = pow(10, n - 1);
    for (i = max(0, r - 9 * (n - 1)); i <= min(9, r); i++) {
      g(a, b, r - i, n - 1, d * i + x);
    }
  }
}

void f(int a, int b, int s)
{
  g(a, b, s, ceil(log10(b)), 0);
}

int main(void)
{
  f(1, 1000000000, 12);
  return 0;
}
0932デフォルトの名無しさん
垢版 |
2019/11/10(日) 21:37:46.78ID:OK7x/7YO
文字コードがシフトJISでもUnicodeでも3つ以上の連番となる文字列(最長一致)を、
コード範囲とともにすべて表示せよ。例えば、それらのうちの1つに関する表示は、

824F..8258
FF10..FF19
01234566789

となる。なお、シフトJISには機種依存文字を含んで構わない。
0934デフォルトの名無しさん
垢版 |
2019/11/10(日) 22:09:53.56ID:OK7x/7YO
>>933
それも機種依存で構わない。規格上の厳密さにこだわる必要はない。
0939デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:23:08.18ID:ySONYK72
>>936
単に一致不一致だけわかればいいのか?
とか
コンペアするファイルは2つだけなのか?
とか

単に2つのファイルの一致不一致を見るだけなら基本>>937の言う通りだと思う
0940デフォルトの名無しさん
垢版 |
2019/11/11(月) 22:37:18.90ID:hxYpUSvR
>>935
正解。Windowsには機種依存文字

8754..875D
2160..2169
TUVWXYZ[\]

などもあるが、機種依存文字を含んでも構わないという出題だったので、
含まなくてもOK。
0943デフォルトの名無しさん
垢版 |
2019/11/12(火) 21:37:48.42ID:+gLjUv3x
>>941
処理データ量が少なく計算効率を考慮しなくて良いなら、Rで簡潔に書ける。
https://ideone.com/cRvth9

効率が求められるなら、Cで二分探索の変形版だな。
https://ideone.com/FXQQjq
0944デフォルトの名無しさん
垢版 |
2019/11/12(火) 22:38:04.89ID:SyoIDDRx
windowsのロングパス対応の重複ファイル検索するコードない?
0945デフォルトの名無しさん
垢版 |
2019/11/13(水) 04:07:44.81ID:eXHRJefh
>>941 Pharo/Squeak Smalltalk

| fn |

fn := [:m |
| table |
table := #(98 100 198 200 250 298).
table detectMin: [:x | (x - m) abs]
].

fn value: 50. "=> 98 "
fn value: 195. "=> 198 "
0948デフォルトの名無しさん
垢版 |
2019/11/13(水) 18:24:57.67ID:utJBi2wY
>>941 Lua
function f(a, x)
local res = a[1]
for i = 2, #a do
if math.abs(res - x) > math.abs(a[i] - x) then
res = a[i]
end
end
return res
end
0951デフォルトの名無しさん
垢版 |
2019/11/13(水) 20:40:25.65ID:H1DP2m/6
>>944
>>1002
0952デフォルトの名無しさん
垢版 |
2019/11/13(水) 20:48:13.08ID:CMaH4qd1
>>941
C++ならSTLのequal_rangeを使えば、二分探索のコードを自前で書かずに済む。
https://ideone.com/KJ134u

この例の条件でしか判定しないなら、5つの定数値との比較にするのが一番簡単で
速そうだな。
https://ideone.com/ef553N
0955デフォルトの名無しさん
垢版 |
2019/11/13(水) 21:53:11.46ID:RzCRvdkP
まずは199との比較では?
あとは範囲を絞ったテーブルとか

int全てをカバーするテーブルも
intが32bitな64bit環境なら一応は可能
0956蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/11/13(水) 22:09:59.79ID:SHPlbPC2
お題: 自動塗り絵。

白地に黒い線で図形が描かれているモノクロ画像が与えられる。
白い領域をそれぞれ適当な単色で塗りつぶせ。可能ならOpenCVを使ってもいい。
0958デフォルトの名無しさん
垢版 |
2019/11/13(水) 23:03:48.70ID:CMaH4qd1
>>955
「一番速い」ではなく「一番簡単で速い」だからね。可読性とかバグの
混入しにくさとかも考えると、順番に5回比較するのが一番良いだろ。
特に https://mevius.2ch.net/test/read.cgi/tech/1573214616/3 への
回答としては、最も適している。
0959デフォルトの名無しさん
垢版 |
2019/11/13(水) 23:40:49.81ID:RzCRvdkP
一番速くもないし一番簡単でもない

一番「簡単で速い」?
簡単と速いは相反するので一番なんて無い
0961デフォルトの名無しさん
垢版 |
2019/11/14(木) 01:06:49.29ID:4AhPUV/Y
俺が一番
0962デフォルトの名無しさん
垢版 |
2019/11/14(木) 06:15:22.98ID:BnXMw1SX
>>941 Io
f:=method(a,x,
a map(v,list((v-x)abs,v))min last
)
d:=list(98,100,198,200,298)
f(d,120) println
実行結果
100
0963デフォルトの名無しさん
垢版 |
2019/11/14(木) 09:31:40.70ID:baSi3t2K
一番簡単で速いってなんだよ
一番簡単かつ一番速いなら一番速いって言えばいいだけだろ
ってC++の人かよ
0966デフォルトの名無しさん
垢版 |
2019/11/14(木) 13:27:39.39ID:isT1FYJS
それな
あと「頭悪いやつがよく言う」ってのも頭悪いやつよく言うセリフだわ
0968デフォルトの名無しさん
垢版 |
2019/11/14(木) 16:23:41.28ID:bZ2yXVXr
>>963
俺、よくmakehoge書いてる人だけど、その二分探査書いた人は別人。
偶に、俺じゃない人がC++書いてくことがある。
まぁ、俺も貢献度が高いかというと解らんけど。
0969デフォルトの名無しさん
垢版 |
2019/11/14(木) 22:16:17.11ID:ya/1xYDt
>>963
「一番簡単で速い」は「一番簡単」かつ「速い」という意味だよ。
一番簡単なコードを書いてみて充分に速ければ、さらに手を加える必要はないってこと。
昨今はCPUが速いので、簡単なコードをささっと書いて終わりにできる場合が多いし、
Cを使うまでもなくRやPythonなどでも実用に耐える。処理条件が変わって速度に
不満が生じたときだけ、書き直せば良い。
0971デフォルトの名無しさん
垢版 |
2019/11/14(木) 23:43:50.36ID:ya/1xYDt
>>970
>>941の最も近い値を求める処理(Aと呼ぶ)だけを複数回連続して行う場合はそうだが、
間に別の処理(Bと呼ぶ)がたくさん入る場合はキャッシュから外れるかも知れないし、
AよりもBの方で相対的にだいぶ長い時間がかかっているならば、Aを高速化する
意味はない。

Aを簡単に書き終え、Bを書き進めてプログラム全体を完成させ、各部分の実行時間を
デバッガで分析し、Aを高速化する必要があるか判定するのが効率的な開発方法。
必要なときだけAを書き直してみて、元のAと実行時間を比較し、顕著に速い場合だけ
採用する。あまり変わらない場合は元の簡単な方に戻す。
0973デフォルトの名無しさん
垢版 |
2019/11/15(金) 06:11:01.44ID:/dDy1LQy
中途半端に最適化するくらいなら
意味通りをそのまま記述した方が良いよ

トリッキーなマクロとか使わないで普通にループでいいし
0974デフォルトの名無しさん
垢版 |
2019/11/15(金) 07:24:03.38ID:YlbiRAmO
>>941 J

f =: 4 : 0
{. x /: | x - y
)

a =: 98 100 198 200 250 298
a f 199
198
0985デフォルトの名無しさん
垢版 |
2019/11/15(金) 18:45:17.65ID:YlbiRAmO
>>941 Ruby

def f(a,x)
a.min_by{|v|(v-x).abs}
end
0988デフォルトの名無しさん
垢版 |
2019/11/16(土) 09:38:56.12ID:R3eXoa4h
お題: 標準入力から読み取った文字列に対して変換候補の単語を表示するスクリプトを作れ
変換候補は https://www.cs.cmu.edu/~rgs/alice-table.html のテキストを元にし、英文のみの対応とする

例:
in < on
out > ['on', 'once', 'one', 'only']
in < we
out > ['well', 'went', 'were']
099010-11
垢版 |
2019/11/16(土) 11:43:03.30ID:nyexrMnj
Mathematica
ビットテーブル使ったからいまいち

f[x_]:=Round[Exp[x*49/2^9]*10]+Mod[BitShiftRight[8518656,x],2]

f[Range[0,23]]
{10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91}
0991デフォルトの名無しさん
垢版 |
2019/11/16(土) 13:01:44.00ID:9Ne+J8hx
>>988-989 PowerShell
$Words = ([RegEx]"\w+").Matches((Invoke-WebRequest 'https://www.cs.cmu.edu/~rgs/alice-I.html').Content) | Select-Object -ExpandProperty 'Value' | Sort-Object -Unique
'on', 'we' | %{ "'$_' => ['$($Words -cmatch "^$_.*$" -join ''', ''')']" }
--
'on' => ['on', 'once', 'one', 'only']
'we' => ['well', 'went', 'were']
0993デフォルトの名無しさん
垢版 |
2019/11/16(土) 20:00:42.94ID:ycfnvugG
>>987
誤解がないように一応言っておくが、同一人物なのは943, 952, 958, 969, 971, 993だけで、
978や986は別人ね。
0997990
垢版 |
2019/11/17(日) 15:37:45.58ID:WMPUR+bY
BitGet使うんだった(Mathematicaに慣れてないのばればれ)
(* 49/2^9 = 0.095703125 *)
f[x_]:=Round[Exp[x*0.095703125]*10]+BitGet[8518656,x]

もう少し頑張っても16ビット以内にビットテーブルは縮小出来ず…。
(* 785/2^13 = 0.0958251953125 *)
f[x_]:=Round[Exp[x*0.0958251953125]*10]+BitGet[130048,x]
0998デフォルトの名無しさん
垢版 |
2019/11/21(木) 12:06:42.30ID:p+kY48sO
>>941 julia
a=[98,100,198,200,250,298]
f(a,x)=a[argmin(map(abs ,a.-x))]
f(a,50)
0999デフォルトの名無しさん
垢版 |
2019/11/21(木) 17:12:54.10ID:x85mexbT
>>988-989 Squeak Smalltalk。関数で。

| contents words fn |
contents := (HTTPClient httpGet: 'https://www.cs.cmu.edu/~rgs/alice-I.html') contents.
words := (contents replaceAll: Character lf with: Character space; asTextFromHtml) asString subStrings: ' !"''()*,-.:;?`'.
words := words asSet asSortedArray.

fn := [:in | words select: [:word | word beginsWith: in]].
fn value: 'on'. "=> #('on' 'once' 'one' 'only') "
fn value: 'we'. "=> #('well' 'went' 'were') "

"for Pharo => http://ws.stfx.eu/DK48GF5ZH8SF "
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 116日 0時間 21分 10秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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