19/02/09 01:16:57.63 VrkeVQvn.net
>>4 そう言う記述を度々見るんだが、具体的なプログラムを提示してくれない?
51:デフォルトの名無しさん
19/02/09 05:46:19.68 ZuP9aKcb.net
>>48
前スレでもGMPだって紹介されてたし
URLリンク(gmplib.org)
URLリンク(gmplib.org)
実際に使われる法はビルド時生成(URLリンク(gmplib.org))だけど大抵の32/64bitシステムの場合は書いてある通り
52:デフォルトの名無しさん
19/02/09 06:52:32.52 y7fm8J5o.net
なんでも放題にすればいい
お題
平方数は 256で割るとあまりの
パターンが44種類になるという。
この44種類を求める。
53:デフォルトの名無しさん
19/02/09 08:05:29.21 y7fm8J5o.net
放題は、お題の間違い
54:デフォルトの名無しさん
19/02/09 08:30:22.91 IKLi4q/e.net
python
{(x**2) % 256 for x in range(0,256)}
55:デフォルトの名無しさん
19/02/09 10:10:19.89 DhY4ZB+P.net
Ruby
p 0x100.times.map{|i| i*i&0xFF}.uniq.sort
# => [0, 1, 4, [...], 233, 241, 249]
56:デフォルトの名無しさん
19/02/09 10:33:40.76 O4yJeWlE.net
javascript
[...new Set(function*(){for(let i=0;i<256;i++)yield i*i%256}())].sort((a,b)=>a-b)
57:デフォルトの名無しさん
19/02/09 14:20:17.67 BaccQTUO.net
お題:ハノイの塔の最少手数は一種類しかないのか
58:デフォルトの名無しさん
19/02/09 14:22:34.94 VrkeVQvn.net
>>50 その44種(mod256)の中に x%256 が一致するか
python
mod256=sorted({(i**2)%256 for i in range(256)})
x=123*123
print(x%256 in mod256)
# True
これでmod の話が理解できた。 要は完全な平方数じゃないのは平方根の計算をしないと言う話ね。
59:デフォルトの名無しさん
19/02/09 15:28:05.40 1XyVHoA8.net
>>50 Perl5
%a = map{$_=>1} map{$_*$_%256} 0..256;
@a = keys %a;
print "@a\n";
実行結果
~ $ perl 13_50.pl | wc -w
44
$ perl 13_50.pl
137 89 161 57 1 4 100 17 36 49 121 64 68 144 201 177 65 185 16 9 193 169 129
105 196 132 25 73 249 209 33 233 225 97 41 81 241 164 145 228 217 0 153 113
60:デフォルトの名無しさん
19/02/09 17:42:33.15 1XyVHoA8.net
>>50 Perl5 その2
use List::MoreUtils 'uniq';
@a = uniq map{$_*$_%256} 0..255;
print "@a\n";
61:デフォルトの名無しさん
19/02/09 18:17:43.26 HLblHrgV.net
>>49 有難う。
python だが、
# 256, 9, 5, 7, 13, 17 97
のmodであらかじめカットしたら、5倍くらい早くなった。
因みに >>50 のお題で
mod256=sorted({(i**2)%256 for i in range(256)})
と
modn = lambda n:set((i**2)%n for i in range(n))
mod256 = modn(256)
では下のsetを使った方が3割くらいスピードが速かった。
62:デフォルトの名無しさん
19/02/09 18:57:59.38 luPnpF49.net
>>59
# 256, 9, 5, 7, 13, 17 97
なんて順番ははおかしいんじゃねと思って、
大きい順にカットしたら、更に2割以上早くなった。
63:デフォルトの名無しさん
19/02/10 06:54:30.87 qszHu1wC.net
>>50 J
64個の平方数を調べれば44種類のパターンはそろうようだ。
/:~ ~. 256| *: i. 64
64:デフォルトの名無しさん
19/02/10 12:16:48.56 8pY6FeJB.net
お題
ある数 n とする。
下位から24bit区切りの数を足し合わせてからmod 2^24-1 した数が、元の数nのmod 2^24-1 と一致することを確認しなさい。
65:デフォルトの名無しさん
19/02/10 12:27:09.74 Mq5me4ef.net
>>62
任意の n に対してある自然数 N, 自然数列{a_k} が存在して
n = Σ_{k = 0}^{N} a_k * 2^(24 * k) と書けるので mod 2^24 - 1 として
n = Σ_{k = 0}^{N} a_k * 1^k
= Σ_{k = 0}^{N} a_k ■
66:デフォルトの名無しさん
19/02/10 14:27:03.54 H2rtpzeI.net
>>59,60
256はmodじゃなくて&255を取る
確率的には大きい順じゃなくて9,97,17,13,7,5が良いのでは?
9,97,17,13,7,5でmodを取る場合、大きい数からそのままmodを取るのではなく2^48-1でmodを取った数値に対してmod
これで速度どうなる?
67:デフォルトの名無しさん
19/02/10 14:33:21.22 JrJlQQ/Q.net
>>63 それなんと言うプログラム?
68:デフォルトの名無しさん
19/02/10 14:41:11.23 fWGYOSi7.net
またこの流れ?
69:デフォルトの名無しさん
19/02/10 14:49:22.42 NRo2aHHT.net
mod 255にしたら遅くなるんじゃねーの
0 < n mod 255 < 254
だぞ
70:デフォルトの名無しさん
19/02/10 14:49:43.12 NRo2aHHT.net
0 <= n mod 255 <= 254 だった
71:デフォルトの名無しさん
19/02/10 15:12:41.36 95x0uvij.net
>>62 python
# n%(2**24-1) を求める
def mod224get(n):
bn=(n.bit_length()+7)//8 #byte長
bb=n.to_bytes(bn,'little')
s= sum([int.from_bytes(bb[i:i+3],'little')
for i in range(0,bn,3) ]) #24bit毎の合計
return s%(2**24-1)
v0=12345678901234567890
#v0=0
n=v0**2
loop = 100000
print('テスト範囲は ',n,'~',n+loop-1,'loop回数=',loop)
start =time.process_time()
for i in range(n,n+loop):
if mod224get(n) != n%(2**24-1) :print('間違い見っけ',n)
end =time.process_time()
print('全問正解 かかった時間は、',end-start,'秒')
#
― 結果
テスト範囲は 152415787532388367501905199875019052100 ~ 152415787532388367501905199875019152099 loop回数= 100000
全問正解 かかった時間は、 0.2963889999999765 秒
72:デフォルトの名無しさん
19/02/10 16:02:45.96 8pY6FeJB.net
>>64 アドバイスありがとう。 それは思ったんだけど、現代の言語がそんなところで手抜きはしていないだろうと信じてテストしていなかった。
今、&255 に変えてテストしてみたけど、スピードの差はなかった。 そう言う発想は昔は非常に重要だったけど、今は言語の中で吸収してるみたいだね。
その下のアドバイスに対しては、何故ご自分では試されないのですか?
あまりやるつもりはないのは、mod 2**24-1 と言うのが理解できていないからです。 これで早くなるのなら色々試してみたいんですが、このリストを作るだけでもかなりの時間がかかりめげてます。
73:デフォルトの名無しさん
19/02/10 16:33:26.08 H2rtpzeI.net
>>70
剰余の順番に関しては確率がこんなんだからやで
3 / 5 = 0.600000
4 / 7 = 0.571429
4 / 9 = 0.444444
7 / 13 = 0.538462
9 / 17 = 0.529412
49 / 97 = 0.505155
テーブルは9, 97, 17, 13, 7, 5の物で良いんやで?
多倍長整数の剰余より32bit整数/64bit整数の剰余のほうが計算量が少ないから、
(32bitの場合) 2^24-1で剰余を取ったものに対して9, 17, 13, 7, 5の剰余で平方数かどうかを調べる
(64bitの場合) 2^48-1で剰余を取ったものに対して9, 97, 17, 13, 7, 5の剰余で平方数かどうかを調べる
なしてこんなことができるかってーと、
2^24-1(=16777215)の因数に
74:5, 7, 9, 13, 17が、2^48-1(=281474976710655)の因数に5, 7, 9, 13, 17, 97含まれているからやで
75:デフォルトの名無しさん
19/02/10 16:55:58.44 8pY6FeJB.net
>>71 あまり深入りするつもりはないけど、mod 2**24-1 でチェックしたら、
mod 9, 97, 17, 13, 7, 5 でチェックする必要はないと言う事?
ま、数学を解いてるつもりは全くなく、プログラムの練習だからいかに沢山の人が素晴らしいプログラムを見せてくれるかにしか興味はない。
プログラムを書かない人は自分にとってはなんの意味もない。
76:デフォルトの名無しさん
19/02/10 17:11:01.79 H2rtpzeI.net
>>72
ちゃうねん
mod 2**24-1をした数値に対してmod 9, 17, 13, 7, 5 でチェックするねん
もしくはmod 2**48-1をした数値に対してmod 9, 97, 17, 13, 7, 5 でチェックするねん
77:デフォルトの名無しさん
19/02/10 19:32:43.48 /XsfFvRM.net
>> 73
2重に剰余を取るのはGMPみたく多倍長なら意味があるけど, 32/64bit固定長ならあまり意味はない
複数回剰余を確認する必要があるから多倍長から固定長(32/64bit)にしていて, 更に因数を使えば剰余を求めるための除算の代わりに乗算が使えるから因数の多い2^24 - 1や2^48 - 1を採用してる
78:デフォルトの名無しさん
19/02/11 00:35:41.13 8Hdd2FlG.net
>>62
ガウス少年が見出したように
Σ1,2,…,n-2,n-1=n *(n +1) /2
なので、
n の mod 2^24-1
と
Σ1,2,…,n-2,n-1 =n *(n +1) /2 の mod 2^24-1
が等しいのは自明だと思うけど、
そういう、ちょっとした数学を使わず
Σ1,2,…,n-2,n-1
をloopで和を算出し mod 2^24-1 して比較する
n の mod 2^24-1 と比較する
プログラムを作れという題なんだろうか…
79:デフォルトの名無しさん
19/02/11 00:37:45.16 8Hdd2FlG.net
>>75
「比較する」を二度書いちゃった、訂正
Σ1,2,…,n-2,n-1
の和をloopで算出し mod 2^24-1 して
n の mod 2^24-1 と比較する
80:デフォルトの名無しさん
19/02/11 00:57:54.78 HnU/OI7o.net
>>75 お題をよく読んだら? 24bit = 3バイト毎に取り出してその合計に対して 2**24-1 をしなさいと言う問題だよ。
数学なんて関係ない。 ただ出されたお題をプログラムで解いてくれ。
81:デフォルトの名無しさん
19/02/11 01:10:25.11 8Hdd2FlG.net
>>75 ごめん
Σ1,2,…,n-2,n-1=n *(n +1) /2
は間違えた。こうだ
Σ1,2,…,n-2,n-1=n *(n -1) /2
82:デフォルトの名無しさん
19/02/11 01:12:22.73 8Hdd2FlG.net
>>77
ゴメンなんか誤解したかも、よく読む
83:デフォルトの名無しさん
19/02/11 01:15:22.84 f+GXhEiR.net
ある数nのビット表記方法によって一致する/しないを答えればいいのかな
84:デフォルトの名無しさん
19/02/11 01:42:54.29 8Hdd2FlG.net
>>62 Perl5
use bignum (l=>GMP);
use feature say;
sub sum24 {
my $v = $_[0];
if ($v > 0) {
my $d = int($v / 2**24);
my $m = $v % 2**24; # $v - $d * $f6;
$m + sum24($d);
} else {
0;
}
}
$n = 12345678901234567890;
say $n % (2**24 -1);
say sum24($n) % (2**24 -1);
実行結果
~ $ perl 13_62.pl
13189905
13189905
85:デフォルトの名無しさん
19/02/11 01:47:30.91 8Hdd2FlG.net
>>81
8行目後半の#から右
# $v - $d * $f6;
は削除し忘れたcommentです スマソ
86:デフォルトの名無しさん
19/02/11 01:53:44.12 C0KPLnD/.net
どうみても自明なんだから確認も糞もないけどな
87:デフォルトの名無しさん
19/02/11 01:57:28.89 8Hdd2FlG.net
お題を作ることの難しさだよな…
88:デフォルトの名無しさん
19/02/11 02:15:34.48 HnU/OI7o.net
>>83 自明もへったくれもない。 プログラムが正しいかどうかの確認だよ。
プログラムも書かないで能書きだけ垂れてもなんの足しにもならない。 ここはプログラムのお題スレだよ。
>>62 のお題は前スレのGMP の整数平方根の説明の文章の中から取り出したもの。
つまり、ここまでできると、次は n**2%(2**24-1) のリストを作れと言うお題になるんだろうけど、時間がかかりすぎるからお題にするのはやめた。
このリストができないと実際の平方数の高速チェックが出来ないじゃん。
89:デフォルトの名無しさん
19/02/11 02:26:56.38 8Hdd2FlG.net
そんな怒るなよ。
暖かくしてぐっすり�
90:ィ休みよ
91:デフォルトの名無しさん
19/02/11 02:31:44.77 HnU/OI7o.net
しかしここまで複雑な処理をして本当に早くなるのかどうか疑問だけどな。 mod 2**24-1 って結構時間がかかりそうな気がする。
92:デフォルトの名無しさん
19/02/11 02:35:42.19 ucqIUq+7.net
>>85
一番能書き垂れてんのお前だろ
クソみたいな御託並べる前に自分のことを考えろっつったろうが
GMPが一体どこで
> n**2%(2**24-1) のリスト
なんか使ってんだ?91で割った場合のテーブルでさえ12byte必要だってのにどうやってそんな巨大なテーブル用意するんだ?
GMPの中身なんか数学の成果の塊だぞ?お前が数学したくないだか出来ないだか知らんがアルゴリズム考えるようなスレでクソみたいなこと喋ってんじゃねぇよ
お前はコードを書いても価値がない
93:デフォルトの名無しさん
19/02/11 02:35:55.83 8Hdd2FlG.net
単なるbitmaskで済まない様な場合
あるいは除算して剰余を求めるなら
さんざ研究されていると思うから自力で1から考える前に
先人の業績を知れってことだろ
アバヨ ノシ
94:デフォルトの名無しさん
19/02/11 02:36:00.30 IhaR3BEX.net
お題:ポーカーダイス
通常のサイコロを5個振って出た目をポーカーの役になぞってそれぞれの出現確率を求める。
役は、5カード、4カード、ストレート、フルハウス、3カード、2ペア、1ペア、ブタ(ノーペア)
例えば出た目が 1,1,3,1,4 ならスリーカード。2,5,4,6,3 ならストレート。
5カードは6/(6^5)、4カードは(5*5*6)/(6^5)というように数学的に
求めても難しくはないのですが、ここはプログラミングのスレなので
全通り力技でチェックして求めてみてください。
解答例:C言語 URLリンク(ideone.com)
95:デフォルトの名無しさん
19/02/11 03:04:24.50 8Hdd2FlG.net
6^5総当りせよってか…
native compiler系言語で力技か
96:デフォルトの名無しさん
19/02/11 03:20:03.89 K/18SmCD.net
Jニキはよ
97:デフォルトの名無しさん
19/02/11 03:29:32.98 ucqIUq+7.net
大した数じゃないからズルいことが出来る
URLリンク(ideone.com)
98:デフォルトの名無しさん
19/02/11 04:00:05.29 8Hdd2FlG.net
お なかなか
99:デフォルトの名無しさん
19/02/11 08:16:46.17 b3B7Bg4u.net
python3
URLリンク(ideone.com)
最後の出力部分はpython 3.6以降だと
for k,v in hand.items(): print("{} :\n {} / 7776 ({} %)".format(k,v, round(100*v/7776,2)))
でいけるけど実行環境が3.5なのでやむなく
100:デフォルトの名無しさん
19/02/11 16:44:30.42 xTuBWJbc.net
なんか数学でもできる力技お題増えてきたな
もっとプログラミングじゃないとできないような良いお題無いんだろうか
101:デフォルトの名無しさん
19/02/11 17:22:02.16 7gZS39yo.net
>>96
そんなの存在しないんじゃない?
102:デフォルトの名無しさん
19/02/11 17:28:00.80 6aFdKLEP.net
確率の問題でも特定の疑似乱数と種を使った偏りを求めるとかは数学では難しい
103:さまよえる蟻人間
19/02/11 17:37:44.75 adj8EvAq.net
お題: 日本語文字とカッコ { } とスラッシュ(/)で構成された入力文字列Sが与えられる。{ }で囲まれ、かつ
スラッシュで区切られた部分文字列について、それぞれ場合分けを行って、複数の文字列のリストに展開して改行区切りで出力せよ。
カッコの対応が間違っている場合はERRORを出力せよ。
(例1) {ひまわり/あさがお}は{植物/花}です。
(出力結果)
ひまわりは植物です。
あさがおは植物です。
ひまわりは花です。
あさがおは花です。
104:さまよえる蟻人間
19/02/11 17:59:47.38 BEdrdhIs.net
なお、展開の順序
105:については問わない。カッコがなくなるまで繰り返し展開せよ。
106:さまよえる蟻人間
19/02/11 18:20:25.29 BEdrdhIs.net
(1) {あ{いう/え}/お{か/き}/く}け{こ}
(2) さ{し/す}せそ{{た/ち}つ/て}と
107:デフォルトの名無しさん
19/02/11 19:00:31.50 MkFOBvt9.net
ネストありかよ、ちょっと面倒だな
108:さまよえる蟻人間
19/02/11 19:03:55.20 BEdrdhIs.net
ヒント: まず、適当な場所でブツ切りにしてノードに分ける。
109:デフォルトの名無しさん
19/02/11 19:20:26.84 Q78+FEDq.net
>>101 で、どう言う結果を正解とするの?
110:さまよえる蟻人間
19/02/11 19:32:34.31 BEdrdhIs.net
(1)の答え(※ソート済み)
あいうけこ
あいうけこ
あえけこ
あえけこ
おかけこ
おかけこ
おきけこ
おきけこ
くけこ
くけこ
くけこ
くけこ
111:さまよえる蟻人間
19/02/11 19:33:13.25 BEdrdhIs.net
(2)の答え(※ソート済み)
さしせそたつと
さしせそちつと
さしせそてと
さしせそてと
さすせそたつと
さすせそちつと
さすせそてと
さすせそてと
112:デフォルトの名無しさん
19/02/11 19:36:37.18 MkFOBvt9.net
これでいいのか?
> (1) {あ{いう/え}/お{か/き}/く}け{こ}
あ いう け こ
あ え け こ
お か け こ
お き け こ
く け こ
> (2) さ{し/す}せそ{{た/ち}つ/て}と
さ し せそ た つ と
さ す せそ た つ と
さ し せそ ち つ と
さ す せそ ち つ と
さ し せそ て と
さ す せそ て と
113:デフォルトの名無しさん
19/02/11 19:37:56.93 MkFOBvt9.net
あれ?
変化しないケースも出力するの?
114:さまよえる蟻人間
19/02/11 19:40:50.96 BEdrdhIs.net
>>107
間違い。
115:さまよえる蟻人間
19/02/11 19:46:19.44 adj8EvAq.net
ごめんなさい。間違えました。重複は単一化して下さい。
116:さまよえる蟻人間
19/02/11 19:52:58.89 adj8EvAq.net
>>105-106 >>109 間違い。
117:さまよえる蟻人間
19/02/11 20:21:24.27 BEdrdhIs.net
単純に場所分けを樹木図で考えると重複ができるようだ。すみません。
118:デフォルトの名無しさん
19/02/11 20:48:49.82 uHNor3GB.net
お題:Aが真であるならばBが真である ことをプログラムしなさい。
119:さまよえる蟻人間
19/02/11 21:04:41.39 BEdrdhIs.net
アホちゃいまんねん、パーでんねん。
120:デフォルトの名無しさん
19/02/12 00:09:52.31 VqanzRzk.net
バカなのか?AとBに因果関係があるわけじゃないし、この世の全てがプログラム言語でマッピングできるわけじゃない、数学徒は帰れ
121:デフォルトの名無しさん
19/02/12 00:29:24.58 xM7yD0R2.net
const A = true;
const B = A === true ? true : false;
console.log(B);
122:デフォルトの名無しさん
19/02/12 01:58:51.98 ww6cDCbZ.net
>>113
If A = True Then
B = True
End if
123:デフォルトの名無しさん
19/02/12 01:59:52.12 /350tEey.net
>>113
!A&&B
124:デフォルトの名無しさん
19/02/12 02:31:32.61 qK/pLy4w.net
>>118 python
B = A
125:デフォルトの名無しさん
19/02/12 02:31:55.89 qK/pLy4w.net
>>113 の間違い
126:デフォルトの名無しさん
19/02/12 02:52:28.28 jwrsqhME.net
{あ{いう/え}/お{か/き}/く}けこ
あいうけこ
あえけこ
おかけこ
おきけこ
くけこ
さ{し/す}せそ{{た/ち}つ/て}と
さしせそたつと
さしせそちつと
さしせそてと
さすせそたつと
さすせそちつと
さすせそてと
127:デフォルトの名無しさん
19/02/12 07:13:30.28 WW36R8Qd.net
>>113
> Bが真である
をどう解釈するかによる
文字通りの解釈なら
If A Then Assert(B)
かな
Bを真にすると解釈するなら>>117が正解かな
>>116と>>119はAが偽の時にBを偽にしちゃうので誤りやね
128:デフォルトの名無しさん
19/02/12 09:01:25.53 eC1lEXzI.net
>>117も間違い。偽のときは未定義なんだからエラー吐かなきゃ
129:デフォルトの名無しさん
19/02/12 10:15:35.66 EWuoyvxz.net
未定義じゃねえだろアホ
130:デフォルトの名無しさん
19/02/12 10:18:36.24 eC1lEXzI.net
>>124
>>113
131:デフォルトの名無しさん
19/02/12 10:38:38.54 /lUdPPCt.net
Aが偽の時はエラー吐かなきゃいけないとかBを偽にしてはいけない
とかいうのは勝手な拡大解釈でしかない
132:デフォルトの名無しさん
19/02/12 10:45:59.39 dUnMTtNo.net
真面目に考えるだけ時間の無駄
133:デフォルトの名無しさん
19/02/12 11:03:54.75 8L309PqZ.net
>>125
アホかお前
AならばBでAが偽ならばそれは真だっつーの
義務教育からやり直せよ
134:デフォルトの名無しさん
19/02/12 11:18:15.32 eC1lEXzI.net
>>128
> AならばBでAが偽ならばそれは真だっつーの
えっ、どういうことなの?
それは
AならばB
のとき
AでないならばB
ということ?
BはAに関わらず真ということ?
> AならばBでAが偽ならばそれは真だっつーの
の意味がよくわからん…
135:デフォルトの名無しさん
19/02/12 11:29:33.12 dUnMTtNo.net
>>129
論理としては A => B (AならばB)は対偶論理 ¬B => ¬A (BでないならばAでない)を成り立たせるために通常 ¬A∨B (AでないかまたはBである) で定義される
つまり A => B という論理式は A が偽であれば B の真偽に依らず真になる
だから何だという話ではある
136:デフォルトの名無しさん
19/02/12 11:30:20.12 7Ldk0kbC.net
>>129
そう決まってるじゃん
前提が偽ならどんな推論でも導けるし真になる
論理学の初歩
137:デフォルトの名無しさん
19/02/12 11:36:13.30 puzbyhsI.net
AならばBと
Aが真ならばBが真
とは違うだろ
138:デフォルトの名無しさん
19/02/12 11:43:29.03 puzbyhsI.net
「AならばB」
と言う命題は
「Aが真でBが真である
Aが偽であればBは真である」という命題の
上の文の3行目のはじめの部分をプログラムしろということだぞ
139:デフォルトの名無しさん
19/02/12 11:45:33.01 puzbyhsI.net
4行目間違えた
140:デフォルトの名無しさん
19/02/12 12:10:48.64 2r3VUiS2.net
A: 自然数 : 1,2,3,・・・・・
B: 整数 : ・・・・・ , -2,-1,0,1,2,3,・・・・・
AならばBである
AでなければBでもない
BでなければAでもない
141:デフォルトの名無しさん
19/02/12 12:11:50.75 /o8EBvgR.net
>>99 Bash
URLリンク(ideone.com)
142:デフォルトの名無しさん
19/02/12 12:12:39.52 2r3VUiS2.net
>>135 間違い
A: 自然数 : 1,2,3,・・・・・
B: 整数 : ・・・・・ , -2,-1,0,1,2,3,・・・・・
AならばBである
Aでなければ不定
BでなければAでもない
143:デフォルトの名無しさん
19/02/12 12:31:09.58 eC1lEXzI.net
>>130
ありがとうこれは分かりやすい。
高校出てないけど義務教育は真面目にやったんだがなぁ…こんなのあったっけ?
144:デフォルトの名無しさん
19/02/12 12:36:07.27 puzbyhsI.net
そういうことは日本の教育問題になるからな
145:デフォルトの名無しさん
19/02/12 12:42:53.41 YxhBMJOC.net
>>99
146:デフォルトの名無しさん
19/02/12 12:43:36.37 YxhBMJOC.net
送信しちゃった
URLリンク(paiza.io)
147:さまよえる蟻人間
19/02/12 12:47:20.67 cy1s3mXO.net
>>136
よくできました。
お題: ひらがなで与えられた五段活用動詞の五段活用を表示しなさい。
明らかに五段活用動詞でない場合は、ERRORと表示しなさい。
148:デフォルトの名無しさん
19/02/12 13:39:39.30 dUnMTtNo.net
>>138
義務教育ではやらない
というか高校数学でも明示的に教えはしない(証明ではしばしば暗に使う)
そして大学の数学科では何をおいてもまず最初に学ぶ
149:デフォルトの名無しさん
19/02/12 14:05:55.07 /4hrfCEw.net
ゆとり以降は知らんが高校で習ったぞ
150:デフォルトの名無しさん
19/02/12 14:14:27.12 eC1lEXzI.net
高校が義務教育なら俺も高校行けたのに
151:デフォルトの名無しさん
19/02/12 16:12:20.21 MCXQbCzx.net
>>145
必要な感じがするのであれば高認受けて高卒と同等にでもなりなさい。昔の大検と違ってそれだけでも高卒扱いになる。
その後大学行くかどうかはご自由に。金と時間があまりないなら通信制ってのもあるよ。
この頃はネットの大学もあるな。よく知らんけど。
まあしかし既に社会人になって何十年も稼いできてしまった人の場合はもはやどうでも良い話かな。
152:デフォルトの名無しさん
19/02/12 17:14:44.20 AqcDbyue.net
>>138 理解したいと思った気持ちが大事。深入りの必要はない。
プログラムの世界というのは、客のニーズを知らなくてもなんでも解決しないといけないから、その時々で勉強するしかない。 実践の世界。
素地がある方が理解は早いとは思うが、気にすることは無い。
その時に必要なものを勉強すれば(理解できれば)良い。 全ての学問を習得するなんて不可能なんだから、学問なんてあまり気にしない方が良い。
ただ、論理的な思考訓練はやった方が良いとは思うが、大学でできるとは思わない方が良い。 ひたすらプログラムを続けた方が思考訓練になると思うぞ。
153:デフォルトの名無しさん
19/02/12 17:34:27.64 AqcDbyue.net
>>113 しかしさ、この日本語は日本語として成り立っていないんじゃないの?
日本語としても論理学としても
日本語の曖昧さを残したまま、お題にする方がおかしい。
これを自分の顧客に提示して見なさい。 バカじゃないのと言われるよ。 理解力がないと思われるだろうな。
154:デフォルトの名無しさん
19/02/12 18:50:16.09 zaXjz+ge.net
説教厨あらわる
155:デフォルトの名無しさん
19/02/12 19:11:01.53 Rw1aIHZT.net
>>132
その2つの意味後違うって言うならそうなるセマンティクスを提示してみせろや
「普通は」同等に扱うだろ
156:デフォルトの名無しさん
19/02/12 19:12:14.58 Rw1aIHZT.net
>>150
意味後違う → 意味が違う
157:デフォルトの名無しさん
19/02/12 19:59:08.96 mxj4fC0D.net
チコ 「A->Bの意味も知らずにボーっとコードかいているんじゃねよ!」
158:デフォルトの名無しさん
19/02/12 21:33:58.92 4uAoJeXz.net
>>99 Ruby
def hoge(str)
return str if str.match?(/\A[^{}\/]*\z/)
raise 'ERROR' if str.match?(/\A[^{]*}|{[^}]*\z/)
a, *b = str.scan(/(?<={|\A)[^{}]*(?=}|\z)/).map{|s| s.empty? ? [''] : s.split(?/)}
s = str.gsub(/(?:{|\A)[^{}]*(?:}|\z)/, '%s')
a.product(*b).flat_map{|e| hoge(s % e)}.uniq.sort
end
%w[
{あ{いう/え}/お{か/き}/く}け{こ}
さ{し/す}せそ{{た/ち}つ/て}と]
].each{|s| puts hoge(s), $/}
# =>
あいうけこ
あえけこ
おかけこ
おきけこ
くけこ
さしせそたつと
さしせそちつと
さしせそてと
さすせそたつと
さすせそちつと
さすせそてと
159:
19/02/12 22:11:55.07 afakhEje.net
>>133
>「Aが真でBが真である
>Aが偽であればBは真である」
完璧に間違っていますね…Aが偽であってBが偽であってもいいのです
あなた、もう馬鹿としかいいようがないですね、論理学の教科書が読めなかったの?いや、日本語が読めなかったの?
生きていること自体が罪悪といわずして何といえばいいのか…
死ね
160:
19/02/12 22:13:32.20 afakhEje.net
>>132
一緒ですよ
161:デフォルトの名無しさん
19/02/13 05:57:47.09 ttYQgqMy.net
お題
print(a)
のように変数の宣言や代入なしで
使用するとどうなろか
162:デフォルトの名無しさん
19/02/13 07:02:03.53 Xe5jZGpg.net
>>156
日本語でok
163:デフォルトの名無しさん
19/02/13 07:39:48.48 aN9MpGEF.net
EXCELシート名が1文字のシートが数シートある。これをwindows10でVB6を使いデータベースで読み取ってみせよ。
164:デフォルトの名無しさん
19/02/13 08:26:40.04 ds2YQTN5.net
>>154
だから>>134で4行目間違えたって書いてあるだろ
よく読め
165:デフォルトの名無しさん
19/02/13 08:38:42.75 ds2YQTN5.net
>>155
AならばBと
Aが真ならばBが真
が同じならば
AならばBと
Aが偽ならばBが真
と同じ
AならばBと
Aが偽ならばBが偽と
同じ
ということになるぞ?
これは同じじゃないから君の言ってることは
間違ってるということだな
166:デフォルトの名無しさん
19/02/13 08:43:59.85 ds2YQTN5.net
よく考えたらやっぱり同じだな
167:デフォルトの名無しさん
19/02/13 09:12:06.89 B8qJWD6e.net
>>160
糞コテの肩は持ちたくないがなんだこのくっそみたいな日本語は
「AならばB」と「Aが真ならばBが真」が同値ならば
「AならばB」と「Aが偽ならばBが真」と「Aが偽ならばBが偽」が同値
って言いたいのか?
同値になるわけねえだろ
ABの真偽は4パターンしかねえんだから、いくらお前が無能でも全4パターンくらい考えてからレスしろよ
大体、任意の命題Pに対して「P」と「Pは真である」が同値にならないケースってなんだよ
馬鹿も休み休み言えよホント
168:デフォルトの名無しさん
19/02/13 11:03:26.26 ds2YQTN5.net
>>162
>>161に「よく考えたら同じだな」って書いてあるじゃん
169:デフォルトの名無しさん
19/02/13 11:23:09.04 B8qJWD6e.net
「よく考えたらやっぱり同じだな」だけでは何と何が同じだと思ったのかわからない
悪びれた様子もなく前後の文脈からも推論不可
とてもまともとは思えない
170:デフォルトの名無しさん
19/02/13 11:31:27.70 ds2YQTN5.net
>>164
わかりにくくてごめんね
171:デフォルトの名無しさん
19/02/13 11:36:53.06 ttYQgqMy.net
>>156 Lua
print(a)
実行結果
nil
172:デフォルトの名無しさん
19/02/13 11:59:11.28 kZE3tAhm.net
言語とか使えるライブラリとか制限しないと
意味が無くなっている希ガス
言語指定した場合でも特定の文法を使っては
ならないとか制限加えると面白いものが
出来るような,,,
173:デフォルトの名無しさん
19/02/13 12:32:49.57 B8qJWD6e.net
>>165
お前の場合、わかりにくいんじゃなくてわかりえないの
日本語もおかしいし
174:デフォルトの名無しさん
19/02/13 12:36:48.35 ds2YQTN5.net
>>168
俺の文が不親切すぎたよな
ごめんねごめんねー
175:デフォルトの名無しさん
19/02/13 13:30:26.24 0cDEleYh.net
>>167 制限なんかしなくてよいよ。 ライブラリが嫌いならあまりライブラリが使えそうにないお題を出せばよいだけだし。
例えば正規表現ライブラリなんて装備されていない言語は殆どないだろうし、標準装備している言語とそうでない言語で不公平になるし。
使えるものはすべて駆使して解けばよいだろ。
176:デフォルトの名無しさん
19/02/13 15:40:07.94 0cDEleYh.net
>>113 python
if A: B=A
結果
Aが True の時 B(結果)= True
Aが False の時 B(結果)= None (変わらず)
Aが False の時 B(結果)= False (変わらず)
Aが False の時 B(結果)= True (変わらず)
177:デフォルトの名無しさん
19/02/13 18:13:27.57 ttYQgqMy.net
>>113 Lua
functio naraba(A, B)
if A == B then
return true
else
return B
end
end
178:デフォルトの名無しさん
19/02/13 18:26:24.24 J6DmHrNb.net
>>172 それちゃうよ。
A が False の時 B がFalseに限定される
179:デフォルトの名無しさん
19/02/13 18:27:28.53 J6DmHrNb.net
と言うか何を返してるんだろ。
180:デフォルトの名無しさん
19/02/13 19:13:38.60 ayAZ2qec.net
>>156
C言語のようなコンパイルする言語だとだいたいはコンパイル時にエラーになって実行不能だろうなあ(そうでない言語もあるかも知れないが)。
更に print がない言語もある。少なくともCの標準的なライブラリにはない。printf()やputs()のようなものはある。
なので変数宣言すればコンパイルは通るが今度はリンクで関数が見つからなくてエラーになりこれまた実行不能。
まあでも言語や環境で起こることは違って来るので答えは沢山出てくるかも知れない。(またはほとんど相手にされないかだ)。
181:デフォルトの名無しさん
19/02/13 21:01:39.06 7GscGWa9.net
お題
長方形のサイズが指定された時、その長方形に敷きつめられるパターン全て列挙
回転もおkかは好きに定めていい
例: 2 3
#
###
#
#
###
###
182:デフォルトの名無しさん
19/02/13 21:10:56.19 9nMuJOxB.net
回転もOKの場合は↓も入るってことかの?
##
#
183:デフォルトの名無しさん
19/02/14 00:46:56.24 QGThOkDI.net
>>176 なんか図が良くわからないな。
2 x 3 なら、そのパーツは, / は空きだとすると
*//
***
と
/**
―-
*//
*//
と
/**
/**
――
*//
**/
と
/**
//*
―
***
***
―-
みたいな感じかな。パーツの回転を許す許さないは自由という事。
3 x 3 の時は斜めのパーツも許すんだろうね。
*//
/*/
//*
これが一つのパーツ?
184:デフォルトの名無しさん
19/02/14 00:50:00.40 QGThOkDI.net
>>178 斜めのパーツは現実的には作れないし、組み合わせが膨大になるから、許さない方が良いのかも。
縦、横に繋がっていないパーツは除外かな。
185:デフォルトの名無しさん
19/02/14 01:06:21.81 QGThOkDI.net
これはかなり難しいお題になるんじゃないの。
パーツを少なくするためには、穴開きパーツも許さない方が良さそうだし。
パーツは、空白は 0 基本図形は 1として表した方が良いのかな。 2 x 3 なら
100
110
と
011
001
とか
186:デフォルトの名無しさん
19/02/14 01:48:31.30 anuIpNjB.net
>>178
同じ形のパーツだけで指定の長方形に敷き詰められる物を探すんじゃろ
187:一尾圭吾
19/02/14 02:36:27.51 ODX5iexG.net
プログラミング超初心者です
自動で2ちゃんにコピペを書き込むようになりたいんですがそれってかなりレベル高いスキルですかね?
188:一尾圭吾
19/02/14 02:39:09.40 ODX5iexG.net
>>10うわぁww眉毛剃っとるwwwwww
流石やな....ヤクザやんw
189:デフォルトの名無しさん
19/02/14 05:27:21.29 6Gfgc+2u.net
>>150
三値論理
190:デフォルトの名無しさん
19/02/14 06:52:51.05 J1vF692V.net
論理プログラムのスレはありませんか?
191:デフォルトの名無しさん
19/02/14 08:13:17.60 anuIpNjB.net
>>176
回転なしなら縦の長さの因数と横の長さの因数それぞれの組み合わせの四角を列挙すればええんよな?
回転ありだとどうすればええんじゃろ
192:デフォルトの名無しさん
19/02/14 08:52:55.94 QGThOkDI.net
>>176 必要なパーツの種類と個数を出せば良いんだろう。
回転させて使おうがどうしようが自由。
193:デフォルトの名無しさん
19/02/14 09:41:08.57 9tQDIG7c.net
>>178
パターン全てって書いてあるから単に 2^ドット数 だと思ってたんだが、人間が見た時に何らかの意味がありそうなパターンって事なの?
しかし何に意味がありそうと感じるかは主観の問題だからここでのお題としては適切ではないよね。
194:デフォルトの名無しさん
19/02/14 10:37:38.67 zlobX1y6.net
>>188
アホかお前
195:デフォルトの名無しさん
19/02/14 11:47:38.28 E3VWek4W.net
>>156 R
cat(a)
Error in cat(a) : object 'a' not found
Execution halted
196:デフォルトの名無しさん
19/02/14 11:52:48.67 rq9LAi9f.net
パーツの対称性を見るくらいしかなさそうだけどなぁ
90度回転で不変ならパーツ自体が正方形の場合しか充填し得ないし180度回転で不変なら長方形しかない
問題は対称性なしの場合で, 回転で得られる4通りの図形の組み合わせで少なくとも適当な長方形が作れる必要がある。
197:デフォルトの名無しさん
19/02/14 12:23:18.44 4UGy3YJR.net
出題者です、同じ1種類のパーツのみで敷き詰めるのを意図してた
回転なしは因数でおk、有りは一応解法は浮かんだが証明詰めきれなかったので好きに定めて良いって書いた
198:デフォルトの名無しさん
19/02/14 12:26:41.67 9tQDIG7c.net
>>189
じゃあどう解釈すれば良いのか?
199:デフォルトの名無しさん
19/02/14 12:30:54.48 9tQDIG7c.net
>>192
相変わらず問題がよくわからんよ。
200:デフォルトの名無しさん
19/02/14 12:50:46.70 QGThOkDI.net
>>192 2x3 の時は、1種類のパーツのみで埋めるとすると
111
111
の時は 111 x2個
1,1,1
1,1,1
の時は 1,1(2段) x3個
11,1
1,11
の時は 110,100(2段) 2個とするのか
11 が 2個と 1 が2個 は2種類のパーツだからダメ?
201:デフォルトの名無しさん
19/02/14 13:04:00.12 QGThOkDI.net
>>195 90度回転を認めると、11が、3個で良いね。
回転なしなら、111 2個と 1が6個
1
1
2段のパーツが3個
の3種類が解?
202:デフォルトの名無しさん
19/02/14 13:09:44.77 zlobX1y6.net
上でもう出てんだろ
回転なしなら辺の約数の組み合わせで全部だっつーの
203:デフォルトの名無しさん
19/02/14 13:44:03.89 icHgtaXf.net
ヤング図形考えて終わりじゃねえのコレ
204:デフォルトの名無しさん
19/02/14 13:56:13.92 iDdALKjs.net
abcd
badc
abab
cdcd
aaba
babb
abbb
aaab
同じパターンで埋めるのって色々できそうだけどこういうの全部いいの?
205:デフォルトの名無しさん
19/02/14 18:55:26.99 PxTMiczy.net
>>199 それ何種類も使ってるじゃん。
最低何れかの縦横が連続していないとダメだろ。 パズソーのピースじゃないの?
先ずは2x3で1種類のパーツのみで探せという問題の回答を決めてほしい。
206:デフォルトの名無しさん
19/02/14 19:04:40.56 iDdALKjs.net
いや全部一種類だよ
マスがくっついてないだけで
連続してるとは書かれてなかったし
207:デフォルトの名無しさん
19/02/14 19:56:54.06 IkVUbwNW.net
お題を正しく理解できてない模様 >>176をもう1度確認
1つ目の#は6個、2つ目の###は2個、
3つ目の# 4つ目の###
#は3個、 ###は1個で2行3列が全て埋まります
208:デフォルトの名無しさん
19/02/14 20:35:35.28 0TijawxO.net
>>210
例えば、 最初の基本バーツは何? どうしてこれが1種類なのかな?
abcd
badc
-----|
209:デフォルトの名無しさん
19/02/14 20:45:00.72 0TijawxO.net
>>202 全く理解できない。
>>176 はどうして一つ目が6個なのかな? 1個しかないじゃん?
一つ目って何? 二つ目って何?
URLリンク(i.imgur.com)
自分が今見てるのは、iPhone BB2C
210:デフォルトの名無しさん
19/02/14 20:54:16.99 RyxU72PZ.net
回答の良し悪しだけじゃない、良問悪問ってあるよね…
211:デフォルトの名無しさん
19/02/14 21:20:53.44 IkVUbwNW.net
>>204
1つ目の # は6個で2行3列が全て埋まります
###
###
2つ目の ### は2個で2行3列が全て埋まります
###
###
3つ目の #
# は3個で2行3列が全て埋まります
###
###
4つ目の ###
### は1個で2行3列が全て埋まります
###
###
212:デフォルトの名無しさん
19/02/15 01:14:00.78 Ap6BYDwO.net
>>203
回転を許す立場なら
@_
_@
って言うパーツ一種類だけからできてんじゃん
頭大丈夫か?
213:デフォルトの名無しさん
19/02/15 01:38:17.60 nnYj1Xkq.net
>>207 b と d が同じに見えるそっちこそ頭大丈夫か?
abcd
badc
これのどこが、
--@
@―
なんだよ。
214:デフォルトの名無しさん
19/02/15 02:40:42.39 YMyZWZCa.net
90度回転ありなら
# # # #
# と # と # と #
で敷きつめられる(=全て埋まる)という意味だろうけど
>>179に抵触するので、これは無しでしょ
215:デフォルトの名無しさん
19/02/15 06:13:53.42 hXoOelh0.net
>>208
回転を許すっつってんだろ氏ねよ糞無能が
@_
_@
を90度回転させたら
_@
@_
だろうが
市ね糞野郎
216:デフォルトの名無しさん
19/02/15 08:54:29.71 nnYj1Xkq.net
>>209 ようやくわかった。
a_
_a
_b
b_
などと並んでるものは、全て同じパーツとみなすという意味か。
>>176 のお題をよく見ると、2 x 3 の正解の回答が書かれてる。 斜めは許していないからダメだろ。
また、回転も許していない。
回転を許すなら
■
■ ■
というパーツも入るがそれは除外されてるから、回転も無しだ。
217:デフォルトの名無しさん
19/02/15 10:38:13.03 NxGjA/1R.net
>>199のような飛び飛びのパターンまで含めると5x5くらいのサイズなら解けそうでも
10x10くらいの大きさになるとほぼ解けなくなるか?
218:デフォルトの名無しさん
2
219:019/02/15(金) 11:04:50.72 ID:bh7l703i.net
220:デフォルトの名無しさん
19/02/15 11:10:32.09 bh7l703i.net
自己解決しました
この問題には答えなくていいです
221:デフォルトの名無しさん
19/02/15 11:21:16.25 bh7l703i.net
新問題
...
g0<-a
a->b
b->c
c->d
c'<-d
b'<-c'
a<-b'
d->e
e->f
f->g
f'<-g
e'<-f'
g->a1
g<-a1
a1->b1
....
に対して
任意の英数字から初めて右向きの矢印をnこ進んだ英数字を一瞬で割り出す簡単な計算方法を教えろ
左向きの矢印のときも教えろ
ここで英数字には好きな整数の値を対応させろ
222:デフォルトの名無しさん
19/02/15 11:22:43.57 bh7l703i.net
訂正
d<-e'
追加で
223:デフォルトの名無しさん
19/02/15 11:45:59.15 446NzcaO.net
日本語で書けや
224:デフォルトの名無しさん
19/02/15 11:55:27.68 bh7l703i.net
自己解決しました
この問題には答えなくていいです
>>217
これからは英語で書くので許して下さい
225:デフォルトの名無しさん
19/02/15 12:34:22.87 fQG3bb7R.net
自己解決ってどういうこと?
宿題貼ってるの?
226:デフォルトの名無しさん
19/02/15 12:41:19.85 bh7l703i.net
俺はキチガイだから相手にしないほうが良い
227:デフォルトの名無しさん
19/02/15 12:43:47.27 JRF4Gyvi.net
わけのわからん問題が続くなあ・・・
228:デフォルトの名無しさん
19/02/15 17:27:20.42 DyMjpctN.net
>>211
> 回転もおkかは好きに定めていい
229:デフォルトの名無しさん
19/02/16 02:08:44.97 3MiMTZ5E.net
しかしこの問題は回転を考えないと、曲がったパーツは不可能だね。
かなり単純化される。
230:デフォルトの名無しさん
19/02/16 02:11:07.89 vjYPWj7f.net
なんかスレが新しくなってから湧いてきたPythonのクソみたいなコード連投してる日本語がめちゃくちゃのやつうざい
231:デフォルトの名無しさん
19/02/16 02:16:11.76 bRo2S9Sl.net
前スレから居るんですよそいつね
232:デフォルトの名無しさん
19/02/16 02:35:08.75 zutWNq0P.net
2行3列で回転無しなら以下の4つが答え
#
###
#
#
###
###
回転ありなら更に以下の2つも
##
#
#
##
233:デフォルトの名無しさん
19/02/16 07:00:03.49 wpb3vJTT.net
>>226
> ##
> #
>
> #
> ##
この二つは90度回転した同じものやが
234:デフォルトの名無しさん
19/02/16 09:56:41.50 3oducOde.net
煽りではなく本当に発達障害またはそれに準ずる知的ボーダーを疑うレベルで頭悪いな
235:デフォルトの名無しさん
19/02/16 10:48:56.77 3MiMTZ5E.net
>>228 煽りじゃん。 プログラムを出してくれた方が良い。
236:デフォルトの名無しさん
19/02/16 12:54:53.60 8ZVYBrON.net
お題:バブルソートを実装せよ
237:デフォルトの名無しさん
19/02/16 15:04:36.49 PD6v+6Vh.net
>>230 Perl5
use feature qw{current_sub say};
sub bblsort {
for (0..@_) {
sub {
if (@_ >= 2) {
__SUB__->(@_[1..$#_]);
($_[1], $_[0]) = ($_[0], $_[1])
if $_[0] > $_[1]
}
}->(@_[$_..$#_]);
}
}
use List::Util shuffle;
@a = shuffle 1..20;
say "1) @a";
bblsort @a;
say "2) @a";
実行結果
~ $ perl 13_230_bblsort.pl
1) 13 6 18 7 15 1 11 8 20 16 14 4 9 10 12 17 2 19 5 3
2) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
238:デフォルトの名無しさん
19/02/16 16:42:44.41 hxDCwUVz.net
お題:数値Xを4つの方法で整数に丸めよ
(1) 0に向かう
(2) 0から遠ざかる
(3) 正の無限大に向かう
(4) 負の無限大に向かう
X = 0.5
=> 0 1 1 0
X = -1.1
=> -1 -2 -1 -2
X = 3
=> 3 3 3 3
239:デフォルトの名無しさん
19/02/16 16:47:26.55 akVlWGeE.net
ふたたび、円の内部の整数点を求めるやつ。個数ごとその最小半径を求める。
41個、47個とかが難し目だった気が。
240:デフォルトの名無しさん
19/02/16 17:07:10.46 wpb3vJTT.net
内部じゃなくて円周上のやろ
241:デフォルトの名無しさん
19/02/16 17:07:42.16 cltO7Ts6.net
>>230
242:デフォルトの名無しさん
19/02/16 17:27:32.65 PD6v+6Vh.net
>>232 組み込み使っていいんだよね? (面倒になるけど、使わなくても書けるけどサ…)
Perl5
use POSIX qw(floor ceil);
for (0.5, -1.1, 3) {
@a = ("$_ => ",
sprintf('%d', $_), #int($_),
($_ > 0 ? ceil($_) : ceil($_-1)),
ceil($_),
floor($_)
);
print "@a\n";
}
実行結果
~ $ perl 13_232_round.pl
0.5 => 0 1 1 0
-1.1 => -1 -2 -1 -2
3 => 3 3 3 3
243:デフォルトの名無しさん
19/02/16 17:33:21.11 PfkkbXxw.net
>>230 Ruby
def bs(ary)
ary.tap do |a|
(a.size**2).times do
(a.size - 1).times do |i|
a[i + 1], a[i] = a[i, 2] if a[i] > a[i + 1]
end
end
end
end
p bs([3, 1, 4, 15, 92]) # => [1, 3, 4, 15, 92]
>>232
sgn = -> n {n <=> 0}
r4 = -> n {n.floor}
r3 = -> n {-r4[-n]}
r2 = -> n {sgn[n] * r3[n.abs]}
r1 = -> n {sgn[n] * r4[n.abs]}
[0.5, -1.1, 3].each{|i| puts 'x = %p => %p %p %p %p' % [i, r1[i], r2[i], r3[i], r4[i]]}
# =>
x = 0.5 => 0 1 1 0
x = -1.1 => -1 -2 -1 -2
x = 3 => 3 3 3 3
244:デフォルトの名無しさん
19/02/16 17:34:37.44 PD6v+6Vh.net
>>236 これだと
入力が0のとき
>(2) 0から遠ざかる
が-1になっちゃう。
($_ > 0 ? ceil($_) : ceil($_-1)),
↓を
($_ >= 0 ? ceil($_) : ceil($_-1)),
とすべきでしょうね。スマソ
245:デフォルトの名無しさん
19/02/16 18:34:59.76 akVlWGeE.net
>>234
円周上が正解
246:デフォルトの名無しさん
19/02/16 22:05:48.79 lcFO2eao.net
>>262 J
f =: (**<.@|),(**>.@|),<.,>.
f 0.5
0 1 1 0
f _1.1
_1 _2 _1 _2
f 3
3 3 3 3
247:デフォルトの名無しさん
19/02/16 22:20:47.39 yZTjSyit.net
>>262に期待。
248:デフォルトの名無しさん
19/02/16 22:38:05.19 lcFO2eao.net
>>240
間違えました
262ではなく>>232でした
249:デフォルトの名無しさん
19/02/16 23:30:26.24 ReDOqu2L.net
>>232 octave
URLリンク(ideone.com)
250:
19/02/17 00:20:40.59 TOi2tzGo.net
>>232 をやろうとおもって、IEEE754 の float/double を直接触る方法を探しているのですが、なにかいい方法はないでしょうか…
251:デフォルトの名無しさん
19/02/17 00:24:40.58 xZHcxwZO.net
言語も言わずに(ry
URLリンク(qiita.com)
252:
19/02/17 00:30:56.20 TOi2tzGo.net
>>245
thx a lot !!
253:デフォルトの名無しさん
19/02/17 01:04:30.52 iMRi3xg5.net
>>244
あった
254:デフォルトの名無しさん
19/02/17 08:30:18.08 SfPzlMrR.net
>>233
これ
「Nに対し平面上の円で、その円周上の整数点がちょうどN個となる円の最小半径を求めよ」
例)
x^2 + y^2 = 1の整数点は4つだが、最小半径ではない。
(x-0.5)^2 + (y-0.5)^2 = 0.5の方が小さい。
255:デフォルトの名無しさん
19/02/17 09:09:13.01 SfPzlMrR.net
>>248
網羅的は、きりがなく一つの予想をたてた。
一つ半径を求めたら、次のような操作で半径を縮めたものと、真の最小半径が一致する予想。
半径rの整数点がNだとして。 rを整数比で縮小して中心をずらす。
たとえば上の例だと、r=1で、r → 2/4 r で、
(2x -1)^2 + (2y -1)^2 = 2r
両辺4倍して中心ずらした式
256:デフォルトの名無しさん
19/02/17 14:03:58.61 SfPzlMrR.net
整数比かけるので有理数半径ならすべて作り出せるから当たり前か
無駄なく高速に半径縮められる手法が大事か
257:デフォルトの名無しさん
19/02/17 14:06:36.33 SfPzlMrR.net
あと半径は間違いで、半径でなく右辺、半径^2 だった
258:デフォルトの名無しさん
19/02/17 19:56:30.00 qArvPplr.net
お題
パンケーキソートを実装する
259:デフォルトの名無しさん
19/02/18 22:45:5
260:7.31 ID:Gp2d+oGP.net
261:デフォルトの名無しさん
19/02/19 22:19:54.18 sIqHxZ1N.net
; Common Lisp
(defun flip (seq n)
(concatenate (type-of seq) (nreverse (subseq seq 0 (1+ n))) (subseq seq (1+ n))))
(defun pancake-sort (seq predicate)
(loop for s = seq
then (if j (flip (flip (flip (flip s (1- j)) (1- i)) i) j) s)
for i from 1 to (1- (length seq))
for j = (position (elt s i) s :end i :test predicate)
finally (return s)))
262:デフォルトの名無しさん
19/02/19 22:25:14.24 flzwRht/.net
お題:1から8までのカードを混ぜ、2枚そこから引いた時1枚目*10+2枚目が素数になる確率を求める。
ただし、
1. 小数第3位で四捨五入した後に回答すること。
2. 数学的な証明は禁止。
3. 各カードは9-その数字の数だけ存在する。 (例:1ならば8枚存在する)
4. 各カードが出る確率はまだ引かれていないカードの枚数に比例する。
263:デフォルトの名無しさん
19/02/20 00:45:46.98 VV/V1Ls8.net
python
print(0.31)
264:デフォルトの名無しさん
19/02/20 00:55:56.83 SyQ4jkRO.net
>>255 Perl5
$R = 0.0;
@s = map{($_) x (9-$_)} 1..8; #say "@s";
$t = @s; #say $t;
for (qw{11 13 17 23 31 37 41 43 47 53 61 67 71 73 83}) {
@o = split'';
my %h;
$h{$_}++ for @s;
my $r = $h{$o[0]}-- / $t;
$r *= $h{$o[1]}-- / ($t - 1);
$R += $r;
}
printf "%3.2f\n", $R;
実行結果
~ $ perl 13_255.pl
0.31
265:さまよえる蟻人間
19/02/20 00:58:27.33 5PEVWiZL.net
お題: URLで場所を指定された、インターネット上のテキストファイルをダウンロードするプログラム。
266:デフォルトの名無しさん
19/02/20 01:16:40.92 SyQ4jkRO.net
>>258 Perl5
require LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)');
use HTTP::Cookies;
$ua->cookie_jar(HTTP::Cookies->new(file => 'lwp-cookies.txt', autosave => 1));
$url = 'URLリンク(ftp.iij.ad.jp)';
$file = './0_README.txt';
$res = $ua->mirror($url, $file);
print $res->status_line, "\n";
実行例
~ $ perl 13_258.pl
200 OK
(※こういうのは、別に今急に考えたわけじゃなく、日常的に作って使っているのですぐ投稿できました)
267:さまよえる蟻人間
19/02/20 01:37:18.13 jAMIqMc6.net
WSHでダウンロードできるヤツ、おる?
268:デフォルトの名無しさん
19/02/20 01:40:03.52 SyQ4jkRO.net
>>260
wget.exe か curl 使えば?
269:デフォルトの名無しさん
19/02/20 02:05:29.76 Te3YpcYw.net
>>260 download.js
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.Open("GET", "URLリンク(ftp.iij.ad.jp) false);
xmlhttp.Send();
var stream = new ActiveXObject("Adodb.Stream");
stream.Type = 1;
stream.Open();
stream.Write(xmlhttp.responseBody);
stream.SaveToFile("0_README.txt", 2);
270:デフォルトの名無しさん
19/02/20 02:28:54.15 PF1BNO4k.net
pythonista stash 反則?
$ wget URLリンク(ftp.iij.ad.jp)
$ ls -la *.txt
0_README.txt (2.4K) 2019-02-20 02:21:45
271:デフォルトの名無しさん
19/02/20 02:51:47.69 qYIek1dL.net
>>255
;; Common Lisp
(let ((prime (list 2)))
(defun primep (n)
(loop for i from (1+ (car prime)) upto n
unless (find-if (lambda (j) (zerop (mod i j))) prime :from-end t)
do (push i prime))
(find n prime)))
(defun nearest (i j)
(/ (floor (+ (* i (expt 10 j)) 0.5)) (expt 10 j)))
(loop with cards = (loop for i from 1 to 8 nconc (make-list (- 9 i) :initial-element i))
and n = 0 and p = 0
for one in cards
do (loop for two in (remove one cards :count 1)
do (incf n)
if (primep (+ (* 10 one) two)) do (incf p))
finally (format t "~,3F~%" (nearest (* (/ p n)) 3)))
272:さまよえる蟻人間
19/02/20 03:32:48.09 jAMIqMc6.net
わーい、これでダウンロード制限された端末でDLできるぞ。やったー!
273:デフォルトの名無しさん
19/02/20 03:35:30.81 VV/V1Ls8.net
お題スレってそういう趣旨の場所だっけか?
274:デフォルトの名無しさん
19/02/20 03:43:59.14 J4bEIWoi.net
>>265
できるかなあ?どういう制限しているかにもよるぞ。
275:デフォルトの名無しさん
19/02/20 05:32:07.81 B2QSVSiS.net
PowerShell にも、curl, wget ある
get-alias (gal)
curl -> Invoke-WebRequest
wget -> Invoke-WebRequest
と言うことは、Ruby からも、そのコマンドを呼べる
276:268
19/02/20 09:30:07.43 B2QSVSiS.net
なんと、コマンドプロンプトで、
where curl と入力すると、
C:\Windows\System32\curl.exe
PowerShell の、curl, wget は、Invoke-WebRequest のエイリアスだけど、
curl.exe は、本物のcurl !
277:デフォルトの名無しさん
19/02/20 09:49:14.61 hK+DOQws.net
>>268>>269
死ね
278:デフォルトの名無しさん
19/02/20 09:52:59.12 PF1BNO4k.net
>>258 >>265 なんだ下心があったのか。
pythonista stash は以下のコマンドが使える。
help(StaSh) v0.7.1
alias, cat, cd, clear, cowsay, cp, crypt, curl, cut, dropbox_setup, du, easy_config, echo, edit, exit, fg, find, ftpserver, gci, gh, git, grep, head, httpserver,
jobs, kill, latte, ls, mail, man, mc, md5sum, mkdir, monkeylord, more, mount, mv, openin, pbcopy,
pbpaste, ping, Usage, pip, printenv, printhex, ptinstaller, pwd, py-tree, python, python3, quicklook, rm, rmdir, scp, selfupdate, sha1sum, sha256sum,
sort, source, sqlite, ssh, ssh-keygen, stashconf, tail, tar, telnet, totd, touch, umount, uniq, unzip, version,
wc, webviewer, wget, whatis, which, wol, xargs, zip
ftpserver や、httpserverは簡易的なサーバーになる。
ssh やscp 、tar zip などは使い道多そう。
webviewer てpython の下でブラウザが立ち上がってるみたいなんだがどんな使い道があるんだろう?
なお、標準python用のシェルは、xonsh と言うのがあるらしい。 xonsh では、標準的なshellコマンドと並行してpython スクリプトも実行できるから強力。
stash ではそれはできない。
279:268
19/02/20 10:31:11.68 B2QSVSiS.net
WSH はわからないけど、Ruby では、
require 'nokogiri'
html = `curl URLリンク(www.example.com)
# curl は書き込めないので、全角に変換した
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
280:デフォルトの名無しさん
19/02/20 11:50:14.05 hK+DOQws.net
>>272
死ね
281:デフォルトの名無しさん
19/02/20 13:03:16.05 agArr1lp.net
>>269
なんかね。UNIX系OSで昔からよく使われてたコマンドを移植したようで、tarとか他にも色々あったと思った。
282:デフォルトの名無しさん
19/02/20 17:40:48.68 3A0CDvTh.net
>>263 今度は反則なしで。python
import requests as r
url = 'URLリンク(ftp.iij.ad.jp)'
g= r.get( url )
print('読んだサイズは',len(g.text) )
# 読んだサイズは 2495
283:デフォルトの名無しさん
19/02/20 17:58:34.75 t1mcuuOB.net
>>258
Pharo 7
'URLリンク(ftp.iij.ad.jp)' asUrl retrieveContents
284:デフォルトの名無しさん
19/02/20 18:10:48.97 3A0CDvTh.net
>>276 ありがとう。 そんな言語も出てきてたんだ。 でも普及は難しいのかも。
285:デフォルトの名無しさん
19/02/20 23:51:29.53 MUUM+ThN.net
>>230 pike
URLリンク(ideone.com)
286:デフォルトの名無しさん
19/02/21 18:54:22.61 1axkeZoV.net
お題:リスト等を", "で結合して表示せよ。ただし最後は" and "で結合する。
URLリンク(ideone.com)
287:デフォルトの名無しさん
19/02/21 19:06:17.90 TUYpSwcQ.net
>>279 JavaScript
const arr = ['apple', 'banana', 'orange', 'mango'];
const last = ' and ' + arr.pop();
console.log(arr.join`, ` + last);
//=> apple, banana, orange and mango
288:デフォルトの名無しさん
19/02/21 19:17:09.75 eUc7EqKm.net
>>279 python
l = [ 1,2,3,4,5]
print( *l[0:-1] ,'and' , l[-1])
# 1 2 3 4 and 5
289:デフォルトの名無しさん
19/02/21 19:27:21.23 2zdYL4u2.net
>>279
Haskell
main = putStrLn.concat.concat $ [map addCanma (init lst),["and,"],[last lst]]
addCanma s = s ++ ","
lst = ["apple","banana","orange","mango"]
output:
apple,banana,orange,and,mango
290:デフォルトの名無しさん
19/02/21 19:31:58.30 lqQG1Hmj.net
題意は
list = ["red","green","black","white"]
print(", ".join(list[:-1]),"and",list[-1])
# red, green, black and white
だろ
291:デフォルトの名無しさん
19/02/21 19:43:56.00 YnrfI9YG.net
そこそこ優秀なのに肝心なところでいい加減だから試験に落ちるタイプだな
292:デフォルトの名無しさん
19/02/21 19:51:21.05 2zdYL4u2.net
>>283
あ、そうか。
不恰好だけどこれで一応対応。
(putStrLn.concat.concat) [init $ map addCanma $ init lst,[last $ init lst],[" and "],[last lst]]
スマートな解答も考えてみるよ。
293:デフォルトの名無しさん
19/02/21 20:16:12.26 eUc7EqKm.net
>>283 ごめん、俺もカンマが抜けてた。
数字の場合の模範解答をよろしく。
294:デフォルトの名無しさん
19/02/21 20:20:50.88 2zdYL4u2.net
スマートかは兎も角、一応マシな形に。
空リストや要素数1にも対応。
Haskell
main = putStrLn $ last2 lst
last2::[String] -> String
last2 [] = []
last2 [x] = x
last2 [x,y] = concat [x," and ", y]
last2 (x:xs) = x ++ "," ++ last2 xs
lst = map show [0..5]
output:
0,1,2,3,4 and 5
295:デフォルトの名無しさん
19/02/21 20:59:38.40 lqQG1Hmj.net
>>286
list = [str(x) for x in range(1,5)]
とか
map(lambda x : str(x), list)
でもおk
要素数が1個以下の場合はifで分離するだけなので略
296:デフォルトの名無しさん
19/02/21 21:09:47.73 y3+CYNZ6.net
>>279 Common Lisp
(format t "~{~@{~A~^~#,1^, ~}~^ and ~A~}~%" (list 1 2 3 4))
URLリンク(ideone.com)
297:デフォルトの名無しさん
19/02/21 21:21:18.07 lqQG1Hmj.net
intとstrが混在してる場合でも大丈夫で入力数が1以下ならそのまま返すワンライナー
python
print("".join(reversed(" ,".join(reversed([str(x) for x in list])).replace(",","dna ",1))))
JS+正規表現
console.log(list.join(", ").replace(/(.*),(.*?)+/,"$1 and $2"))
冷静に考えるとこの正規表現を使い回せばどの言語でもワンライナーなのでは
298:さまよえる蟻人間
19/02/21 21:21:18.26 PQQkN+7n.net
ラティス、再び。
お題: >>99 の場合分けのラティス構造を使って、複数の入力文字列について、共通部分をまとめ、1つの文字列に凝縮せよ。
(例)
ああい
ああ
あう
→あ{{あ{い/}}/う}
299:デフォルトの名無しさん
19/02/21 21:30:40.21 lqQG1Hmj.net
よく考えたらreversedなんか使わんでも
print((" ,".join([str(x) for x in list][::-1]).replace(",","dna ",1))[::-1])
でいけるか。join削減できるし
300:さまよえる蟻人間
19/02/21 21:32:52.15 3Jj6vI7v.net
出力文字列の長さは最短でなければならない。
場合分けの順序は問わないが、場合分けの項目について、ソートすることが望ましい。
301:さまよえる蟻人間
19/02/21 21:37:53.05 3Jj6vI7v.net
一番外側の { } は省略可能。
共通部分がないときは、/で区切って出力せよ。
302:279
19/02/21 21:39:50.99 1axkeZoV.net
>>279 pike
URLリンク(ideone.com)
303:さまよえる蟻人間
19/02/21 21:55:49.44 PQQkN+7n.net
このラティス構造っていうの、言語学ではよく使うらしいが、専門じゃないからよくわからない。
304:デフォルトの名無しさん
19/02/21 22:55:49.76 2zdYL4u2.net
>>279
>>292
Haskellでもワンライナー出来たけど、読みやすいとは思えない。(横長だし)
発想としては(要素数2以上なら)最後以外の要素(文字列)の頭に','追加して、全部結合して(大きな文字列にして)最後に頭の','を省く。
main = putStrLn.tail.concat $ if length lst < 2 then lst else [(concat.(map (\x -> ',':x)).init) lst," and ",last lst]
lst = map show [0..5]
個人的に >>287 の方が発想も読みやすさも好みの書き方。
(読み難くなるなら関数分ける派)
pythonのはワンライナーでも比較的読みやすくて、ちょっと羨ましい。
305:デフォルトの名無しさん
19/02/21 22:59:16.06 2zdYL4u2.net
>>297
弄ってる�
306:、ちに要素一以下だとバグ出てた。 正しいコードはこっち。 putStrLn.concat $ if length lst < 2 then lst else [(tail.concat.(map (\x -> ',':x)).init) lst," and ",last lst]
307:デフォルトの名無しさん
19/02/21 23:36:37.11 un6uIa3F.net
>>282 Perl5
sub f {
my $a = shift;
@_ ? (@_ > 1 ? "$a, " : "$a and ").f(@_) : $a
}
use feature say;
say f(qw[red green black white]);
say f(qw[apple banana]);
say f(qw[one]);
実行結果
~ $ perl 13_279_and.pl
red, green, black and white
apple and banana
one
308:デフォルトの名無しさん
19/02/22 00:04:51.72 EatRhjER.net
>>279 Squeak/Pharo Smalltalk
(0 to: 3) asCommaStringAnd "=> '0, 1, 2 and 3' "
309:デフォルトの名無しさん
19/02/22 00:07:27.55 wSgiM5bY.net
>>299
アンカー間違えた >>279 宛だった…orz
>>279 もう一丁 Perl5
sub g {
my $z = ' and '.pop @_ if @_ > 1;
join(', ', @_).$z;
}
use feature say;
say g(qw[red green black white]);
say g(qw[apple banana]);
say g(qw[one]);
実行結果
~ $ perl 13_279_and_2.pl
red, green, black and white
apple and banana
one
310:デフォルトの名無しさん
19/02/22 00:28:04.99 9PVAJM4v.net
>>300
そういう関数が既にあるの?
311:デフォルトの名無しさん
19/02/22 00:31:28.15 wSgiM5bY.net
>>302
ググルとあるみたいよ。
組み込みMethodを山のように持っていそう
312:デフォルトの名無しさん
19/02/22 00:49:22.57 9PVAJM4v.net
ほえー
313:デフォルトの名無しさん
19/02/22 06:09:02.19 HhIJRo4K.net
>>279
Smalltalk (Pharo 7)
#('apple' 'banana' 'orange' 'mango') asCommaStringAnd
==> 'apple, banana, orange and mango'
#('apple' 'banana') asCommaStringAnd
==> 'apple and banana'
#('apple') asCommaStringAnd
==> 'apple'
314:デフォルトの名無しさん
19/02/22 06:36:03.41 S1fPIClY.net
>>279 python
def f(lst): return ('空だ' if not lst else
','.join([str(x) for x in lst[:-1]])
+ (' and ' if len(lst)>1 else'')
+ str(lst[-1])
)
print(f( [ 1,'二',3,4,'五'] )) # 1,二,3,4 and 五
print(f( [1,'二'] )) # 1 and 二
print(f( [1] )) # 1
print(f([])) # 空だ
315:305
19/02/22 07:07:04.28 HhIJRo4K.net
しまった既出だったorz
316:デフォルトの名無しさん
19/02/22 07:58:55.12 6TNKk8ap.net
>>279 Ruby
f = -> a {a[0..-2].join(', ').sub(/.\K\z/, ' and ') << a[-1].to_s}
(-1..3).each{|r| puts f[[*0..r]]} # =>
0
0 and 1
0, 1 and 2
0, 1, 2 and 3
317:デフォルトの名無しさん
19/02/22 08:05:10.35 6TNKk8ap.net
>>291
あ{{あ{い/}}/う} // 12文字
ああい/ああ/あう // 9文字
あ{あい/あ/う} // 9文字
318:デフォルトの名無しさん
19/02/22 08:11:07.14 EatRhjER.net
>>302
Smalltalkは1970年代頃にはすでにこんな感じで
URLリンク(upload.wikimedia.org)
IDEからお絵かきツールまで処理系に組み込みだったので
生活に密着したメソッドが揃っています!
319:デフォルトの名無しさん
19/02/22 09:34:06.68 Ao+GBu+d.net
ラティス構造って要するに正規表現を生成すりゃーいいのか?
320:デフォルトの名無しさん
19/02/22 19:34:29.73 CY9He0wk.net
>>233
海外の人の
URLリンク(enigmaticcode.wordpress.com)
URLリンク(github.com)
321:デフォルトの名無しさん
19/02/22 19:43:43.74 FMSx1nas.net
お題:21の階乗を計算して表示せよ。
URLリンク(ideone.com)
322:デフォルトの名無しさん
19/02/22 20:16:33.34 9PVAJM4v.net
>>310
ほえー
323:デフォルトの名無しさん
19/02/22 21:26:47.09 py41/SAb.net
>>313 JavaScript
console.log(Array.from({length: 21}, (v, i) => i + 1).reduce((acc, v) => acc * v));
324:デフォルトの名無しさん
19/02/22 21:42:16.23 THqrb0iU.net
お題:
長方形のフィールドが与えられる。フィールド
325:上では上下左右に移動することができる。 各マスの数字はそのマスに入るためのコストを表す。 SからGに向かうときの最小コストを求めよ。(SとGのコストは0とする) S5111 1115G => 6 S1111 98642 G1111 => 9 13457689768914512071934123457 G4578901258901212890361125312 37890423076834712378998725463 16890102569615902061456259893 34582934765923812893461515232 57896123896741378915691551697 89013897456123457162501835479 21389046013845610034623405686 8902346203948612341356362342S => ?
326:デフォルトの名無しさん
19/02/22 21:49:55.63 2ARSyvEs.net
>>279
>>289
Common Lispで~#[...~]を使ってみた
(format t "~{~S~#[~; and ~:;, ~]~}" '(apple banana orage mango))
327:デフォルトの名無しさん
19/02/22 22:00:24.05 py41/SAb.net
こういう文章題好き。
でも実力不足で解けない…
a*かな?
328:デフォルトの名無しさん
19/02/22 22:05:57.76 AX8XyL13.net
>>313 Perl5
use bignum (l=>GMP);
$n = 1;
$n *= $_ for 2..21;
print "$n\n";
実行例
~ $ perl 13_313.pl
51090942171709440000
329:デフォルトの名無しさん
19/02/22 22:26:00.12 eQxt3fSm.net
>>313 JavaScript
console.log((f=n=>n?n*f(n-1):1)(21))
330:デフォルトの名無しさん
19/02/23 00:16:14.24 KCAwaSn8.net
>>313 Smalltalk-76
URLリンク(imgur.com)
331:デフォルトの名無しさん
19/02/23 00:27:48.65 khwKgkQE.net
>>313 python
#階乗1
import math
print('階乗1',math.factorial(21))
#階乗2
def f(n): return f(n - 1)*n if n > 1 else n
print('階乗2',f(21))
#階乗3
print('階乗3',(lambda x:f(21))( globals().update({"f": lambda n: n*f(n - 1) if n > 2 else n })))
332:デフォルトの名無しさん
19/02/23 01:14:20.46 9pS68leH.net
>>279
Kotlin script
最後のカンマを正規表現の文字列置換で and にしただけ。
println(listOf("abc", "def", "xyz").joinToString(", ").replace(",([^,]*)$".toRegex(), " and$1"))
出力
abc, def and xyz
333:デフォルトの名無しさん
19/02/23 01:19:01.99 CTQXI+x5.net
lispって組み込みで素数かどうか判定するやつ提供されてるのか、、、面白い!
334:デフォルトの名無しさん
19/02/23 02:10:15.51 9pS68leH.net
>>313
bc
n = 2; for (i = 3; i <= 21; i++) n*=i; n
出力
51090942171709440000
335:デフォルトの名無しさん
19/02/23 03:31:27.03 nkO3lkCA.net
>>313 dc
~$ echo 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ********************p | dc
51090942171709440000
336:デフォルトの名無しさん
19/02/23 03:32:49.90 R2s6jSV3.net
bcのってjsでもそのまま動くんだな。どっちもc由来文法だからか…
for(i=s=1;i<22;)s*=i++;s
337:デフォルトの名無しさん
19/02/23 04:30:09.37 R2s6jSV3.net
>>326
恥ずかしながらdcコマンド知らなかった…いいねこれ。
~$ echo "$(seq -s' ' 1 21)$(printf '* %.0s' {1..20})p" | dc
51090942171709440000
338:デフォルトの名無しさん
19/02/23 08:05:10.28 xK8/Ze+A.net
>>313 Maxima
print(21!);
339:デフォルトの名無しさん
19/02/23 08:20:33.48 znXlogg7.net
>>313
;; Common Lisp
(loop for i from 1 to 21 for r = i then (* r i) finally (print r))
340:デフォルトの名無しさん
19/02/23 08:45:55.53 DQY5g4De.net
>>316
これは、本格的だな
ダイクストラ・A* みたいな、順位キュー(priority queue)を使わないと、いけないかも
341:デフォルトの名無しさん
19/02/23 09:18:55.19 IBS/n4EE.net
>>313
Smalltalk (Pharo 7)
21 factorial
==> 51090942171709440000
342:デフォルトの名無しさん
19/02/23 12:01:13.29 +GfRG2y6.net
>>316 Java
URLリンク(ideone.com)
343:デフォルトの名無しさん
19/02/23 12:26:35.61 DQY5g4De.net
>>313
Ruby
( 1..21 ).inject( 1, :* )
344:デフォルトの名無しさん
19/02/23 12:44:52.28 W0y17tlk.net
python3
標準ライブラリ内の数学関数の例
import math
print(math.factorial(21))
そうじゃない例
from functools import reduce
print(reduce(lambda x,y:x*y,range(1,22)))
ちょっと高度化したお題
素数階乗n#を実装せよ
ただし素数階乗とは与えられた整数n以下のすべての素数の積である
例
1#=1
3#=4#=6
5#=30
345:デフォルトの名無しさん
19/02/23 13:22:30.58 R2s6jSV3.net
例がちょっと意味分からない
1#=1
1以下の素数の積なのに1?
3#=4#=6
何これ?
5#=30
これだけ分かる
346:デフォルトの名無しさん
19/02/23 13:25:18.18 R2s6jSV3.net
あ、二番目分かりました。
一行目だけ分からない
347:デフォルトの名無しさん
19/02/23 13:28:26.15 +GfRG2y6.net
>>335 Java
URLリンク(ideone.com)
348:デフォルトの名無しさん
19/02/23 13:34:54.53 vMXU7Bcc.net
>>337
掛けるもののがないときは1として扱うのが普通だよ
0!とかΠの項数が0の時とか
ただこの出題者はそのへん理解してないだろうから解く気がしない
349:デフォルトの名無しさん
19/02/23 13:40:09.27 R2s6jSV3.net
>>339
ありがとう。
数学と同じとは限らないんだね。
1も素数としてやってみます。
350:デフォルトの名無しさん
19/02/23 13:47:45.99 +eBVT+rm.net
>>340
1を素数と見做すんじゃなく空積の1
351:デフォルトの名無しさん
19/02/23 13:53:12.99 W0y17tlk.net
というか数学でも0!=1!=1と定義されているのが普通だと思うし
高校でも大学でもそうじゃない問題を見たことがないのだが
352:デフォルトの名無しさん
19/02/23 13:53:38.08 vMXU7Bcc.net
>>340
いや、むしろ数学の世界での慣習なんですけど…
353:デフォルトの名無しさん
19/02/23 14:28:11.89 DQY5g4De.net
単位元(初期値)だろ。
足し算は0、掛け算は1 が、単位元
Ruby で、
( 1..21 ).inject( 1, :* )
1 が初期値で、:* で掛け算メソッドを渡している
354:デフォルトの名無しさん
19/02/23 15:02:20.95 R2s6jSV3.net
>>342
> ただし素数階乗とは与えられた整数n以下のすべての素数の積である
と書いてあるので、
「与えられた整数n」が1
のとき、
「与えられた整数n以下のすべての素数の積」
は、
「1以下のすべての素数の積」
となり、
1以下に素数はないのになんで例で答がが1になってるんだろう、と思った次第です。
お騒がせしました。