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


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

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



1 名前:デフォルトの名無しさん [2019/02/03(日) 11:21:53.20 ID:72eosYJ+.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

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

※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/

2 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 11:24:10.97 ID:72eosYJ+.net]
お題1: 現在地の緯度、経度を出せ
緯度:、、、、
経度:、、、、
お題2: 東京都新宿区西新宿2丁目8-1 の緯度、経度を出せ
緯度:、、、
経度:、、、
お題3: お題2で求めた緯度経度から住所を出せ
郵便番号:、、、
住所:東京都、、、、

3 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 11:36:46.42 ID:72eosYJ+.net]
>>2 python (pythonista)
#お題1
import location
location.start_updates() # GPSデータ更新を開始
gps=location.get_location() # GPSデータを取得する
location.stop_updates()# GPSデータ更新を終了
print('お題1')
print('緯度:'+str(gps['latitude']))
print('経度:'+str(gps['longitude']))
#お題2
address_dict = {'Street': '西新宿2丁目8-1'}
gc = location.geocode(address_dict)[0]
print('お題2')
print('緯度:'+str(gc['latitude']))
print('経度:'+str(gc['longitude']))
#お題3
adr = location.reverse_geocode(gc)[0]
#print(adr)
print('お題3')
print('郵便番号:'+str(adr['ZIP']))
print('住所:'+str(adr['State'])+str(adr['City'])
+str(adr['Street']))
#結果
お題1
緯度:35.7----略
経度:139.6---略
お題2
緯度:35.689504
経度:139.6916833
お題3
郵便番号:160-0023
住所:東京都新宿区西新宿2丁目8番1号

4 名前:デフォルトの名無しさん [2019/02/03(日) 13:16:33.45 ID:jFMT64Yy.net]
平方数の判定は、たとえばmod 10だと、
1と4と5と6と9に限るってのを利用すると、違う場合は判定が速いんだろ。
mod n で複数やる。

1=1^2
4=2^2
9=3^2
6=4^2
5=5^2
6=6^2
9=7^2
4=8^2
1=9^2

5 名前:デフォルトの名無しさん [2019/02/03(日) 17:42:03.97 ID:oUppVF8S.net]
>>1


6 名前:デフォルトの名無しさん [2019/02/03(日) 18:09:22.12 ID:I0qputsI.net]
>>4
平方根求められる関数と、少数を整数にする関数があれ

7 名前:デフォルトの名無しさん [2019/02/03(日) 18:10:24.69 ID:I0qputsI.net]
途中で送っちゃった。。。

あれば簡単。

def isSqr(x):
if sqrt(x) - int(sqrt(x)) == 0:
return True
else:
return False

def sqrt(x):
return (x ** 0.5)

8 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 19:44:56.44 ID:t6DUu8Hq.net]
>>7 ならば
a=12345.678*12345.678
print('答え',a == (a**0.5) **2)
#結果 True

9 名前:デフォルトの名無しさん [2019/02/03(日) 20:21:31.21 ID:jFMT64Yy.net]
たとえば1000桁のを1000回、判定するとかsqrtでは時間かかるやつの高速化だろ

10 名前:デフォルトの名無しさん [2019/02/03(日) 20:45:32.58 ID:I0qputsI.net]
>>8
なにが「ならば」か分からんけど。。。

引く必要なかったし、ifの中身をそのまま返せば良かった。

def isSqr(x):
return (sqrt(x) == int(sqrt(x)))



11 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 21:02:27.70 ID:Hf9VDUPT.net]
>>9 だったらそういう問題の出し方にしないと。

例えば、1から1億までの間の数字で平方根数は何個あるか。 かかった時間と、PC 環境を示せ

また、処理できる最大に近い数字を示せ。

とかかな。

12 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 21:37:11.53 ID:MY6f7I+S.net]
なんか変なのいるね

13 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 21:40:28.27 ID:v4AFDwkt.net]
浮動小数経由する実装だと整数部が53bit超えると判定出来ない(つまり64bit整数以上だと不適切)
だから自前で浮動小数を経由せずに平方根の整数部分を求めることを考えるわけだけどナイーブにやると計算量が線型になるから二分探索やNewton(-Raphson)法で計算量減らすことを考えるわけだ

14 名前:デフォルトの名無しさん [2019/02/03(日) 22:02:19.65 ID:I0qputsI.net]
>>13

>>7で64ビット以上の数も判定出来てるけど。。。
(0が偶数ならTrue、奇数ならFalse)
小数点以下が0か(n.0かn.41421356みたいな形か)どうか見てるだけだし。
この辺はsqrt関数の性能に依存するだろうけど。

n = 100000000000000000000
m = 10000000000000000000

print(isSqr(n))
print(isSqr(m))

出力

True
False

15 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 23:09:07.55 ID:CD+d7Abc.net]
>>14
100000000000000000001がtrueになったりはしない?

16 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 23:21:43.21 ID:CD+d7Abc.net]
>>14
https://ideone.com/IntAcn

17 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 23:32:49.30 ID:J7OBWIJA.net]
>>14
何言ってんのおまえ

18 名前:デフォルトの名無しさん mailto:sage [2019/02/03(日) 23:38:52.32 ID:v4AFDwkt.net]
>>14
無能
たまたま判定出来るケースだけ抽出してるだけじゃねぇか

19 名前:デフォルトの名無しさん [2019/02/03(日) 23:57:14.35 ID:Hf9VDUPT.net]
>>13 それもわかる。 だったら解き方の最初にこういう目的で解いたとか書かないとね。
だから、解ける最大数値も書いたら良いと書いたんだが。

ちなみに、>>1 の1億までの数字は、iPhoneで28秒だった。

>>15 False になるよ。iphone のpythonista

また、言われたようにバイナリサーチ法や、巨大数のバイナリー検索も試してみたが、単純検索よりずっと時間がかかった。 ま、これは言語にもよると思うから何とも言えないが。 スクリプト系はステップ数が短い方が効率は良さそうだな。

>>18 だからさ、どこまでやるか条件を出せよ。 そしてサンプルを示してみたら? 実行時間も入れて。

プログラムと言うのは、使う現場で目的が違うんだから目的がわからなければ良い悪いなんて言えないだろ。

20 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 01:09:58.80 ID:tmXRmKR0.net]
このお客さんはどこから来たんだ



21 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 01:42:54.31 ID:8qZo3rbs.net]
アホ過ぎて話になんねー
線型探索と二分探索のどっちが速いかが言語によるとか頭腐ってんのか

線型探索: ttps://ideone.com/De3SOQ
二分探索: ttps://ideone.com/v9Twjx

22 名前:デフォルトの名無しさん [2019/02/04(月) 06:56:02.27 ID:eX/1kX5o.net]
>>19
寝てる間にフォローありがとう。


>>15
こっちはiPhoneのモバイルC内蔵のPythonだが、trueなった。
Haskellは63ビットだからかもう少し早い段階でなる。
ただ、>>19 の言う通り実用上問題無いのでは。
(階乗と違って入力より巨大な数が帰るわけじゃないし、Cとかだと十分実用かと)

64ビットまでの数では効率的なバージョンと、それ以上の数も対応するバージョンという感じではどうか。

sqrtも、n乗根は似た作りになるし。

# n√x
def sqrtn(n,x):
return (x ** (1/n))

23 名前:デフォルトの名無しさん [2019/02/04(月) 07:03:50.35 ID:eX/1kX5o.net]
どちらかと言うと**演算子(Cで言うpower関数)の実装に興味あるな。

24 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 07:23:18.46 ID:958Z8DnZ.net]
CRC 16bit 左送り 初期値 0x0000 生成多項式0x11021
テーブル使用せず演算でなるべくスマートに

25 名前:デフォルトの名無しさん [2019/02/04(月) 08:07:18.20 ID:jp+X9sqK.net]
指数関数,正弦関数,余弦関数のベキ級数展開(マクローリン展開)

www.synchronature.com/Science/Resources/e-s-c.jpg
www.synchronature.com/Science/Euler.html

26 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 10:14:05.68 ID:AyF9PYpz.net]
平方数 64ビット以上の巨大数
pythonista iPhone XS Max

def chk2(v1,v2):
 c = 0
 for i in range(v1, v2+1):
  if i == (i**0.5) **2: c += 1
 return c

v = 100000000000000000000
r = 10000000
v1= v-r
v2= v+r

start_time=time.clock()
c = chk2(v1,v2)
end_time=time.clock()
print('#結果',end_time-start_time,'秒','count=',c)
print('#範囲 ',v1,v2)

#結果 5.777779999999893 秒 count= 525
#範囲 99999999999990000000 100000000000010000000

27 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 10:28:47.91 ID:AyF9PYpz.net]
>>26 同じ条件でバイナリサーチをやってみ

28 名前:驍ニ若干だけ早かったが、誤差の範囲

#結果 5.770102000000406 秒 count= 525
#範囲 99999999999990000000 100000000000010000000
[]
[ここ壊れてます]

29 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 11:40:45.86 ID:GcH+yasd.net]
>>26-27
99,999,999,999,990,000,000~100,000,000,000,010,000,000の範囲には10,000,000,000しかないんだからcount=525ってのは演算誤差が出てるってことだよな?

99,999,999,980,000,000,001 (9,999,999,999^2)
100,000,000,020,000,000,001 (10,000,000,001^2)

30 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 11:43:01.09 ID:GcH+yasd.net]
いや、intにしてないからそれを調べてるってわけじゃないのか



31 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 14:12:20.36 ID:NdPuZxEw.net]
>>28 言われてみればフロートまでカウントするのはおかしいから判定を変えた。

 for i in range(v1, v2+1):
  if (i**0.5).is_integer(): c += 1
 return c

Core i3 3.2GHz Windows10 python3.7
#結果 8.15625 秒 count= 49151
#範囲 99999999999990000000 100000000000010000000

iPhoneの方が倍くらい早いかな。
#結果 4.180858 秒 count= 49151

Core i7のマシンもあるが大して期待できなさそうだな。

検算の意味で、1から1000までをカウントして31だったから正しいだろう。
なお、Python3の整数int型に最大値はない(上限なし)からどんな数でも扱える。

32 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 14:13:11.15 ID:fIIhQCXR.net]
もういいからお前

33 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 14:20:39.50 ID:GcH+yasd.net]
>>30
いや、誤差出てるやん

34 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 14:55:46.83 ID:GcH+yasd.net]
>>30
これ(count=49151)って99999999999999975424から100000000000000024575 (64bit浮動小数点数の16進表記で0x4415AF1D78B58C3Fから0x4415AF1D78B58C41)の平方根が、
10000000000 (64bit浮動小数点数の16進表記で0x4202A05F20000000)になって全部Trueになってるってことだろ

35 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 15:39:51.36 ID:8qZo3rbs.net]
99,999,999,980,000,000,001 = 999,999,999^2
100,000,000,000,000,000,000 = 10,000,000,000^2
100,000,000,020,000,000,001 = 10,000,000,001^2
なんだから[99'999'999'999'990'000'000, 100'000'000'000'010'000'000]の区間に入る平方数はただ一つ100,000,000,000,000,000,000しかない

「32bit符号なし整数にしか対応してません」っつうなら分かるがまともに判定出来てないのに「判定出来てる」主張する無能
やれ前提書けだの環境書けだの時間書けだのクソみてぇな御託並べる前に自分の頭の悪さを自覚しろ

36 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 18:19:40.08 ID:TMO26aZK.net]
>>34 申し訳ない。 2〜3日前にpython をiPhoneに入れて使い始めてただただ練習のためにお題を使わせてもらってた。
整数と、浮動小数の最大値にまで頭が回らなかった。
今日初めてWindowsにpythonを入れた状態で本当に気が回らなかった。
本当に申し訳ない。

バイナリサーチの方は1個と出るが、時間が膨大にかかる。

37 名前:デフォルトの名無しさん [2019/02/04(月) 20:37:21.99 ID:WZY4HG/d.net]
自然数の割り算関数mydivと余り関数mymodを作れ。

38 名前: mailto:sage [2019/02/04(月) 20:41:26.02 ID:CLpqTC7n.net]
>>36
C++ 多桁長演算(加減乗除)の一環として、mpz_class との互換を目指していました
https://mevius.5ch.net/test/read.cgi/tech/1434079972/51

39 名前:デフォルトの名無しさん mailto:sage [2019/02/04(月) 20:50:12.06 ID:Ly7rB5Pz.net]
>>36
これでいいの?javascript
const myDiv = (a, b) => ~~(a / b)
const myMod = (a, b) => a % b

40 名前:デフォルトの名無しさん [2019/02/04(月) 21:00:40.83 ID:mK0I6q3a.net]
modをみる
nが平方数なら、n=x^2 だが、n=x^2 (mod m)でもある
逆にmod で平方数でなければ、元々も平方数ではない

mod 3だと0 1 は平方数だが、2はちがう。3i + 2 は平方数にはならない



41 名前:デフォルトの名無しさん [2019/02/04(月) 2 ]
[ここ壊れてます]

42 名前:2:02:57.78 ID:eX/1kX5o.net mailto: >>38
元は小学生にプログラミングを通じて、割り算への理解を深めてもらえないかと考えたんで、単純に演算子を置き換えて欲しくないかも。。。
[]
[ここ壊れてます]

43 名前:デフォルトの名無しさん [2019/02/05(火) 10:18:54.39 ID:ij/1zyvC.net]
小学生の時テストで0点をもらった間違った割り算の
やり方をプログラムにしてみた。
--Lua
function myDivMod(a, b)
local r = 0
while a > 0 do
a = a - b
r = r + 1
end
return r, -a
end
print(myDivMod(10,3))
実行結果
4 2

44 名前:デフォルトの名無しさん mailto:sage [2019/02/05(火) 12:28:40.98 ID:aE6b0ZPr.net]
>>35 結局 整数のsqrt を作って、範囲の中に納まる最小最大の整数のsqrt を取り出し、その差(+1)がその範囲の中にある平方数の個数と言う作りにした。
ポイントとなった整数のsqrt が秀逸だったのでここに書いておく。 どんなに巨大な数字でも数回のシフト操作だけで終わるから極端にスピードが速い。
ソースは、gist.github.com/bnlucas/5879594

# integer square root
def isqrt_2(n):
 if n < 0:
  raise ValueError('Square root is not defined for negative numbers.')
 x = int(n)
 if x == 0:
  return 0
 a, b = divmod(x.bit_length(), 2)
#divmod(a, b)は(a // b, a % b)のタプルを返す。
#平方数は半分のビット数以下だからそれを最大値で計算開始
 n = 2 ** (a + b)
 while True:
  y = (n + x // n) >> 1 #1bit右にシフト
  if y >= n:
   return n
  n = y

-----------------
#結果 0.0 秒 count= 1000000000
#範囲   999999999000000000000000000000000000 1000000001000000000000000000000000000
#入力bit_length()=120 入力bit_length()=120
平方数範囲 999999999500000000 1000000000499999999
上の二乗  999999999000000000250000000000000000 1000000000999999998249999999000000001

45 名前:デフォルトの名無しさん [2019/02/05(火) 12:33:09.36 ID:NCwCR2JI.net]
>>41
おしいなw

46 名前:デフォルトの名無しさん mailto:sage [2019/02/05(火) 13:45:18.58 ID:jFne2R1T.net]
掛け算は簡単だけど除算は結構面倒
ttps://ideone.com/EheeYM

47 名前:デフォルトの名無しさん mailto:sage [2019/02/05(火) 18:45:08.63 ID:63VtM8MC.net]
>>42 の isqrt_2 を使ったパフォーマンステスト。
次のようなのを継ぎ足してテストした。 例によってインデント部は全角空白に変換してるから、逆変換しないと動かない。

def isSqrt(n):
 return n == isqrt_2(n)**2

v0 = 12345678901234567890
v = v0**2 # 整数平方される対象の数値
loopc = 100000 # をこの回数繰り返す。

isqr=0
start =time.process_time()
for i in range(loopc): isqr=isqrt_2(v)
end =time.process_time()

print('#整数平方(v)の結果',end-start,'秒')
print(' 繰返し数の回数',loopc),print(),print('#v0   ',v0)
print('#v=v0**2=',v),
print('#isqrt(v)',isqr)
print('#上の**2',isqr**2)
print('対象数vのビット数',v.bit_length(),'bit')
print('vが平方数かどうかの判定',isSqrt(v))
-----
#整数平方(v)の結果 0.22398700000002236 秒
繰返し数の回数 100000

#v0    12345678901234567890
#v=v0**2= 152415787532388367501905199875019052100
#isqrt(v) 12345678901234567890
#上の**2 152415787532388367501905199875019052100
対象数vのビット数 127 bit
vが平方数かどうかの判定 True

48 名前:デフォルトの名無しさん mailto:sage [2019/02/06(水) 11:48:35.22 ID:Cmz9AyOj.net]
>>45 同じ条件で2分探索法でやると 5.5秒かかった。

49 名前:デフォルトの名無しさん mailto:sage [2019/02/06(水) 16:53:02.43 ID:XOfzhWu4.net]
Wikipediaに Integer square root
https://en.wikipedia.org/wiki/Integer_square_root
があり、その中の 2.1 Using bitwise operations
の二つを試してみたが、
最初のrecursive call を使った方が 1.65秒
次の方が 2.05秒

早いことは早いが、>>42 >>45 のビットシフト法の方がかなり早い。
0.22秒
gmpのisqrt は早そうだが Pythonistaでは使えないので試していない。

50 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 01:16:57.63 ID:VrkeVQvn.net]
>>4 そう言う記述を度々見るんだが、具体的なプログラムを提示してくれない?



51 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 05:46:19.68 ID:ZuP9aKcb.net]
>>48
前スレでもGMPだって紹介されてたし
https://gmplib.org/manual/Perfect-Square-Algorithm.html
https://gmplib.org/repo/gmp/file/tip/mpn/generic/perfsqr.c

実際に使われる法はビルド時生成(https://gmplib.org/repo/gmp/file/tip/gen-psqr.c)だけど大抵の32/64bitシステムの場合は書いてある通り

52 名前:デフォルトの名無しさん [2019/02/09(土) 06:52:32.52 ID:y7fm8J5o.net]
なんでも放題にすればいい

お題
平方数は 256で割るとあまりの
パターンが44種類になるという。
この44種類を求める。

53 名前:デフォルトの名無しさん [2019/02/09(土) 08:05:29.21 ID:y7fm8J5o.net]
放題は、お題の間違い

54 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 08:30:22.91 ID:IKLi4q/e.net]
python
{(x**2) % 256 for x in range(0,256)}

55 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 10:10:19.89 ID:DhY4ZB+P.net]
Ruby
p 0x100.times.map{|i| i*i&0xFF}.uniq.sort
# => [0, 1, 4, [...], 233, 241, 249]

56 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 10:33:40.76 ID:O4yJeWlE.net]
javascript
[...new Set(function*(){for(let i=0;i<256;i++)yield i*i%256}())].sort((a,b)=>a-b)

57 名前:デフォルトの名無しさん [2019/02/09(土) 14:20:17.67 ID:BaccQTUO.net]
お題:ハノイの塔の最少手数は一種類しかないのか

58 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 14:22:34.94 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 15:28:05.40 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 17:42:33.15 ID:1XyVHoA8.net]
>>50 Perl5 その2

use List::MoreUtils 'uniq';
@a = uniq map{$_*$_%256} 0..255;
print "@a\n";



61 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 18:17:43.26 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 18:57:59.38 ID:luPnpF49.net]
>>59
# 256, 9, 5, 7, 13, 17 97
なんて順番ははおかしいんじゃねと思って、
大きい順にカットしたら、更に2割以上早くなった。

63 名前:デフォルトの名無しさん [2019/02/10(日) 06:54:30.87 ID:qszHu1wC.net]
>>50 J
64個の平方数を調べれば44種類のパターンはそろうようだ。
/:~ ~. 256| *: i. 64

64 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 12:16:48.56 ID:8pY6FeJB.net]
お題
ある数 n とする。
下位から24bit区切りの数を足し合わせてからmod 2^24-1 した数が、元の数nのmod 2^24-1 と一致することを確認しなさい。

65 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 12:27:09.74 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 14:27:03.54 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 14:33:21.22 ID:JrJlQQ/Q.net]
>>63 それなんと言うプログラム?

68 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 14:41:11.23 ID:fWGYOSi7.net]
またこの流れ?

69 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 14:49:22.42 ID:NRo2aHHT.net]
mod 255にしたら遅くなるんじゃねーの
0 < n mod 255 < 254
だぞ

70 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 14:49:43.12 ID:NRo2aHHT.net]
0 <= n mod 255 <= 254 だった



71 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 15:12:41.36 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 16:02:45.96 ID:8pY6FeJB.net]
>>64 アドバイスありがとう。 それは思ったんだけど、現代の言語がそんなところで手抜きはしていないだろうと信じてテストしていなかった。

今、&255 に変えてテストしてみたけど、スピードの差はなかった。 そう言う発想は昔は非常に重要だったけど、今は言語の中で吸収してるみたいだね。

その下のアドバイスに対しては、何故ご自分では試されないのですか?

あまりやるつもりはないのは、mod 2**24-1 と言うのが理解できていないからです。 これで早くなるのなら色々試してみたいんですが、このリストを作るだけでもかなりの時間がかかりめげてます。

73 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 16:33:26.08 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 16:55:58.44 ID:8pY6FeJB.net]
>>71 あまり深入りするつもりはないけど、mod 2**24-1 でチェックしたら、
mod 9, 97, 17, 13, 7, 5 でチェックする必要はないと言う事?

ま、数学を解いてるつもりは全くなく、プログラムの練習だからいかに沢山の人が素晴らしいプログラムを見せてくれるかにしか興味はない。
プログラムを書かない人は自分にとってはなんの意味もない。

76 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 17:11:01.79 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 19:32:43.48 ID:/XsfFvRM.net]
>> 73
2重に剰余を取るのはGMPみたく多倍長なら意味があるけど, 32/64bit固定長ならあまり意味はない
複数回剰余を確認する必要があるから多倍長から固定長(32/64bit)にしていて, 更に因数を使えば剰余を求めるための除算の代わりに乗算が使えるから因数の多い2^24 - 1や2^48 - 1を採用してる

78 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 00:35:41.13 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 00:37:45.16 ID:8Hdd2FlG.net]
>>75
「比較する」を二度書いちゃった、訂正

Σ1,2,…,n-2,n-1
の和をloopで算出し mod 2^24-1 して
n の mod 2^24-1 と比較する

80 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 00:57:54.78 ID:HnU/OI7o.net]
>>75 お題をよく読んだら? 24bit = 3バイト毎に取り出してその合計に対して 2**24-1 をしなさいと言う問題だよ。

数学なんて関係ない。 ただ出されたお題をプログラムで解いてくれ。



81 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:10:25.11 ID:8Hdd2FlG.net]
>>75 ごめん
Σ1,2,…,n-2,n-1=n *(n +1) /2
は間違えた。こうだ
Σ1,2,…,n-2,n-1=n *(n -1) /2

82 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:12:22.73 ID:8Hdd2FlG.net]
>>77
ゴメンなんか誤解したかも、よく読む

83 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:15:22.84 ID:f+GXhEiR.net]
ある数nのビット表記方法によって一致する/しないを答えればいいのかな

84 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:42:54.29 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:47:30.91 ID:8Hdd2FlG.net]
>>81
8行目後半の#から右
# $v - $d * $f6;
は削除し忘れたcommentです スマソ

86 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:53:44.12 ID:C0KPLnD/.net]
どうみても自明なんだから確認も糞もないけどな

87 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 01:57:28.89 ID:8Hdd2FlG.net]
お題を作ることの難しさだよな…

88 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:15:34.48 ID:HnU/OI7o.net]
>>83 自明もへったくれもない。 プログラムが正しいかどうかの確認だよ。
プログラムも書かないで能書きだけ垂れてもなんの足しにもならない。 ここはプログラムのお題スレだよ。

>>62 のお題は前スレのGMP の整数平方根の説明の文章の中から取り出したもの。
つまり、ここまでできると、次は n**2%(2**24-1) のリストを作れと言うお題になるんだろうけど、時間がかかりすぎるからお題にするのはやめた。
このリストができないと実際の平方数の高速チェックが出来ないじゃん。

89 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:26:56.38 ID:8Hdd2FlG.net]
そんな怒るなよ。
暖かくしてぐっすり

90 名前:ィ休みよ []
[ここ壊れてます]



91 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:31:44.77 ID:HnU/OI7o.net]
しかしここまで複雑な処理をして本当に早くなるのかどうか疑問だけどな。 mod 2**24-1 って結構時間がかかりそうな気がする。

92 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:35:42.19 ID:ucqIUq+7.net]
>>85
一番能書き垂れてんのお前だろ
クソみたいな御託並べる前に自分のことを考えろっつったろうが

GMPが一体どこで
> n**2%(2**24-1) のリスト
なんか使ってんだ?91で割った場合のテーブルでさえ12byte必要だってのにどうやってそんな巨大なテーブル用意するんだ?
GMPの中身なんか数学の成果の塊だぞ?お前が数学したくないだか出来ないだか知らんがアルゴリズム考えるようなスレでクソみたいなこと喋ってんじゃねぇよ
お前はコードを書いても価値がない

93 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:35:55.83 ID:8Hdd2FlG.net]
単なるbitmaskで済まない様な場合
あるいは除算して剰余を求めるなら
さんざ研究されていると思うから自力で1から考える前に
先人の業績を知れってことだろ
アバヨ ノシ

94 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 02:36:00.30 ID: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言語 https://ideone.com/4X62Am

95 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 03:04:24.50 ID:8Hdd2FlG.net]
6^5総当りせよってか…
native compiler系言語で力技か

96 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 03:20:03.89 ID:K/18SmCD.net]
Jニキはよ

97 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 03:29:32.98 ID:ucqIUq+7.net]
大した数じゃないからズルいことが出来る
https://ideone.com/yEcdPV

98 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 04:00:05.29 ID:8Hdd2FlG.net]
お なかなか

99 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 08:16:46.17 ID:b3B7Bg4u.net]
python3
https://ideone.com/k6Ea4j

最後の出力部分はpython 3.6以降だと
for k,v in hand.items(): print("{} :\n {} / 7776 ({} %)".format(k,v, round(100*v/7776,2)))
でいけるけど実行環境が3.5なのでやむなく

100 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 16:44:30.42 ID:xTuBWJbc.net]
なんか数学でもできる力技お題増えてきたな
もっとプログラミングじゃないとできないような良いお題無いんだろうか



101 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 17:22:02.16 ID:7gZS39yo.net]
>>96
そんなの存在しないんじゃない?

102 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 17:28:00.80 ID:6aFdKLEP.net]
確率の問題でも特定の疑似乱数と種を使った偏りを求めるとかは数学では難しい

103 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 17:37:44.75 ID:adj8EvAq.net]
お題: 日本語文字とカッコ { } とスラッシュ(/)で構成された入力文字列Sが与えられる。{ }で囲まれ、かつ
スラッシュで区切られた部分文字列について、それぞれ場合分けを行って、複数の文字列のリストに展開して改行区切りで出力せよ。
カッコの対応が間違っている場合はERRORを出力せよ。

(例1) {ひまわり/あさがお}は{植物/花}です。
(出力結果)
ひまわりは植物です。
あさがおは植物です。
ひまわりは花です。
あさがおは花です。

104 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 17:59:47.38 ID:BEdrdhIs.net]
なお、展開の順序

105 名前:については問わない。カッコがなくなるまで繰り返し展開せよ。 []
[ここ壊れてます]

106 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 18:20:25.29 ID:BEdrdhIs.net]
(1) {あ{いう/え}/お{か/き}/く}け{こ}
(2) さ{し/す}せそ{{た/ち}つ/て}と

107 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 19:00:31.50 ID:MkFOBvt9.net]
ネストありかよ、ちょっと面倒だな

108 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:03:55.20 ID:BEdrdhIs.net]
ヒント: まず、適当な場所でブツ切りにしてノードに分ける。

109 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 19:20:26.84 ID:Q78+FEDq.net]
>>101 で、どう言う結果を正解とするの?

110 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:32:34.31 ID:BEdrdhIs.net]
(1)の答え(※ソート済み)
あいうけこ
あいうけこ
あえけこ
あえけこ
おかけこ
おかけこ
おきけこ
おきけこ
くけこ
くけこ
くけこ
くけこ



111 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:33:13.25 ID:BEdrdhIs.net]
(2)の答え(※ソート済み)
さしせそたつと
さしせそちつと
さしせそてと
さしせそてと
さすせそたつと
さすせそちつと
さすせそてと
さすせそてと

112 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 19:36:37.18 ID:MkFOBvt9.net]
これでいいのか?

> (1) {あ{いう/え}/お{か/き}/く}け{こ}
あ いう け こ
あ え け こ
お か け こ
お き け こ
く け こ

> (2) さ{し/す}せそ{{た/ち}つ/て}と
さ し せそ た つ と
さ す せそ た つ と
さ し せそ ち つ と
さ す せそ ち つ と
さ し せそ て と
さ す せそ て と

113 名前:デフォルトの名無しさん mailto:sage [2019/02/11(月) 19:37:56.93 ID:MkFOBvt9.net]
あれ?
変化しないケースも出力するの?

114 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:40:50.96 ID:BEdrdhIs.net]
>>107
間違い。

115 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:46:19.44 ID:adj8EvAq.net]
ごめんなさい。間違えました。重複は単一化して下さい。

116 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 19:52:58.89 ID:adj8EvAq.net]
>>105-106 >>109 間違い。

117 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 20:21:24.27 ID:BEdrdhIs.net]
単純に場所分けを樹木図で考えると重複ができるようだ。すみません。

118 名前:デフォルトの名無しさん [2019/02/11(月) 20:48:49.82 ID:uHNor3GB.net]
お題:Aが真であるならばBが真である ことをプログラムしなさい。

119 名前:さまよえる蟻人間 mailto:sage [2019/02/11(月) 21:04:41.39 ID:BEdrdhIs.net]
アホちゃいまんねん、パーでんねん。

120 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 00:09:52.31 ID:VqanzRzk.net]
バカなのか?AとBに因果関係があるわけじゃないし、この世の全てがプログラム言語でマッピングできるわけじゃない、数学徒は帰れ



121 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 00:29:24.58 ID:xM7yD0R2.net]
const A = true;
const B = A === true ? true : false;
console.log(B);

122 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 01:58:51.98 ID:ww6cDCbZ.net]
>>113
If A = True Then
B = True
End if

123 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 01:59:52.12 ID:/350tEey.net]
>>113
!A&&B

124 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 02:31:32.61 ID:qK/pLy4w.net]
>>118 python
B = A

125 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 02:31:55.89 ID:qK/pLy4w.net]
>>113 の間違い

126 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 02:52:28.28 ID:jwrsqhME.net]
{あ{いう/え}/お{か/き}/く}けこ
 あいうけこ
 あえけこ
 おかけこ
 おきけこ
 くけこ

さ{し/す}せそ{{た/ち}つ/て}と
 さしせそたつと
 さしせそちつと
 さしせそてと
 さすせそたつと
 さすせそちつと
 さすせそてと

127 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 07:13:30.28 ID:WW36R8Qd.net]
>>113
> Bが真である
をどう解釈するかによる
文字通りの解釈なら
If A Then Assert(B)
かな
Bを真にすると解釈するなら>>117が正解かな
>>116>>119はAが偽の時にBを偽にしちゃうので誤りやね

128 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 09:01:25.53 ID:eC1lEXzI.net]
>>117も間違い。偽のときは未定義なんだからエラー吐かなきゃ

129 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 10:15:35.66 ID:EWuoyvxz.net]
未定義じゃねえだろアホ

130 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 10:18:36.24 ID:eC1lEXzI.net]
>>124
>>113



131 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 10:38:38.54 ID:/lUdPPCt.net]
Aが偽の時はエラー吐かなきゃいけないとかBを偽にしてはいけない
とかいうのは勝手な拡大解釈でしかない

132 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 10:45:59.39 ID:dUnMTtNo.net]
真面目に考えるだけ時間の無駄

133 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:03:54.75 ID:8L309PqZ.net]
>>125
アホかお前
AならばBでAが偽ならばそれは真だっつーの
義務教育からやり直せよ

134 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:18:15.32 ID:eC1lEXzI.net]
>>128
> AならばBでAが偽ならばそれは真だっつーの

えっ、どういうことなの?
それは
AならばB
のとき
AでないならばB
ということ?
BはAに関わらず真ということ?

> AならばBでAが偽ならばそれは真だっつーの

の意味がよくわからん…

135 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:29:33.12 ID:dUnMTtNo.net]
>>129
論理としては A => B (AならばB)は対偶論理 ¬B => ¬A (BでないならばAでない)を成り立たせるために通常 ¬A∨B (AでないかまたはBである) で定義される
つまり A => B という論理式は A が偽であれば B の真偽に依らず真になる

だから何だという話ではある

136 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:30:20.12 ID:7Ldk0kbC.net]
>>129
そう決まってるじゃん
前提が偽ならどんな推論でも導けるし真になる
論理学の初歩

137 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:36:13.30 ID:puzbyhsI.net]
AならばBと
Aが真ならばBが真
とは違うだろ

138 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:43:29.03 ID:puzbyhsI.net]
「AならばB」
と言う命題は
「Aが真でBが真である
Aが偽であればBは真である」という命題の
上の文の3行目のはじめの部分をプログラムしろということだぞ

139 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 11:45:33.01 ID:puzbyhsI.net]
4行目間違えた

140 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:10:48.64 ID:2r3VUiS2.net]
A: 自然数 : 1,2,3,・・・・・
B: 整数  : ・・・・・ , -2,-1,0,1,2,3,・・・・・

AならばBである
AでなければBでもない
BでなければAでもない



141 名前:デフォルトの名無しさん [2019/02/12(火) 12:11:50.75 ID:/o8EBvgR.net]
>>99 Bash
https://ideone.com/rMrZEf

142 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:12:39.52 ID:2r3VUiS2.net]
>>135 間違い
A: 自然数 : 1,2,3,・・・・・
B: 整数  : ・・・・・ , -2,-1,0,1,2,3,・・・・・

AならばBである
Aでなければ不定
BでなければAでもない

143 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:31:09.58 ID:eC1lEXzI.net]
>>130
ありがとうこれは分かりやすい。
高校出てないけど義務教育は真面目にやったんだがなぁ…こんなのあったっけ?

144 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:36:07.27 ID:puzbyhsI.net]
そういうことは日本の教育問題になるからな

145 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:42:53.41 ID:YxhBMJOC.net]
>>99

146 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 12:43:36.37 ID:YxhBMJOC.net]
送信しちゃった
https://paiza.io/projects/33hywoLmd5aRCzkTicwRUQ

147 名前:さまよえる蟻人間 mailto:sage [2019/02/12(火) 12:47:20.67 ID:cy1s3mXO.net]
>>136
よくできました。

お題: ひらがなで与えられた五段活用動詞の五段活用を表示しなさい。
明らかに五段活用動詞でない場合は、ERRORと表示しなさい。

148 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 13:39:39.30 ID:dUnMTtNo.net]
>>138
義務教育ではやらない
というか高校数学でも明示的に教えはしない(証明ではしばしば暗に使う)
そして大学の数学科では何をおいてもまず最初に学ぶ

149 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 14:05:55.07 ID:/4hrfCEw.net]
ゆとり以降は知らんが高校で習ったぞ

150 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 14:14:27.12 ID:eC1lEXzI.net]
高校が義務教育なら俺も高校行けたのに



151 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 16:12:20.21 ID:MCXQbCzx.net]
>>145
必要な感じがするのであれば高認受けて高卒と同等にでもなりなさい。昔の大検と違ってそれだけでも高卒扱いになる。
その後大学行くかどうかはご自由に。金と時間があまりないなら通信制ってのもあるよ。
この頃はネットの大学もあるな。よく知らんけど。

まあしかし既に社会人になって何十年も稼いできてしまった人の場合はもはやどうでも良い話かな。

152 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 17:14:44.20 ID:AqcDbyue.net]
>>138 理解したいと思った気持ちが大事。深入りの必要はない。

プログラムの世界というのは、客のニーズを知らなくてもなんでも解決しないといけないから、その時々で勉強するしかない。 実践の世界。
素地がある方が理解は早いとは思うが、気にすることは無い。

その時に必要なものを勉強すれば(理解できれば)良い。 全ての学問を習得するなんて不可能なんだから、学問なんてあまり気にしない方が良い。

ただ、論理的な思考訓練はやった方が良いとは思うが、大学でできるとは思わない方が良い。 ひたすらプログラムを続けた方が思考訓練になると思うぞ。

153 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 17:34:27.64 ID:AqcDbyue.net]
>>113 しかしさ、この日本語は日本語として成り立っていないんじゃないの?
日本語としても論理学としても
日本語の曖昧さを残したまま、お題にする方がおかしい。

これを自分の顧客に提示して見なさい。 バカじゃないのと言われるよ。 理解力がないと思われるだろうな。

154 名前:デフォルトの名無しさん mailto:age [2019/02/12(火) 18:50:16.09 ID:zaXjz+ge.net]
説教厨あらわる

155 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 19:11:01.53 ID:Rw1aIHZT.net]
>>132
その2つの意味後違うって言うならそうなるセマンティクスを提示してみせろや
「普通は」同等に扱うだろ

156 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 19:12:14.58 ID:Rw1aIHZT.net]
>>150
意味後違う → 意味が違う

157 名前:デフォルトの名無しさん [2019/02/12(火) 19:59:08.96 ID:mxj4fC0D.net]
チコ 「A->Bの意味も知らずにボーっとコードかいているんじゃねよ!」

158 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 21:33:58.92 ID: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 名前: mailto:「Aが真でBが真である」だけでいいのです [2019/02/12(火) 22:11:55.07 ID:afakhEje.net]
>>133
>「Aが真でBが真である
>Aが偽であればBは真である」

完璧に間違っていますね…Aが偽であってBが偽であってもいいのです
あなた、もう馬鹿としかいいようがないですね、論理学の教科書が読めなかったの?いや、日本語が読めなかったの?
生きていること自体が罪悪といわずして何といえばいいのか…

死ね

160 名前: mailto:sage [2019/02/12(火) 22:13:32.20 ID:afakhEje.net]
>>132
一緒ですよ



161 名前:デフォルトの名無しさん [2019/02/13(水) 05:57:47.09 ID:ttYQgqMy.net]
お題
print(a)
のように変数の宣言や代入なしで
使用するとどうなろか

162 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 07:02:03.53 ID:Xe5jZGpg.net]
>>156
日本語でok

163 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 07:39:48.48 ID:aN9MpGEF.net]
EXCELシート名が1文字のシートが数シートある。これをwindows10でVB6を使いデータベースで読み取ってみせよ。

164 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 08:26:40.04 ID:ds2YQTN5.net]
>>154
だから>>134で4行目間違えたって書いてあるだろ
よく読め

165 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 08:38:42.75 ID:ds2YQTN5.net]
>>155
AならばBと
Aが真ならばBが真
が同じならば
AならばBと
Aが偽ならばBが真
と同じ
AならばBと
Aが偽ならばBが偽と
同じ
ということになるぞ?
これは同じじゃないから君の言ってることは
間違ってるということだな

166 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 08:43:59.85 ID:ds2YQTN5.net]
よく考えたらやっぱり同じだな

167 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 09:12:06.89 ID:B8qJWD6e.net]
>>160
糞コテの肩は持ちたくないがなんだこのくっそみたいな日本語は

「AならばB」と「Aが真ならばBが真」が同値ならば
「AならばB」と「Aが偽ならばBが真」と「Aが偽ならばBが偽」が同値
って言いたいのか?

同値になるわけねえだろ
ABの真偽は4パターンしかねえんだから、いくらお前が無能でも全4パターンくらい考えてからレスしろよ

大体、任意の命題Pに対して「P」と「Pは真である」が同値にならないケースってなんだよ
馬鹿も休み休み言えよホント

168 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 11:03:26.26 ID:ds2YQTN5.net]
>>162
>>161に「よく考えたら同じだな」って書いてあるじゃん

169 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 11:23:09.04 ID:B8qJWD6e.net]
「よく考えたらやっぱり同じだな」だけでは何と何が同じだと思ったのかわからない
悪びれた様子もなく前後の文脈からも推論不可
とてもまともとは思えない

170 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 11:31:27.70 ID:ds2YQTN5.net]
>>164
わかりにくくてごめんね



171 名前:デフォルトの名無しさん [2019/02/13(水) 11:36:53.06 ID:ttYQgqMy.net]
>>156 Lua
print(a)
実行結果
nil

172 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 11:59:11.28 ID:kZE3tAhm.net]
言語とか使えるライブラリとか制限しないと
意味が無くなっている希ガス
言語指定した場合でも特定の文法を使っては
ならないとか制限加えると面白いものが
出来るような,,,

173 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 12:32:49.57 ID:B8qJWD6e.net]
>>165
お前の場合、わかりにくいんじゃなくてわかりえないの
日本語もおかしいし

174 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 12:36:48.35 ID:ds2YQTN5.net]
>>168
俺の文が不親切すぎたよな
ごめんねごめんねー

175 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 13:30:26.24 ID:0cDEleYh.net]
>>167 制限なんかしなくてよいよ。 ライブラリが嫌いならあまりライブラリが使えそうにないお題を出せばよいだけだし。
例えば正規表現ライブラリなんて装備されていない言語は殆どないだろうし、標準装備している言語とそうでない言語で不公平になるし。
使えるものはすべて駆使して解けばよいだろ。

176 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 15:40:07.94 ID: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 名前:デフォルトの名無しさん [2019/02/13(水) 18:13:27.57 ID:ttYQgqMy.net]
>>113 Lua
functio naraba(A, B)
if A == B then
return true
else
return B
end
end

178 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 18:26:24.24 ID:J6DmHrNb.net]
>>172 それちゃうよ。
A が False の時 B がFalseに限定される

179 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 18:27:28.53 ID:J6DmHrNb.net]
と言うか何を返してるんだろ。

180 名前:デフォルトの名無しさん [2019/02/13(水) 19:13:38.60 ID:ayAZ2qec.net]
>>156
C言語のようなコンパイルする言語だとだいたいはコンパイル時にエラーになって実行不能だろうなあ(そうでない言語もあるかも知れないが)。
更に print がない言語もある。少なくともCの標準的なライブラリにはない。printf()やputs()のようなものはある。
なので変数宣言すればコンパイルは通るが今度はリンクで関数が見つからなくてエラーになりこれまた実行不能。

まあでも言語や環境で起こることは違って来るので答えは沢山出てくるかも知れない。(またはほとんど相手にされないかだ)。



181 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 21:01:39.06 ID:7GscGWa9.net]
お題
長方形のサイズが指定された時、その長方形に敷きつめられるパターン全て列挙
回転もおkかは好きに定めていい
例: 2 3
#

###

#
#

###
###

182 名前:デフォルトの名無しさん mailto:sage [2019/02/13(水) 21:10:56.19 ID:9nMuJOxB.net]
回転もOKの場合は↓も入るってことかの?

##
#

183 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 00:46:56.24 ID:QGThOkDI.net]
>>176 なんか図が良くわからないな。

2 x 3 なら、そのパーツは, / は空きだとすると


*//
***

/**
――-
*//
*//

/**
/**
―――
*//
**/

/**
//*
――
***
***
――-
みたいな感じかな。パーツの回転を許す許さないは自由という事。
3 x 3 の時は斜めのパーツも許すんだろうね。
*//
/*/
//*
これが一つのパーツ?

184 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 00:50:00.40 ID:QGThOkDI.net]
>>178 斜めのパーツは現実的には作れないし、組み合わせが膨大になるから、許さない方が良いのかも。
縦、横に繋がっていないパーツは除外かな。

185 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 01:06:21.81 ID:QGThOkDI.net]
これはかなり難しいお題になるんじゃないの。
パーツを少なくするためには、穴開きパーツも許さない方が良さそうだし。

パーツは、空白は 0 基本図形は 1として表した方が良いのかな。 2 x 3 なら

100
110

011
001
とか

186 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 01:48:31.30 ID:anuIpNjB.net]
>>178
同じ形のパーツだけで指定の長方形に敷き詰められる物を探すんじゃろ

187 名前:一尾圭吾 mailto:sage [2019/02/14(木) 02:36:27.51 ID:ODX5iexG.net]
プログラミング超初心者です
自動で2ちゃんにコピペを書き込むようになりたいんですがそれってかなりレベル高いスキルですかね?

188 名前:一尾圭吾 mailto:sage [2019/02/14(木) 02:39:09.40 ID:ODX5iexG.net]
>>10うわぁww眉毛剃っとるwwwwww
流石やな....ヤクザやんw

189 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 05:27:21.29 ID:6Gfgc+2u.net]
>>150
三値論理

190 名前:デフォルトの名無しさん [2019/02/14(木) 06:52:51.05 ID:J1vF692V.net]
論理プログラムのスレはありませんか?



191 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 08:13:17.60 ID:anuIpNjB.net]
>>176
回転なしなら縦の長さの因数と横の長さの因数それぞれの組み合わせの四角を列挙すればええんよな?
回転ありだとどうすればええんじゃろ

192 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 08:52:55.94 ID:QGThOkDI.net]
>>176 必要なパーツの種類と個数を出せば良いんだろう。
回転させて使おうがどうしようが自由。

193 名前:デフォルトの名無しさん [2019/02/14(木) 09:41:08.57 ID:9tQDIG7c.net]
>>178
パターン全てって書いてあるから単に 2^ドット数 だと思ってたんだが、人間が見た時に何らかの意味がありそうなパターンって事なの?
しかし何に意味がありそうと感じるかは主観の問題だからここでのお題としては適切ではないよね。

194 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 10:37:38.67 ID:zlobX1y6.net]
>>188
アホかお前

195 名前:デフォルトの名無しさん [2019/02/14(木) 11:47:38.28 ID:E3VWek4W.net]
>>156 R
cat(a)

Error in cat(a) : object 'a' not found
Execution halted

196 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 11:52:48.67 ID:rq9LAi9f.net]
パーツの対称性を見るくらいしかなさそうだけどなぁ

90度回転で不変ならパーツ自体が正方形の場合しか充填し得ないし180度回転で不変なら長方形しかない
問題は対称性なしの場合で, 回転で得られる4通りの図形の組み合わせで少なくとも適当な長方形が作れる必要がある。

197 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 12:23:18.44 ID:4UGy3YJR.net]
出題者です、同じ1種類のパーツのみで敷き詰めるのを意図してた
回転なしは因数でおk、有りは一応解法は浮かんだが証明詰めきれなかったので好きに定めて良いって書いた

198 名前:デフォルトの名無しさん [2019/02/14(木) 12:26:41.67 ID:9tQDIG7c.net]
>>189
じゃあどう解釈すれば良いのか?

199 名前:デフォルトの名無しさん [2019/02/14(木) 12:30:54.48 ID:9tQDIG7c.net]
>>192
相変わらず問題がよくわからんよ。

200 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 12:50:46.70 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 13:04:00.12 ID:QGThOkDI.net]
>>195 90度回転を認めると、11が、3個で良いね。

回転なしなら、111 2個と 1が6個
1
1
2段のパーツが3個
の3種類が解?

202 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 13:09:44.77 ID:zlobX1y6.net]
上でもう出てんだろ
回転なしなら辺の約数の組み合わせで全部だっつーの

203 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 13:44:03.89 ID:icHgtaXf.net]
ヤング図形考えて終わりじゃねえのコレ

204 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 13:56:13.92 ID:iDdALKjs.net]
abcd
badc

abab
cdcd

aaba
babb

abbb
aaab

同じパターンで埋めるのって色々できそうだけどこういうの全部いいの?

205 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 18:55:26.99 ID:PxTMiczy.net]
>>199 それ何種類も使ってるじゃん。
最低何れかの縦横が連続していないとダメだろ。 パズソーのピースじゃないの?
先ずは2x3で1種類のパーツのみで探せという問題の回答を決めてほしい。

206 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 19:04:40.56 ID:iDdALKjs.net]
いや全部一種類だよ
マスがくっついてないだけで
連続してるとは書かれてなかったし

207 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 19:56:54.06 ID:IkVUbwNW.net]
お題を正しく理解できてない模様 >>176をもう1度確認
1つ目の#は6個、2つ目の###は2個、
3つ目の#    4つ目の###
   #は3個、    ###は1個で2行3列が全て埋まります

208 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 20:35:35.28 ID:0TijawxO.net]
>>210
例えば、 最初の基本バーツは何? どうしてこれが1種類なのかな?

abcd
badc

-----|

209 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 20:45:00.72 ID:0TijawxO.net]
>>202 全く理解できない。
>>176 はどうして一つ目が6個なのかな? 1個しかないじゃん?
一つ目って何? 二つ目って何?

https://i.imgur.com/GzvMfWg.jpg

自分が今見てるのは、iPhone BB2C

210 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 20:54:16.99 ID:RyxU72PZ.net]
回答の良し悪しだけじゃない、良問悪問ってあるよね…



211 名前:デフォルトの名無しさん mailto:sage [2019/02/14(木) 21:20:53.44 ID:IkVUbwNW.net]
>>204

1つ目の #   は6個で2行3列が全て埋まります

###
###


2つ目の ### は2個で2行3列が全て埋まります

###
###


3つ目の #
     #   は3個で2行3列が全て埋まります

###
###


4つ目の ###
     ### は1個で2行3列が全て埋まります

###
###

212 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 01:14:00.78 ID:Ap6BYDwO.net]
>>203
回転を許す立場なら
@_
_@
って言うパーツ一種類だけからできてんじゃん
頭大丈夫か?

213 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 01:38:17.60 ID:nnYj1Xkq.net]
>>207 b と d が同じに見えるそっちこそ頭大丈夫か?

abcd
badc

これのどこが、
--@
@―

なんだよ。

214 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 02:40:42.39 ID:YMyZWZCa.net]
90度回転ありなら
#     #   #     #
 # と #  と  # と # 
で敷きつめられる(=全て埋まる)という意味だろうけど
>>179に抵触するので、これは無しでしょ

215 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 06:13:53.42 ID:hXoOelh0.net]
>>208
回転を許すっつってんだろ氏ねよ糞無能が
@_
_@
を90度回転させたら
_@
@_
だろうが
市ね糞野郎

216 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 08:54:29.71 ID:nnYj1Xkq.net]
>>209 ようやくわかった。
a_
_a
_b
b_
などと並んでるものは、全て同じパーツとみなすという意味か。

>>176 のお題をよく見ると、2 x 3 の正解の回答が書かれてる。 斜めは許していないからダメだろ。
また、回転も許していない。
回転を許すなら

■ ■
というパーツも入るがそれは除外されてるから、回転も無しだ。

217 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 10:38:13.03 ID:NxGjA/1R.net]
>>199のような飛び飛びのパターンまで含めると5x5くらいのサイズなら解けそうでも
10x10くらいの大きさになるとほぼ解けなくなるか?

218 名前:デフォルトの名無しさん mailto:sage [2 ]
[ここ壊れてます]

219 名前:019/02/15(金) 11:04:50.72 ID:bh7l703i.net mailto: ...
d0<-a
a->b
b->c
c->d
c'<-d
b'<-c'
a<-b'
d->a2
d<-a2
a2->b2
....
に対して
任意の英数字から初めて右向きの矢印をnこ進んだ英数字を一瞬で割り出す簡単な計算方法を教えろ
左向きの矢印のときも答えろ
ここで英数字には好きな整数の値を対応させろ
[]
[ここ壊れてます]

220 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 11:10:32.09 ID:bh7l703i.net]
自己解決しました
この問題には答えなくていいです



221 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 11:21:16.25 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 11:22:43.57 ID:bh7l703i.net]
訂正
d<-e'
追加で

223 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 11:45:59.15 ID:446NzcaO.net]
日本語で書けや

224 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 11:55:27.68 ID:bh7l703i.net]
自己解決しました
この問題には答えなくていいです
>>217
これからは英語で書くので許して下さい

225 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 12:34:22.87 ID:fQG3bb7R.net]
自己解決ってどういうこと?
宿題貼ってるの?

226 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 12:41:19.85 ID:bh7l703i.net]
俺はキチガイだから相手にしないほうが良い

227 名前:デフォルトの名無しさん [2019/02/15(金) 12:43:47.27 ID:JRF4Gyvi.net]
わけのわからん問題が続くなあ・・・

228 名前:デフォルトの名無しさん mailto:sage [2019/02/15(金) 17:27:20.42 ID:DyMjpctN.net]
>>211
> 回転もおkかは好きに定めていい

229 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:08:44.97 ID:3MiMTZ5E.net]
しかしこの問題は回転を考えないと、曲がったパーツは不可能だね。
かなり単純化される。

230 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:11:07.89 ID:vjYPWj7f.net]
なんかスレが新しくなってから湧いてきたPythonのクソみたいなコード連投してる日本語がめちゃくちゃのやつうざい



231 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:16:11.76 ID:bRo2S9Sl.net]
前スレから居るんですよそいつね

232 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:35:08.75 ID:zutWNq0P.net]
2行3列で回転無しなら以下の4つが答え

#

###

#
#

###
###

回転ありなら更に以下の2つも

##
#

#
##

233 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 07:00:03.49 ID:wpb3vJTT.net]
>>226
> ##
> #
>
> #
> ##
この二つは90度回転した同じものやが

234 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 09:56:41.50 ID:3oducOde.net]
煽りではなく本当に発達障害またはそれに準ずる知的ボーダーを疑うレベルで頭悪いな

235 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 10:48:56.77 ID:3MiMTZ5E.net]
>>228 煽りじゃん。 プログラムを出してくれた方が良い。

236 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 12:54:53.60 ID:8ZVYBrON.net]
お題:バブルソートを実装せよ

237 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:04:36.49 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 16:42:44.41 ID: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 名前:デフォルトの名無しさん [2019/02/16(土) 16:47:26.55 ID:akVlWGeE.net]
ふたたび、円の内部の整数点を求めるやつ。個数ごとその最小半径を求める。
41個、47個とかが難し目だった気が。

240 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 17:07:10.46 ID:wpb3vJTT.net]
内部じゃなくて円周上のやろ



241 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 17:07:42.16 ID:cltO7Ts6.net]
>>230

242 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 17:27:32.65 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 17:33:21.11 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 17:34:37.44 ID:PD6v+6Vh.net]
>>236 これだと
入力が0のとき
>(2) 0から遠ざかる
が-1になっちゃう。

($_ > 0 ? ceil($_) : ceil($_-1)),

↓を

($_ >= 0 ? ceil($_) : ceil($_-1)),

とすべきでしょうね。スマソ

245 名前:デフォルトの名無しさん [2019/02/16(土) 18:34:59.76 ID:akVlWGeE.net]
>>234
円周上が正解

246 名前:デフォルトの名無しさん [2019/02/16(土) 22:05:48.79 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 22:20:47.39 ID:yZTjSyit.net]
>>262に期待。

248 名前:デフォルトの名無しさん [2019/02/16(土) 22:38:05.19 ID:lcFO2eao.net]
>>240
間違えました
262ではなく>>232でした

249 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 23:30:26.24 ID:ReDOqu2L.net]
>>232 octave
https://ideone.com/7nvSr1

250 名前: mailto:sage [2019/02/17(日) 00:20:40.59 ID:TOi2tzGo.net]
>>232 をやろうとおもって、IEEE754 の float/double を直接触る方法を探しているのですが、なにかいい方法はないでしょうか…



251 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 00:24:40.58 ID:xZHcxwZO.net]
言語も言わずに(ry
https://qiita.com/nia_tn1012/items/d26f0fc993895a09b30b

252 名前: mailto:sage [2019/02/17(日) 00:30:56.20 ID:TOi2tzGo.net]
>>245
thx a lot !!

253 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 01:04:30.52 ID:iMRi3xg5.net]
>>244
あった

254 名前:デフォルトの名無しさん [2019/02/17(日) 08:30:18.08 ID:SfPzlMrR.net]
>>233
これ


「Nに対し平面上の円で、その円周上の整数点がちょうどN個となる円の最小半径を求めよ」

例)
x^2 + y^2 = 1の整数点は4つだが、最小半径ではない。
(x-0.5)^2 + (y-0.5)^2 = 0.5の方が小さい。

255 名前:デフォルトの名無しさん [2019/02/17(日) 09:09:13.01 ID:SfPzlMrR.net]
>>248
網羅的は、きりがなく一つの予想をたてた。
一つ半径を求めたら、次のような操作で半径を縮めたものと、真の最小半径が一致する予想。

半径rの整数点がNだとして。 rを整数比で縮小して中心をずらす。

たとえば上の例だと、r=1で、r → 2/4 r で、
(2x -1)^2 + (2y -1)^2 = 2r
両辺4倍して中心ずらした式

256 名前:デフォルトの名無しさん [2019/02/17(日) 14:03:58.61 ID:SfPzlMrR.net]
整数比かけるので有理数半径ならすべて作り出せるから当たり前か
無駄なく高速に半径縮められる手法が大事か

257 名前:デフォルトの名無しさん [2019/02/17(日) 14:06:36.33 ID:SfPzlMrR.net]
あと半径は間違いで、半径でなく右辺、半径^2 だった

258 名前:デフォルトの名無しさん [2019/02/17(日) 19:56:30.00 ID:qArvPplr.net]
お題
パンケーキソートを実装する

259 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 22:45:5 ]
[ここ壊れてます]

260 名前:7.31 ID:Gp2d+oGP.net mailto: >>252 Perl5 (効率の良いアルゴリズムではないけれど、まずは…)

use List::Util shuffle;

@a = shuffle 1..20;
print "shuffled) @a\n";

sub flip {
($m, $n) = @_;
@a[0..$m] = reverse @a[0..$m];
@a[0..$n] = reverse @a[0..$n];
}

for $i (reverse 1..$#a) {
 $k = undef;
 for (0..$i) {
  $k = $_ if (!defined($k) or $a[$k] < $a[$_])
 }
 flip($k, $i) if $k < $i;
}

print "sorted ) @a\n";


実行例
~ $ perl 13_252_clumsy_pancake_sort.pl
shuffled) 18 6 2 13 16 1 12 15 10 4 17 20 9 7 19 14 5 11 3 8
sorted ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[]
[ここ壊れてます]



261 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 22:19:54.18 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 22:25:14.24 ID:flzwRht/.net]
お題:1から8までのカードを混ぜ、2枚そこから引いた時1枚目*10+2枚目が素数になる確率を求める。
ただし、
1. 小数第3位で四捨五入した後に回答すること。
2. 数学的な証明は禁止。
3. 各カードは9-その数字の数だけ存在する。 (例:1ならば8枚存在する)
4. 各カードが出る確率はまだ引かれていないカードの枚数に比例する。

263 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:45:46.98 ID:VV/V1Ls8.net]
python
print(0.31)

264 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:55:56.83 ID: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 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 00:58:27.33 ID:5PEVWiZL.net]
お題: URLで場所を指定された、インターネット上のテキストファイルをダウンロードするプログラム。

266 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 01:16:40.92 ID: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 = 'ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt';
$file = './0_README.txt';
$res = $ua->mirror($url, $file);
print $res->status_line, "\n";

実行例
~ $ perl 13_258.pl
200 OK


(※こういうのは、別に今急に考えたわけじゃなく、日常的に作って使っているのですぐ投稿できました)

267 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 01:37:18.13 ID:jAMIqMc6.net]
WSHでダウンロードできるヤツ、おる?

268 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 01:40:03.52 ID:SyQ4jkRO.net]
>>260
wget.exe か curl 使えば?

269 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 02:05:29.76 ID:Te3YpcYw.net]
>>260 download.js
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.Open("GET", "ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt", 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 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 02:28:54.15 ID:PF1BNO4k.net]
pythonista stash 反則?

$ wget ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt

$ ls -la *.txt
0_README.txt (2.4K) 2019-02-20 02:21:45



271 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 02:51:47.69 ID: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 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 03:32:48.09 ID:jAMIqMc6.net]
わーい、これでダウンロード制限された端末でDLできるぞ。やったー!

273 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 03:35:30.81 ID:VV/V1Ls8.net]
お題スレってそういう趣旨の場所だっけか?

274 名前:デフォルトの名無しさん [2019/02/20(水) 03:43:59.14 ID:J4bEIWoi.net]
>>265
できるかなあ?どういう制限しているかにもよるぞ。

275 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 05:32:07.81 ID:B2QSVSiS.net]
PowerShell にも、curl, wget ある

get-alias (gal)

curl -> Invoke-WebRequest
wget -> Invoke-WebRequest

と言うことは、Ruby からも、そのコマンドを呼べる

276 名前:268 mailto:sage [2019/02/20(水) 09:30:07.43 ID:B2QSVSiS.net]
なんと、コマンドプロンプトで、
where curl と入力すると、
C:\Windows\System32\curl.exe

PowerShell の、curl, wget は、Invoke-WebRequest のエイリアスだけど、
curl.exe は、本物のcurl !

277 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 09:49:14.61 ID:hK+DOQws.net]
>>268>>269
死ね

278 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 09:52:59.12 ID: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 mailto:sage [2019/02/20(水) 10:31:11.68 ID:B2QSVSiS.net]
WSH はわからないけど、Ruby では、

require 'nokogiri'

html = `curl www.example.com/`
# curl は書き込めないので、全角に変換した

doc = Nokogiri::HTML( html )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

280 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 11:50:14.05 ID:hK+DOQws.net]
>>272
死ね



281 名前:デフォルトの名無しさん [2019/02/20(水) 13:03:16.05 ID:agArr1lp.net]
>>269
なんかね。UNIX系OSで昔からよく使われてたコマンドを移植したようで、tarとか他にも色々あったと思った。

282 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 17:40:48.68 ID:3A0CDvTh.net]
>>263 今度は反則なしで。python

import requests as r

url = 'ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt'
g= r.get( url )

print('読んだサイズは',len(g.text) )

# 読んだサイズは 2495

283 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 17:58:34.75 ID:t1mcuuOB.net]
>>258
Pharo 7
'ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt' asUrl retrieveContents

284 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 18:10:48.97 ID:3A0CDvTh.net]
>>276 ありがとう。 そんな言語も出てきてたんだ。 でも普及は難しいのかも。

285 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 23:51:29.53 ID:MUUM+ThN.net]
>>230 pike
https://ideone.com/VZzxoA

286 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 18:54:22.61 ID:1axkeZoV.net]
お題:リスト等を", "で結合して表示せよ。ただし最後は" and "で結合する。
https://ideone.com/pVuO7T

287 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:06:17.90 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:17:09.75 ID:eUc7EqKm.net]
>>279 python

l = [ 1,2,3,4,5]

print( *l[0:-1] ,'and' , l[-1])

# 1 2 3 4 and 5

289 名前:デフォルトの名無しさん [2019/02/21(木) 19:27:21.23 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:31:58.30 ID:lqQG1Hmj.net]
題意は
list = ["red","green","black","white"]
print(", ".join(list[:-1]),"and",list[-1])
# red, green, black and white
だろ



291 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 19:43:56.00 ID:YnrfI9YG.net]
そこそこ優秀なのに肝心なところでいい加減だから試験に落ちるタイプだな

292 名前:デフォルトの名無しさん [2019/02/21(木) 19:51:21.05 ID:2zdYL4u2.net]
>>283
あ、そうか。
不恰好だけどこれで一応対応。

(putStrLn.concat.concat) [init $ map addCanma $ init lst,[last $ init lst],[" and "],[last lst]]

スマートな解答も考えてみるよ。

293 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 20:16:12.26 ID:eUc7EqKm.net]
>>283 ごめん、俺もカンマが抜けてた。
数字の場合の模範解答をよろしく。

294 名前:デフォルトの名無しさん [2019/02/21(木) 20:20:50.88 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 20:59:38.40 ID:lqQG1Hmj.net]
>>286
list = [str(x) for x in range(1,5)]
とか
map(lambda x : str(x), list)
でもおk

要素数が1個以下の場合はifで分離するだけなので略

296 名前:デフォルトの名無しさん [2019/02/21(木) 21:09:47.73 ID:y3+CYNZ6.net]
>>279 Common Lisp
(format t "~{~@{~A~^~#,1^, ~}~^ and ~A~}~%" (list 1 2 3 4))
https://ideone.com/6DcwO9

297 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:21:18.07 ID: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 名前:さまよえる蟻人間 mailto:sage [2019/02/21(木) 21:21:18.26 ID:PQQkN+7n.net]
ラティス、再び。

お題: >>99 の場合分けのラティス構造を使って、複数の入力文字列について、共通部分をまとめ、1つの文字列に凝縮せよ。

(例)
ああい
ああ
あう
→あ{{あ{い/}}/う}

299 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:30:40.21 ID:lqQG1Hmj.net]
よく考えたらreversedなんか使わんでも
print((" ,".join([str(x) for x in list][::-1]).replace(",","dna ",1))[::-1])
でいけるか。join削減できるし

300 名前:さまよえる蟻人間 mailto:sage [2019/02/21(木) 21:32:52.15 ID:3Jj6vI7v.net]
出力文字列の長さは最短でなければならない。
場合分けの順序は問わないが、場合分けの項目について、ソートすることが望ましい。



301 名前:さまよえる蟻人間 mailto:sage [2019/02/21(木) 21:37:53.05 ID:3Jj6vI7v.net]
一番外側の { } は省略可能。
共通部分がないときは、/で区切って出力せよ。

302 名前:279 mailto:sage [2019/02/21(木) 21:39:50.99 ID:1axkeZoV.net]
>>279 pike
https://ideone.com/0nn6Wt

303 名前:さまよえる蟻人間 mailto:sage [2019/02/21(木) 21:55:49.44 ID:PQQkN+7n.net]
このラティス構造っていうの、言語学ではよく使うらしいが、専門じゃないからよくわからない。

304 名前:デフォルトの名無しさん [2019/02/21(木) 22:55:49.76 ID: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 名前:デフォルトの名無しさん [2019/02/21(木) 22:59:16.06 ID:2zdYL4u2.net]
>>297
弄ってる

306 名前:、ちに要素一以下だとバグ出てた。

正しいコードはこっち。

putStrLn.concat $ if length lst < 2 then lst else [(tail.concat.(map (\x -> ',':x)).init) lst," and ",last lst]
[]
[ここ壊れてます]

307 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 23:36:37.11 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 00:04:51.72 ID:EatRhjER.net]
>>279 Squeak/Pharo Smalltalk

(0 to: 3) asCommaStringAnd "=> '0, 1, 2 and 3' "

309 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 00:07:27.55 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 00:28:04.99 ID:9PVAJM4v.net]
>>300
そういう関数が既にあるの?



311 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 00:31:28.15 ID:wSgiM5bY.net]
>>302
ググルとあるみたいよ。
組み込みMethodを山のように持っていそう

312 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 00:49:22.57 ID:9PVAJM4v.net]
ほえー

313 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 06:09:02.19 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 06:36:03.41 ID: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 mailto:sage [2019/02/22(金) 07:07:04.28 ID:HhIJRo4K.net]
しまった既出だったorz

316 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 07:58:55.12 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 08:05:10.35 ID:6TNKk8ap.net]
>>291
あ{{あ{い/}}/う} // 12文字
ああい/ああ/あう // 9文字
あ{あい/あ/う} // 9文字

318 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 08:11:07.14 ID:EatRhjER.net]
>>302
Smalltalkは1970年代頃にはすでにこんな感じで
https://upload.wikimedia.org/wikipedia/commons/6/6e/Smalltalk-76.blowup.png
IDEからお絵かきツールまで処理系に組み込みだったので
生活に密着したメソッドが揃っています!

319 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 09:34:06.68 ID:Ao+GBu+d.net]
ラティス構造って要するに正規表現を生成すりゃーいいのか?

320 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 19:34:29.73 ID:CY9He0wk.net]
>>233
海外の人の
https://enigmaticcode.wordpress.com/2013/10/15/enigma-136-twelve-point-square/
https://github.com/enigmatic-code/lattice_circles



321 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 19:43:43.74 ID:FMSx1nas.net]
お題:21の階乗を計算して表示せよ。
https://ideone.com/gQAd37

322 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 20:16:33.34 ID:9PVAJM4v.net]
>>310
ほえー

323 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 21:26:47.09 ID:py41/SAb.net]
>>313 JavaScript
console.log(Array.from({length: 21}, (v, i) => i + 1).reduce((acc, v) => acc * v));

324 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 21:42:16.23 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 21:49:55.63 ID:2ARSyvEs.net]
>>279
>>289
Common Lispで~#[...~]を使ってみた
(format t "~{~S~#[~; and ~:;, ~]~}" '(apple banana orage mango))

327 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:00:24.05 ID:py41/SAb.net]
こういう文章題好き。
でも実力不足で解けない…
a*かな?

328 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:05:57.76 ID:AX8XyL13.net]
>>313 Perl5

use bignum (l=>GMP);

$n = 1;
$n *= $_ for 2..21;

print "$n\n";


実行例
~ $ perl 13_313.pl
51090942171709440000

329 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:26:00.12 ID:eQxt3fSm.net]
>>313 JavaScript
console.log((f=n=>n?n*f(n-1):1)(21))

330 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 00:16:14.24 ID:KCAwaSn8.net]
>>313 Smalltalk-76

https://imgur.com/a/a7MClxL



331 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 00:27:48.65 ID: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 名前:デフォルトの名無しさん [2019/02/23(土) 01:14:20.46 ID:9pS68leH.net]
>>279
Kotlin script
最後のカンマを正規表現の文字列置換で and にしただけ。

println(listOf("abc", "def", "xyz").joinToString(", ").replace(",([^,]*)$".toRegex(), " and$1"))

出力

abc, def and xyz

333 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 01:19:01.99 ID:CTQXI+x5.net]
lispって組み込みで素数かどうか判定するやつ提供されてるのか、、、面白い!

334 名前:デフォルトの名無しさん [2019/02/23(土) 02:10:15.51 ID:9pS68leH.net]
>>313
bc

n = 2; for (i = 3; i <= 21; i++) n*=i; n

出力
51090942171709440000

335 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 03:31:27.03 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 03:32:49.90 ID:R2s6jSV3.net]
bcのってjsでもそのまま動くんだな。どっちもc由来文法だからか…
for(i=s=1;i<22;)s*=i++;s

337 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 04:30:09.37 ID:R2s6jSV3.net]
>>326
恥ずかしながらdcコマンド知らなかった…いいねこれ。
~$ echo "$(seq -s' ' 1 21)$(printf '* %.0s' {1..20})p" | dc
51090942171709440000

338 名前:デフォルトの名無しさん [2019/02/23(土) 08:05:10.28 ID:xK8/Ze+A.net]
>>313 Maxima
print(21!);

339 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 08:20:33.48 ID:znXlogg7.net]
>>313
;; Common Lisp
(loop for i from 1 to 21 for r = i then (* r i) finally (print r))

340 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 08:45:55.53 ID:DQY5g4De.net]
>>316
これは、本格的だな

ダイクストラ・A* みたいな、順位キュー(priority queue)を使わないと、いけないかも



341 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 09:18:55.19 ID:IBS/n4EE.net]
>>313
Smalltalk (Pharo 7)
21 factorial
==> 51090942171709440000

342 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 12:01:13.29 ID:+GfRG2y6.net]
>>316 Java
https://ideone.com/ZhJHKg

343 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 12:26:35.61 ID:DQY5g4De.net]
>>313
Ruby

( 1..21 ).inject( 1, :* )

344 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 12:44:52.28 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:22:30.58 ID:R2s6jSV3.net]
例がちょっと意味分からない
1#=1
1以下の素数の積なのに1?
3#=4#=6
何これ?
5#=30
これだけ分かる

346 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:25:18.18 ID:R2s6jSV3.net]
あ、二番目分かりました。
一行目だけ分からない

347 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:28:26.15 ID:+GfRG2y6.net]
>>335 Java
https://ideone.com/4M3U1T

348 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:34:54.53 ID:vMXU7Bcc.net]
>>337
掛けるもののがないときは1として扱うのが普通だよ
0!とかΠの項数が0の時とか

ただこの出題者はそのへん理解してないだろうから解く気がしない

349 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:40:09.27 ID:R2s6jSV3.net]
>>339
ありがとう。
数学と同じとは限らないんだね。
1も素数としてやってみます。

350 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:47:45.99 ID:+eBVT+rm.net]
>>340
1を素数と見做すんじゃなく空積の1



351 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:53:12.99 ID:W0y17tlk.net]
というか数学でも0!=1!=1と定義されているのが普通だと思うし
高校でも大学でもそうじゃない問題を見たことがないのだが

352 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 13:53:38.08 ID:vMXU7Bcc.net]
>>340
いや、むしろ数学の世界での慣習なんですけど…

353 名前:デフォルトの名無しさん [2019/02/23(土) 14:28:11.89 ID:DQY5g4De.net]
単位元(初期値)だろ。
足し算は0、掛け算は1 が、単位元

Ruby で、
( 1..21 ).inject( 1, :* )

1 が初期値で、:* で掛け算メソッドを渡している

354 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 15:02:20.95 ID:R2s6jSV3.net]
>>342
> ただし素数階乗とは与えられた整数n以下のすべての素数の積である

と書いてあるので、

「与えられた整数n」が1
のとき、
「与えられた整数n以下のすべての素数の積」
は、
「1以下のすべての素数の積」
となり、
1以下に素数はないのになんで例で答がが1になってるんだろう、と思った次第です。
お騒がせしました。

355 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 15:15:16.07 ID:R2s6jSV3.net]
できた
JavaScript
const prodPrimes = n => {
const primes = [1];
for (let m = n; m > 1; m--) {
let prime = 0;
for (let i = 2; i <= m - 1; i++) {
if (m % i === 0) prime = i;
}
primes.push(prime || m);
}
return [...new Set(primes)].reduce((acc, p) => acc * p);
}
console.log(prodPrimes(1)); //=> 1
console.log(prodPrimes(3)); //=> 6
console.log(prodPrimes(4)); //=> 6
console.log(prodPrimes(5)); //=> 30

今夜はPythonで>>316に挑戦したい

356 名前:デフォルトの名無しさん [2019/02/23(土) 15:45:56.58 ID:xK8/Ze+A.net]
>>335 J
f =: 3 : 0
*/ 1 , I. 1 p: i. >:y
)

f@> 1 3 4 5 21
1 6 6 30 9699690

357 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 15:50:44.94 ID:5fn4St+r.net]
Jどこで覚えればいいの?
Effective J的な読みやすい書籍ないの?

358 名前:デフォルトの名無しさん [2019/02/23(土) 16:01:13.49 ID:BD+5EZ0V.net]
>>313 Common Lisp
(defun ! (n)
  (apply #'* (loop for i from 1 upto n collect i)))

CL-USER> (! 21)
51090942171709440000
CL-USER> (! 0)
1
CL-USER>

359 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 16:18:41.85 ID:Z/STDkD0.net]
>>335 ruby
https://ideone.com/ccP7e9

360 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 17:50:18.29 ID:oGmxRysL.net]
>>321
これただのお絵描きやん
規制しろ!



361 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 18:00:12.84 ID:5fn4St+r.net]
でかいキノコやらしい…

362 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 18:14:04.27 ID:2kPF298z.net]
>>316 Perl5 Dijkstra法による最短経路探索 (priority queueを用いない実装)
https://ideone.com/XcsBQe

363 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 20:22:19.99 ID:ejRNWGjN.net]
>>316
python(pypy) https://ideone.com/DV1w4s

本線: キュー使用したダイクストラ (+ 経路復元)。

サンプル程度なら、ワーシャルフロイド(頂点^3)でも回る、と同方も追加。
さすがにpythonには少々きつく、pypyに逃げた。

364 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:49:59.19 ID:ROsmA06r.net]
>>354 pypy に逃げたという話は、その方がかなりスピードが早いからという事? どの位のスピード差になるんだろう?

365 名前:デフォルトの名無しさん [2019/02/24(日) 01:37:12.40 ID:jRfp9b62.net]
>>313
Kotlin script

println("%.0f".format((2..21).map { it.toDouble() }.reduce { n1, n2 -> n1 * n2 }))

366 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 01:45:28.46 ID:W3fm5ADB.net]
>>355
何も変えずpython3で実行 https://ideone.com/IArwja

約6秒 vs 約0.2秒

まぁ、本当はpython3向けにもう少し治せそうだが

367 名前:さまよえる蟻人間 mailto:sage [2019/02/24(日) 05:55:10.72 ID:xnYazQgz.net]
お題: 3分タイマーを作れ。3分間待って、音を鳴らすか、画面に「BEEP!」と表示せよ。ただし、CPU時間を無駄に消費してはならない。

368 名前:さまよえる蟻人間 mailto:sage [2019/02/24(日) 06:09:09.10 ID:xnYazQgz.net]
お題: スリープソートを実装せよ。

369 名前:さまよえる蟻人間 mailto:sage [2019/02/24(日) 06:27:08.15 ID:xnYazQgz.net]
お題: 玉入れ競争のシミュレーションを作れ。1チームに玉50個で園児3人。2チームある。園児それぞれが10秒に玉1個投げる。
一回投げると、3秒後に1/2の確率で玉が入る。イベントのたびに「チーム#1の園児#1が玉を投げました」「チーム#2の園児#1の玉が入りました」などと表示する。

370 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 07:40:28.45 ID:lq3Vey6S.net]
>>313
@Mathematica

ライブラリ版
Factorial[21]

非ライブラリ版
Range[21] // Apply[Times, #] &



371 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:11:35.91 ID:UKaroUbg.net]
>>335
Smalltalk (Pharo 7)
[:n | (Integer primesUpTo: n+1) inject: 1 into: [:p :x | p * x]] value: 5
==> 30

372 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:39:28.32 ID:lq3Vey6S.net]
>>335
@Mathematica
Range[5] // Select[#, PrimeQ] & // Apply[Times, #] &

373 名前:デフォルトの名無しさん [2019/02/24(日) 08:59:23.56 ID:k3GW1oFG.net]
お題
与えられた文字列を縦に表示する

入力
hello

出力
h
e
l
l
o

374 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:18:40.92 ID:FkqnBGPg.net]
>>364
ruby -e "'hello'.split('').each do |c| puts c end"

375 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:39:23.28 ID:UNsYm68I.net]
>>364 octave
https://ideone.com/MZvdVC

376 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:41:19.01 ID:gbE7FXAb.net]
>>364 Perl5

~ $ echo -n hello | perl -naF -E 'say for @F'
h
e
l
l
o

377 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:45:19.09 ID:gbE7FXAb.net]
>>358 Perl5

sleep 3*60;
print "BEEP!\n";

378 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:51:12.60 ID:5XYYe3Vz.net]
>>346
Pythonじゃ緩すぎだろw
Brainfu*kとかJで挑戦したいと言わないと
世のマゾヒスト達からマサカリ投げられるぞw

379 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 11:01:40.94 ID:gbE7FXAb.net]
>>359 Perl5

use List::Util shuffle;
@a = shuffle 1..5;
print "shuffled) @a\n";

use threads;

use threads::shared;
my @b: shared;

sub f {
&nbsp;&nbsp;my $n = shift;
&nbsp;&nbsp;sleep $n;
&nbsp;&nbsp;push @b, $n;
}

push @thr, threads->create(\&f, $_) for @a;
$_->join() for @thr;

print "sorted ) @b\n";

実行結果
~ $ perl 13_359.pl
shuffled) 5 3 1 2 4
sorted ) 1 2 3 4 5

380 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 11:04:08.38 ID:gbE7FXAb.net]
>>370 しまった、&nbsp;がそのまま表示されている…orz 全角スペースに置換して修正
>>359 Perl5

use List::Util shuffle;
@a = shuffle 1..5;
print "shuffled) @a\n";

use threads;

use threads::shared;
my @b: shared;

sub f {
 my $n = shift;
 sleep $n;
 push @b, $n;
}

push @thr, threads->create(\&f, $_) for @a;
$_->join() for @thr;

print "sorted ) @b\n";

実行結果
~ $ perl 13_359.pl
shuffled) 5 3 1 2 4
sorted ) 1 2 3 4 5



381 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 14:09:41.21 ID:UKaroUbg.net]
Smalltalk (Pharo 7)
String cr join: 'hello'
==> 'h
e
l
l
o'

382 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 14:14:37.55 ID:lq3Vey6S.net]
>>364
@Mathematica

"hello" // Characters // Riffle[#, "¥n"] & // StringJoin

383 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 14:37:33.43 ID:ke/CY5a3.net]
>>351
いや、21 factorialをSmalltalk-76で実際に計算したものですよ!
動画にしたほうがよかったですか?^^;

384 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 15:44:30.88 ID:R6DRM9b9.net]
>>335 Squeak Smalltalk (このコードは Pharo では動かない)

| fn |
fn := [:n | (Integer primesUpTo: n + n isPrime asBit) inject: 1 into: #*].
#(1 3 4 5) collect: fn. "=> #(1 6 6 30) "

385 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 15:56:11.32 ID:R6DRM9b9.net]
>>364 Squeak Smalltalk (同じく Pharo とは互換性がないコードで)

'hello' joinSeparatedBy: Character cr.

"= 'h
e
l
l
o' "

386 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:12:06.37 ID:ke/CY5a3.net]
>>359 Pharo/Squeak Smalltalk

| sleepsort |
sleepsort := [:arr |
| queue |
queue := SharedQueue new.
arr do: [:x | [(x * 2) milliSeconds asDelay wait. queue nextPut: x] fork].
(1 to: arr size) inject: #() into: [:acc :idx | acc, {queue next}]
].

sleepsort value: #(2 1 5 10 7 8 3 6 4 9)

"=> #(1 2 3 4 5 6 7 8 9 10) "

387 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:18:42.39 ID:+6ZRRI/z.net]
>>358 puthonista ( iPhone )

# iPhoneのシステムサウンドを使ってアラームを出す。
import sound,time

alarm = '/System/Library/Audio/UISounds/alarm.caf'
time.sleep(3*60)
id = sound.play_effect(alarm)

388 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:40:55.70 ID:+6ZRRI/z.net]
>>378 pythonista の間違い。

389 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 19:37:23.57 ID:Wf3q+Rvy.net]
>>359 Bash

#!/usr/bin/bash

N=5

IFS=$'\n'
a=(`seq $N | shuf | sed -e 's/\([0-9]\+\)/(sleep \1; echo \1 >> result)/'`)
IFS="$'\n'$'\t' "

[ -f ./result ] && rm ./result
for s in "${a[@]}"; do
 echo "$s"
 sh -c "${s}" &
done

wait
cat ./result


~ $ sh 13_359.sh
(sleep 2; echo 2 >> result)
(sleep 5; echo 5 >> result)
(sleep 4; echo 4 >> result)
(sleep 1; echo 1 >> result)
(sleep 3; echo 3 >> result)
1
2
3
4
5

390 名前:デフォルトの名無しさん [2019/02/25(月) 02:16:17.34 ID:VuzBCyor.net]
>>364
Kotlin script

while (readLine()?.map { it }?.joinToString("\n")?.let { println(it); it } != null);



391 名前:デフォルトの名無しさん [2019/02/25(月) 02:42:58.27 ID:VuzBCyor.net]
>>358
sh

sleep 180 ; echo 'BEEP!'

392 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 02:47:11.29 ID:yxDnlxm5.net]
>>364
ruby -e "'hello'.each_char do |c| puts(c) end"

393 名前:さまよえる蟻人間 mailto:sage [2019/02/25(月) 02:47:19.11 ID:qxzw13Bf.net]
お題: スリープと複数のスレッドを使って素数を10個求めよ。1つのスレッドは素数倍数のループを意味する。

394 名前:さまよえる蟻人間 mailto:sage [2019/02/25(月) 03:51:24.00 ID:qxzw13Bf.net]
>>384
ヒント: 一秒ごとにリセットするカウンターを使う。

395 名前:デフォルトの名無しさん [2019/02/25(月) 09:19:02.25 ID:KMrhrKmq.net]
意味がわからん

396 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 10:35:33.17 ID:OZaxYFd4.net]
模範解答があるんでしょ
だからヒントを作れる
なら最初から正解を出せと

397 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 10:52:58.23 ID:mBiroDnU.net]
このコテうぜえから書き込み禁止にしろ

398 名前:デフォルトの名無しさん [2019/02/25(月) 11:25:48.34 ID:4jlXoier.net]
スリープタイマに番号付けてON/OFF出来ればエラトステネスの篩で素数が出来る。

399 名前:デフォルトの名無しさん [2019/02/25(月) 17:25:13.53 ID:KMrhrKmq.net]
わかんないからちょっとやってみて

400 名前:デフォルトの名無しさん [2019/02/25(月) 18:50:50.58 ID:IURODyYm.net]
>>364 J
smoutput@>'hello'



401 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 19:00:24.37 ID:mboQc3Dn.net]
>>364 JavaScript
[...'hello'].forEach(c=>console.log(c))
または
for(let c of 'hello')console.log(c)
または
console.log([...'hello'].join`\n`)

402 名前:デフォルトの名無しさん [2019/02/26(火) 01:01:25.98 ID:ZoqutRDZ.net]
>>364 Ruby
puts "Hello".split("")

403 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 02:14:00.16 ID:Jyzj3K2Z.net]
お題:OS名を出力する

404 名前:デフォルトの名無しさん [2019/02/26(火) 02:51:12.85 ID:lsok3PaS.net]
>>394
Linux等、UNIX系OSの場合コマンドラインから以下を入力するだけで GNU/Linux 等と出てくるが、
どうしてもプログラムにしたいのならシェルスクリプトの中でこれだけ実行するようにしておけばよい。

uname -o

405 名前:デフォルトの名無しさん [2019/02/26(火) 02:53:03.78 ID:lsok3PaS.net]
>>394
Windows のコマンドプロンプトの場合はこれ。ただしバージョンも一緒に出てくる。

ver

これもどうしてもプログラムにしたいならバッチファイルでこれだけ実行するようにしておけばよい。

406 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 07:52:39.56 ID:xb9W0X9p.net]
pythonista

import os,sys

print(os.uname() )
# posix.uname_result(sysname='Darwin', nodename='iPhoneXsMAX', release='18.2.0', version='Darwin Kernel Version 18.2.0: Wed Dec 19 20:28:53 PST 2018; root:xnu-4903.242.2~1/RELEASE_ARM64_T8020', machine='iPhone11,6')

print(os.uname()[0],os.uname()[4],sys.platform )
# Darwin iPhone11,6 ios

from distutils.util import get_platform

print(get_platform())
# darwin-18.2.0-iPhone11,6

407 名前:デフォルトの名無しさん [2019/02/26(火) 08:17:26.80 ID:N21l9DY8.net]
>>394 J
osname =: 3 : 0
a =. 9 !: 12 y
if. a = 5 do. 'unix'
else. a = 6 do. 'windows'
else. do. 'other'
end.
)

408 名前:デフォルトの名無しさん [2019/02/26(火) 10:23:47.93 ID:E0EMtjG2.net]
>>394
Perl5

print "$^O\n";

409 名前:デフォルトの名無しさん [2019/02/26(火) 15:46:59.25 ID:N21l9DY8.net]
>>364 Lua
io.write((io.read("*a"):gsub(".","%0\n")))

410 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 15:54:05.05 ID:gjK+vdjr.net]
お題: 任意のn-オミノを全種類出力するプログラム



411 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 15:55:57.75 ID:IBhh82RD.net]
>>364
標準出力から与えられる場合
import sys
for x in sys.stdin.read() : print(x)

>>394と混合
import os
for x in os.getenv("OS"): print(x)

412 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 18:05:30.42 ID:KX5s2hIr.net]
>>384 Squeak/Pharo Smalltalk

| tick start primes sema sieveMaker processes ans |
tick := 1 second.
start := DateAndTime now.
primes := SharedQueue new.
sema := Semaphore new.
sieveMaker := [:x | [[(tick * x) asDelay wait. sema signal] repeat]].
processes := SharedQueue new.
tick asDelay wait.
processes nextPut: [
[ tick asDelay wait.
sema isSignaled ifFalse: [
| prime sieve |
prime := primes nextPut: (DateAndTime now - start / tick) asInteger.
sieve := sieveMaker value: prime.
processes nextPut: sieve fork
].
sema initSignals
] repeat
] fork.

ans := (1 to: 10) collect: [:idx | primes next].
1 to: processes size do: [:idx | processes next terminate].
ans "=> #(2 3 5 7 11 13 17 19 23 29) "

413 名前:デフォルトの名無しさん [2019/02/26(火) 20:30:26.61 ID:cNXsTeTJ.net]
お題: (Aが真 または Bが真) ならば Cが真である。 であるをプログラムしなさい。

414 名前:デフォルトの名無しさん [2019/02/26(火) 23:29:53.47 ID:Tg4W+a2u.net]
お題: 円の最大重複数を求めよ

例題 以下画像の場合、最大重複数は4です。
https://imgur.com/pbh3VSE.png
円の重複数え方は、2つの円が重なっていたら、重なっている数は2とします。
また、円の重複判定の際、2つの円が円周上の1点のみで重なる場合、それらの円は重なっていないとします。
(理由は重複している面積は0だから。)


以下、本題。
画像のようなNo.0からNo.99までの100個の円があります。
これの円の最大重複数を整数で答えなさい。
https://imgur.com/WiRHA1F.png

入力データ:
https://drive.google.com/open?id=1kl8bS3GOr8Ot2OMMACdCG0SJMpEKxLO3

入力データはx座標 y座標 r(半径)の順で記述されたリストで、すべて実数です。
与えられる入力データは
-800.0 ≦ x ≦ 800.0
-800.0 ≦ y ≦ 800.0
100.0 ≦ r ≦ 400.0
の条件を満たします。


画像は自作、多分正しい。

415 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 11:44:25.97 ID:wHsSBDML.net]
お題: 自分自身のコードのコメントと非コメントを入れ替えたコードを出力するプログラムの
コードが自分自身のコメントの非コメントを入れ替えたプログラムのコードに
なっているプログラム

416 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 12:50:19.00 ID:haTnnqie.net]
S式かRPNで書いてくれややこしい

417 名前:デフォルトの名無しさん [2019/02/27(水) 16:44:46.91 ID:1o6M4rID.net]
>>406
サンプルプリーズ

418 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:23:18.85 ID:1o0vhyUy.net]
お題
整数N(N>=6)を相異なる3つの整数(0<a<b<c)の和で表すことを考える。
数列(a,b,c)として考えられるもののうち、辞書式順序で最小のものと最大のものを求めよ

N=6
=> (1,2,3)/(1,2,3)

N=100
=> (1,2,97)/(32,33,35)

419 名前:デフォルトの名無しさん [2019/02/27(水) 19:25:22.96 ID:sZAuINQ9.net]
お題
英今文字からなる文字列が与えられる。
各文字の大文字、小文字の組み合わせをすべて求める。
"ab"の場合
ab
aB
Ab
AB

420 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:42:57.27 ID:haTnnqie.net]
エーコン文字って何



421 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:49:50.41 ID:fYEBa3GD.net]
>>409
これって要するにcombinationのfirstとlastじゃねえの
next_combination()の一番最初と最後だよ

422 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 20:08:19.81 ID:Tij8CMAh.net]
>>409
こんな感じ?
https://paiza.io/projects/YfC3K-dnEC7TuEXJjDFMGw

423 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 21:30:26.97 ID:WT+xSYik.net]
>>410 JavaScript
const acorn = s => {
for (let i=0; i < 2**s.length; i++) {
console.log([...s]
.reduce((acc, c, j) => acc+String.fromCharCode(c.charCodeAt() - 32 * i.toString(2).padStart(s.length, 0)[j]), '')
);
}
}
acorn('ab'); // の実行結果:
ab
aB
Ab
AB
acorn('ufo'); // の実行結果:
ufo
ufO
uFo
uFO
Ufo
UfO
UFo
UFO

424 名前:デフォルトの名無しさん [2019/02/28(木) 04:32:37.78 ID:oRFlldUh.net]
>>410
Kotlin
https://paiza.io/projects/y4eoD5DUuLdHi6S6hcFvrw

425 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 06:17:40.15 ID:9oEuhY5c.net]
>>410 Ruby
s = "ufo"
a = []
s.each_char do |c| a.push([c, c.upcase]) end
b = a[0]
a[1..-1].each do |e| b = b.product(e) end
b.each do |e| puts(e.join) end

426 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 08:43:33.13 ID:qFD89Rtd.net]
>>410 Squeak Smalltalk(#perform: を二変数ブロックにすればPharoでも動く)

| fn |
fn := [:str |
| ans |
ans := OrderedCollection new.
#(asLowercase asUppercase) asDigitsToPower: str size do

427 名前:: [:comb |
ans add: (str with: comb collect: #perform:)
].
ans asArray
].

fn value: 'ab'. "=> #('ab' 'aB' 'Ab' 'AB') "
fn value: 'ufo'. "=> #('ufo' 'ufO' 'uFo' 'uFO' 'Ufo' 'UfO' 'UFo' 'UFO') "
[]
[ここ壊れてます]

428 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 09:14:29.16 ID:vBJFBkkc.net]
uppercaseメソッドのことスッカリ忘れてた>>414
const acorn = s => {
for (let i=0; i < 2 ** s.length; i++) {
console.log([...s]
.reduce((acc, c, j) => acc + (+i.toString(2).padStart(s.length, 0)[j] ? c.toUpperCase() : c), '')
);
}
}

429 名前:デフォルトの名無しさん [2019/02/28(木) 10:31:36.11 ID:PtOlEBM/.net]
>>410 Ruby
def f(s)
a=s.chars.map{|c|[c,c.upcase]}
a.shift.product(*a).map(&:join)
end
p f("abc")

["abc", "abC", "aBc", "aBC", "Abc", "AbC", "ABc", "ABC"]

430 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 10:34:43.50 ID:7nNuTdUM.net]
簡単な問題にはものすごい勢いでこたえるのに、難しい問題には見てみぬふりをするのなwwww
難しい問題にはわかりませんだろ



431 名前:デフォルトの名無しさん [2019/02/28(木) 13:46:39.00 ID:oAFMMcaR.net]
>>420
わからないとかやる気が起きないお題に対してわざわざわからないだのなんだのとみんなで書いてたらそういった書き込みでこのスレはすぐに一杯になるだろう。
そんなの無駄で邪魔だから一々書かんでスルーしてくれた方が良い。

432 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 14:39:02.28 ID:7nNuTdUM.net]
>>421
別の問題を答えるときに一緒にわかりませんと書けば1行消費するだけで済むだろ?
それも嫌なのか?

433 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 14:50:46.53 ID:wVeu6yBT.net]
>>422
で、もちろんお前自身はそれを実践しているんだよね?
全答しているなら別にいいんだけどさwww

434 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 15:02:45.97 ID:7nNuTdUM.net]
>>423
自分の都合のいい問題にしか答えないのはわがままとしかいいようがない

435 名前:デフォルトの名無しさん [2019/02/28(木) 15:25:18.89 ID:oAFMMcaR.net]
>>422
たまたまわからない問題が連続したらわかりませんしか書けないだろうが。

436 名前:デフォルトの名無しさん [2019/02/28(木) 15:26:43.33 ID:oAFMMcaR.net]
>>424
全ての問題に答える義務は誰にもない。

437 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 15:35:33.99 ID:7nNuTdUM.net]
>>426
自分に都合の悪いことは無かったことにするのは良くない
現実と向き合って自分の非を認めるべき

438 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 16:05:54.17 ID:K7dGf2QC.net]
>>427 まだ誰も回答していない問題があるが、君はわかりませんと言っていないね。 まだ考え中かな?

439 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 16:22:56.91 ID:7nNuTdUM.net]
>>1-1000
ほとんどの問題が難しくてわかりませんでした
これで満足か?wwww

440 名前:デフォルトの名無しさん [2019/02/28(木) 17:35:56.73 ID:swPpvqd8.net]
小手先問題は得意



441 名前:デフォルトの名無しさん mailto:age [2019/02/28(木) 17:48:58.57 ID:+01UgAVr.net]
>>420
そんなの当たり前じゃん

442 名前:デフォルトの名無しさん mailto:age [2019/02/28(木) 17:51:09.02 ID:+01UgAVr.net]
出題する側のセンスも問われる

443 名前:デフォルトの名無しさん [2019/02/28(木) 18:46:34.61 ID:oAFMMcaR.net]
>>427
便所の落

444 名前:書きに時たま書かれる問題にうんこしながら答えを書くか書かないかで都合が良くなったり悪くなったりする者は居ない。 []
[ここ壊れてます]

445 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 18:49:07.23 ID:KtyAfxmO.net]
しかし最近は便所の落書きは亡くなったに等しいな。
それにもかかわらず2chには便所の落書きが多い。
ここはまだましだけどな。

446 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 19:23:16.75 ID:7nNuTdUM.net]
公園の便所とかもちゃんと調べていってるのか?

447 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 19:52:08.39 ID:KtyAfxmO.net]
うちの近くの公園にはまずないな。
十人くらいしか遊べない公園も、数千人も遊べる公園も同じ。

448 名前:デフォルトの名無しさん [2019/02/28(木) 20:27:06.93 ID:oAFMMcaR.net]
ああいうのもブロークンウィンドウズ理論通りに汚くなればなるほど余計に汚くなって尚且つその地区の犯罪率も上昇しちゃうんだろうな。

449 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 20:28:03.31 ID:fDwT3kht.net]
ID:7nNuTdUM が便所の落書きしかしてないのは分かる

450 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 20:59:59.90 ID:KtyAfxmO.net]
>>437 もちろんどんな公園にもバカな書き込みをする奴はいるだろう。 でも管理された公園では、次の日には修復されてるから書かれてたことにすら気づかなくて、誰も描かなくなる。

10年に1度くらいアホが便器を壊すなんて馬鹿なことをする事件もあるが、バカはどこにでもいるから仕方ない。



451 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 21:01:11.76 ID:6vlCNc4e.net]
もうちょっと気の利いた比喩がほしいね。

452 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 21:58:37.50 ID:dSln4xk/.net]
お題
四角形の羅列を、'#'と'.'を使った表現から罫線を使った表現に変換せよ

(例)等幅フォントで見てください
#

┌┬┐
├┼┤
└┴┘

#..###.####.
..#.....##.#
#.#....#.#.#
....#.#...#.
┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
└┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
    ├┼┤         ├┼┼┼┤ ├┼┤
┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
└┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
        ├┼┤ ├┼┤     ├┼┤  
        └┴┘ └┴┘     └┴┘  

453 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 22:09:31.89 ID:DbAr3TBt.net]
なにこれ?組み立てたらガンダムになるの?

454 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 22:33:12.22 ID:lyW2+AsV.net]
>>410 ruby
https://ideone.com/lGQ1lX
f = -> s {[''].product(*s.chars.map {|c| [c, c.upcase]}).map(&:join)}
p %W(#{} a ab).map {|s| [s, f.(s)]}

[["", [""]], ["a", ["a", "A"]], ["ab", ["ab", "aB", "Ab", "AB"]]]

455 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 11:41:54.16 ID:RkKCNcIA.net]
>>411 下らんお題出すなよ。

456 名前:デフォルトの名無しさん [2019/03/01(金) 14:53:48.06 ID:ber2ILYj.net]
>>444
それお題じゃない

457 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:58:28.80 ID:KMRxw/mf.net]
>>444 >>441 の間違い

458 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 17:54:01.28 ID:nsJzseJ0.net]
読み手の環境を変えさせるようなお題は不適切。

459 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 18:00:52.30 ID:nsJzseJ0.net]
というか >>441 の問題が意味不明。 スクリーンショットで示してみなよ。 俺はやらんだろうけど。

460 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 18:05:43.92 ID:nsJzseJ0.net]
>>441 なんかプログラムの練習の前に、日本語のおさらいをした方が良い人間が見受けられるな。

プログラムはチームワークだから、他人に仕様が正確に伝えられなければその時点でそのプロジェクトは失敗。
理解しやすい言葉で混乱が起きない様に示すのが当たり前では?
それができない人はプログラムで問題を出しなさいよ。



461 名前:デフォルトの名無しさん [2019/03/01(金) 18:35:43.56 ID:ber2ILYj.net]
え?>>441はわかるよ。俺がエスパーなだけ?w

462 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 18:38:47.53 ID:nQNJhNQv.net]
俺もわかるけどわかりにくいと思った

463 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 19:02:55.70 ID:KgoMIpD3.net]
なぜ#1つで4つの4角形になるんた?
#を図形として見た場合一致しないと思うんだが

464 名前:デフォルトの名無しさん [2019/03/01(金) 19:26:25.34 ID:ber2ILYj.net]
記号を罫線ので作った四角にしろってことでこの場合は#だったってだけでは?
なんだったら「田」から変換するようにすれば雰囲気がマッチして良いかも知れんな。気分の問題だが。

465 名前:デフォルトの名無しさん [2019/03/01(金) 19:55:55.91 ID:HvpZFnzz.net]
>>441 Common Lisp
https://ideone.com/kzHGwq

466 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 01:29:28.31 ID:og4HVKiE.net]
>>441 でたらめだろ。 #が田形3マスになるのは良いとして、ドットが何で3マスになったり、1マスになってるんだよ。

#..###.####.
..#.....##.#
#.#....#.#.#
....#.#...#.
123456789いろはにほ123456789へと
┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
└┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
    ├┼┤         ├┼┼┼┤ ├┼┤
┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
└┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
        ├┼┤ ├┼┤     ├┼┤  
        └┴┘ └┴┘     └┴┘  

467 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 01:35:36.81 ID:og4HVKiE.net]
>>455 ごめん、罫線だから、0.5ずれてたのか。 しかしわかりにくい問題だな。 
もしかして自分の仕事を人に押し付けようとしていないか? 

468 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 03:13:42.38 ID:xuPe2CJ9.net]
>>441 Java
https://ideone.com/VLzcnO

469 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:02:58.51 ID:H6jPx1zC.net]
専用ブラウザじゃ等副フォントなんて選べないのがあるのを知らないのか?
BB2Cでは、英字は等幅が選べても、漢字にはフォント設定すらない。

Jane Doe View も MSゴシックを選択しても等幅にならない。
読み手の設定を変えさせる問題なんて2chにはふさわしくない。

470 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:17:11.62 ID:xuPe2CJ9.net]
俺は等幅で見てくれってあったら、設定を変えるんじゃなくてメモ帳にコピペして見るけどなー



471 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:41:44.38 ID:og4HVKiE.net]
>>459 そうやって見たけど面倒くさい。 やるならどこかのサイトに張り付けるか画像で出題すべきだろ。

472 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:42:35.75 ID:jZcAiOx4.net]
おれなら出題を諦めるなw

473 名前:デフォルトの名無しさん [2019/03/02(土) 11:43:11.78 ID:chZTsz9F.net]
問題とかずに問題への文句ばかり垂れるってお前らにしては珍しいな
問題とけよクズども

474 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:55:57.51 ID:xuPe2CJ9.net]
>>462
お…おれはやってるよっ

475 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:55:57.58 ID:jZcAiOx4.net]
>>462
ぐ、ぐむーっ

476 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 11:56:34.18 ID:xuPe2CJ9.net]
>>463-464
この間0.07秒である

477 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 12:11:05.29 ID:JYk2NVzi.net]
この広い日本のどこかに同じ時に同じレスに反応してしまった二人がいる。
プログラミングの世界は奥が深いな……

478 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 13:30:29.30 ID:og4HVKiE.net]
>>466 良いお題を解いたね。

479 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 16:02:22.23 ID:xke/YE7F.net]
>>453
なるほどそういうことか

480 名前:デフォルトの名無しさん [2019/03/02(土) 16:22:52.10 ID:ZN4ZPl7z.net]
>>457
なるほど

>>411 Common Lisp (>>457の移植)
https://ideone.com/OTuTMy

すごいなあ、こんなの全然思いつけない
文字を文字のままどうにかしようとしてぐちゃぐちゃになったのが>>454でした



481 名前:デフォルトの名無しさん [2019/03/02(土) 16:25:46.70 ID:ZN4ZPl7z.net]
>>469
アンカミス
>>411>>441

482 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 16:49:20.52 ID:R507/Kbo.net]
全く面白くない。

483 名前:デフォルトの名無しさん mailto:sage [2019/03/02(土) 20:23:12.84 ID:bDAZjPpu.net]
>>471
自分の好みじゃないと面白くないなんて小学生か。
黙ってスルーするか、自分が好みの問題だして盛り上げたらどうだ?

484 名前:デフォルトの名無しさん [2019/03/03(日) 08:56:00.68 ID:NMVimqZR.net]
お題:2つの円が重なった時、重なった部分の面積を求めなさい。

485 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 13:28:27.28 ID:TjAANgsg.net]
含まれている場合も考えなきゃならんな…

486 名前:デフォルトの名無しさん [2019/03/03(日) 17:19:17.78 ID:e91Lt8pq.net]
>>473
わかりません。

487 名前:さまよえる蟻人間 mailto:sage [2019/03/03(日) 17:21:20.86 ID:KlFuUPR7.net]
距離と半径くらい指定しろよ。

488 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 17:48:01.52 ID:EHdvkNdx.net]
>>475
分からない人は答えなくていいし黙って見ていればいいよ

489 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 18:41:09.09 ID:TjAANgsg.net]
>>476
任意に対応すべきだろJK

490 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 18:55:07.69 ID:TjAANgsg.net]
>>476
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1263968897

このサイトは具体的な座標と半径について手計算で解いた例だけど、
座標と半径を一般化して連立二次方程式を解いて交点を求め、
三角形と円弧の面積の差を求めれば重なり合う2円弧の面積が算出できる。
小さい円の中心が大きい円の内側にある場合は、
三角形と円弧の面積の差の求め方を逆にする。
小さい円が大きい円の完全に内側にある場合は、小さい円の面積とする。

x,y座標で式を立てるより、曲座標で表して三角関数使うほうが楽かもしれない。

これをプログラム化すれば良い、筈【だと思う。

以上。



491 名前:デフォルトの名無しさん [2019/03/03(日) 19:21:30.98 ID:yjYtaUkW.net]
2つの中心を通る線をX軸としてX軸と交わる点の端っこを原点して円の交点と半径で
円一個ずつ積分して面積を出して合わせるしかないだろ。

492 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 19:28:30.68 ID:r5nrErEk.net]
半径と中心間の距離から円の交点間の距離(=弦)がわかるから
正弦定理とarcsinで中心角を求めればあとはただの掛け算と引き算だろ

493 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 19:33:55.32 ID:TjAANgsg.net]
>>481
二次方程式解かないで済みそうだな

494 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 20:19:21.58 ID:ot+8d2KD.net]
それが一番シンプルそうだな

495 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 20:23:33.79 ID:8CruhG40.net]
プログラム的には円同士の位置関係で場合分けして、あとは計算一発だから二次方程式をいやがる必要もなくない?

496 名前:デフォルトの名無しさん [2019/03/03(日) 21:06:33.77 ID:XGcp5yLx.net]
>>473 C
ttps://ideone.com/trIqHx

画像も参照。
ttps://imgur.com/i2G9Ahd

497 名前:デフォルトの名無しさん [2019/03/03(日) 22:28:24.90 ID:XGcp5yLx.net]
>>485
条件分岐が間違っていたので修正。おそらくあってると思う
https://ideone.com/DjZqEY
余弦定理を使う方法しか思いつかなかったから、それでやった

498 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 01:00:55.59 ID:q2TdavLp.net]


499 名前:デフォルトの名無しさん [2019/03/04(月) 07:57:27.52 ID:7HyVHUwF.net]
お題:不等間隔で与えられる関数表から1次とか2次で補間をしなさい。

500 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 11:04:59.42 ID:9wLIIjqc.net]
お題: 2つの任意の英数字からなる芸術的なアスキーアートを出力しろ



501 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 11:07:25.78 ID:9wLIIjqc.net]
お題: アスキーアートで芸術的な直線を出力しろ

502 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 12:15:59.00 ID:9wLIIjqc.net]
お題: アスキーアートで芸術的な木のアスキーアートを出力しろ

503 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 13:00:20.39 ID:enTqHBl5.net]
お題: このバカをどうにかしろ

504 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 13:06:53.32 ID:mOK2oiAk.net]
>>489>>490>>491
どうぞ……
https://mevius.5ch.net/test/read.cgi/motenai/1546340528/

505 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 18:59:01.31 ID:R4eMfGlu.net]
お題 全角空白区切のCSV

カレントディレクトリにあるCSVファイルを読み込み、指定されたカラム名のデータの合計を求める。
1レコード目にはカラム名がある。
区切り記号は全角空白とする。 データの数字は全てASCII数字だとする。

CSVファイル内のデータ例

カラム1 カラム2 カラム3 カラム4
1,0 2.0 3.0 4.0
2.1 3.1 4.1 5.1
------データ例終わり

出題 カラム3 の合計を求めよ。
解答例 カラム3 = 7.1

506 名前:さまよえる蟻人間 mailto:sage [2019/03/04(月) 19:01:33.11 ID:wk4fvbO+.net]
カンマとピリオド間違えたら死ぬぞ。気を付けれ。

507 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 19:03:32.42 ID:rdjSvZ2C.net]
>>494 間違い

データに 1,0 という間違いがあるけど問題ないだろ。
ついでに、この状態でカラム1の様にデータフォーマットが違う場合には正しくデータエラーを報告せよ。

508 名前:さまよえる蟻人間 mailto:sage [2019/03/04(月) 19:10:24.71 ID:wk4fvbO+.net]
日本やアメリカでは、ピリオドは文の終わりや小数点として使う。

カンマは文章途中の区切りや複数の項目の区切りに使う。

509 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 19:12:27.62 ID:rdjSvZ2C.net]
>>497 問題に関係ないことを言うなよ。

510 名前:デフォルトの名無しさん [2019/03/04(月) 19:12:28.56 ID:TpCWsYE8.net]
>>494
awk。-F オプションで指定しているのが全角スペースね。OSやシェルの違いによってはシングルクオーテーションではなくダブルクォーテーションにする必要がある。入力はファイル名指定するか標準入力から読ませる。

awk -F' ' 'BEGIN{getline}{n+=$3}END{print n}'



511 名前:デフォルトの名無しさん [2019/03/04(月) 19:15:20.56 ID:TpCWsYE8.net]
awkはデータフォーマットがおかしくても適当に0ってことにしちゃったりしてエラーにならんのでデータ異常まで調べたいなら他の言語使った方が良いだろうな。

512 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 19:16:48.51 ID:rdjSvZ2C.net]
>>499 カラム名を指定してよ。カラム名は指定された名前であり固定ではない。

513 名前:デフォルトの名無しさん [2019/03/04(月) 19:22:30.38 ID:TpCWsYE8.net]
>>501
あー。じゃあ後で他の言語で作るか。

514 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 19:42:58.86 ID:0eAiVVhP.net]
お題:端末の横幅が与えられるので(*´ω`*)を端末の中央に表示せよ

515 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 20:14:28.23 ID:/O719wMt.net]
このバカどうにかしろ
あとチンポジ代わりに直せ

516 名前:デフォルトの名無しさん mailto:sage [2019/03/04(月) 21:14:51.56 ID:x+RRe849.net]
>>503 Ruby
w = 120
printf("%s%s\n", " " * ((w - 10) / 2), "(*´ω`*)")

517 名前:デフォルトの名無しさん [2019/03/05(火) 01:17:51.32 ID:irQmeRjm.net]
茨木 保健
貴老沢 風花
鬼塚 海鈴
鬼埜 可恋
儀賀沢 一愛
嫌沢 宮子
己問 彩姫
寺沢 七彩
寿川 瑞紀
樹木山 美咲
宗田 純
女ケ沢 美優
女ケ澤 飛鳥
女鹿沢 祐奈

518 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 03:28:01.02 ID:CZi591h7.net]
>>494
Ruby で

require 'csv'

# 全角空白区切りで、ヘッダー有り
options = { :headers => true, :col_sep => " " }

# CSV ファイルを、1行ずつ処理する
puts CSV.foreach( "input.csv", options )
.map{ |row| row[ 2 ].to_f }.inject( :+ )

519 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 07:59:44.57 ID:0SMIqw+w.net]
>>507 カラム名サーチが入っていないみたいだけど。
例えば ”カラム3” と言うカラム名が指定されたとして書いてみて。3列目と言うことじゃないからね。

カラム4 カラム2 カラム1 カラム3
かも知れない。

520 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 08:10:31.80 ID:utDz1VTj.net]
変な流れが続いていたから、バカっぽいお題をいくつか出した後に一見まともそうなお題のふりして宿題をやってもらおうという腹かと勘ぐってしまう。



521 名前:デフォルトの名無しさん mailto:age [2019/03/05(火) 09:08:51.84 ID:BKNc7BtY.net]
>>509
お前の思いちゃんと伝わったよ
問題解けクズ

522 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 09:12:40.32 ID:DIrFqE8l.net]
>>510
宿題は自分でやれカス

523 名前:デフォルトの名無しさん mailto:age [2019/03/05(火) 09:42:11.28 ID:BKNc7BtY.net]
>>511
お前の宿題だが

524 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 09:45:18.09 ID:DIrFqE8l.net]
死ね

525 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 11:33:12.77 ID:7U5lBe0C.net]
だから言語制限なしで通すとやっぱネタギレじゃん

526 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 12:09:12.75 ID:KQ31R4yU.net]
お題1: テトリスタイリング問題を解決しろ
ここでテトリスタイリング問とは任意の図形のアスキーアートを入力すると
全てのテトリスのブロックに隣接するブロックの種類が異なるようにタイリングしたアスキーアートを出力する
問題である

お題2: テトリスタイリングNブロックス問題を解決しろ
ここでこの問題は上の問題でブロックの種類の数Nを最小にする問題である

例:
入力:
****
****
****

出力:
1002
1002
1122

527 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 12:21:13.18 ID:WJ/srpVX.net]
>>515
これじゃダメなのか?

1011
1001
1101

528 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 12:23:52.27 ID:KQ31R4yU.net]
>>516
それでもええで

529 名前:デフォルトの名無しさん mailto:sage [2019/03/05(火) 23:56:55.78 ID:0SMIqw+w.net]
>>515 ボクちゃんわかんない。
何で縦の列は1とか同じ種類が許されてるの? なんか上から下へとか言う動きを前提にしてるの?

530 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 01:19:54.96 ID:tTGpH/KM.net]
>>518
https://upload.wikimedia.org/wikipedia/commons/9/9a/Tetrominoes_letter_oriented.png
片面テトロミノ(画像参照)を回転させて指定の形に詰め込め
ただし、同じテトロミノを隣接させてはいけない。 ってことじゃろ

515の出力例でいうと、
0は画像の水色、1は黄色、2は紫色の奴ってこと



531 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 08:04:05.66 ID:bBth0ZZS.net]
>>515 その出力例だと、タイルの種類は3種類じゃないの?
1と2を同じだとみなせば、同じ種類と隣接するからダメだろ?

>>516 だと完全に2種類だが。

532 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 10:13:54.30 ID:Z0o65K/P.net]
>>520
>>519

533 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 11:44:29.70 ID:cM1JcwP7.net]
>>521
だからこそ出題例>>515は3種類のブロックを使ってるんだろ? 
2種類で出来ていないから問2に対しては不正解では?

534 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 11:58:00.89 ID:OdnfdSEH.net]
>>522
例がお題2とお題1両方の答えになっているなんてことはどこにも書いてないだろ
例を見ればだれでもどのお題の答えかわかるだろ

535 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 12:34:51.62 ID:cM1JcwP7.net]
>>523 誰でも解ると言うのは言い過ぎ。 何が正しいのかを示すのが例なんだし。
なんにせよお題の出し方が独断すぎるよ。
テトリスタイリングなんて知らない人にとっては説明不足だし
>>519 の説明があって初めて平面上の回転図形は同じとみなし、裏表の回転は許さないと解るけど。
それでも519のブロックは4個の組み合わせのブロックしかないが、どうして4個固定なのか? 最大辺の個数を単位とするのか?

この場合は5個固定?
***
***
***
***
***

536 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 12:44:07.40 ID:OdnfdSEH.net]
>>524
釣りだろ?
本当にわからないのなら病院に行くレベルw

537 名前:516 mailto:sage [2019/03/06(水) 12:54:30.31 ID:l ]
[ここ壊れてます]

538 名前:TLUMkgQ.net mailto: >>523
分からなかった
[]
[ここ壊れてます]

539 名前:デフォルトの名無しさん [2019/03/06(水) 12:57:33.38 ID:FCOQEIBI.net]
わかっても今のところ解く気は起きない

540 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 12:58:29.33 ID:Z0o65K/P.net]
>>522
あなた、前に書き込んでた中卒の人?



541 名前:デフォルトの名無しさん [2019/03/06(水) 13:01:54.00 ID:uLgh04dF.net]
>>199>>441が理解できなかったってやつと同一人物なのは分かる

542 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 13:08:31.07 ID:URj2ByGk.net]
>>524
>どうして4個固定なのか? 

テトリスってゲームがあってそれに出てくるブロックが>>519

>>515
>全てのテトリスのブロック

https://ja.wikipedia.org/wiki/%E3%83%86%E3%83%88%E3%83%AA%E3%82%B9
テトリス
>4つの正方形を組み合わせて作られた、片面型テトロミノ状のブロックピース
>(以下の7種、本作ではこれらを「テトリミノ」(Tetrimino)と呼ぶ)
>がフィールド上方からランダムに1種類ずつ落下してくる。

543 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 13:09:30.85 ID:f/NWPYTA.net]
>>441は分からんかった
問題を考えさせてほしい
問題文を考えさせるんじゃなく

544 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 13:50:33.24 ID:cM1JcwP7.net]
>>530 片面テトリミノの基本は4個だけどこれを使う前提なら、3x5とか4の倍数の面積にならない図形は解けないよね。
聞いてるのは3x5はどうするのと言う話。

545 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 14:02:02.94 ID:URj2ByGk.net]
>>532
「解けない」でいいんだろ

546 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 16:31:44.46 ID:OdnfdSEH.net]
>>532
この問題は君の思ってる小学校の算数とは違うんだよ

547 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 18:11:04.36 ID:+4ROOaYr.net]
問題の難しさと、問題の曖昧さは関係ないけどな。
難しい問題の条件が曖昧だと鼻から解く気になれない。

548 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 18:18:58.86 ID:OdnfdSEH.net]
考えればわかることまでいちいち書かないのは常識
それを曖昧とは言わない

549 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 19:39:35.98 ID:RlXQ9XDp.net]
数学者は常識人

550 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 19:40:44.95 ID:L0cGL7i+.net]
当たり前のことでもいちいち全部書くのがこの業界の常識だが



551 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 19:57:47.15 ID:2Etc0l5z.net]
仕様書をやりとりしてみれば如何に他人に解らせることが難しいか理解できると思うけどな。 多分出題者は余り経験していないんだろう。

仕様をいい加減で進めても後で痛い目を見るのは自分。
(最初は完全でないのは当然、打ち合わせで抜けを詰めていけば良い話)

552 名前:デフォルトの名無しさん mailto:sage [2019/03/06(水) 20:41:28.07 ID:OdnfdSEH.net]
>>538
テトリスがなにかなんて自分でググって調べればいいことだろ
そんなことまで面倒みれない

553 名前:デフォルトの名無しさん [2019/03/06(水) 20:51:34.66 ID:Xwbjxxrc.net]
お題の面白さに共感しなければ趣味だから解かない。

554 名前:デフォルトの名無しさん [2019/03/06(水) 21:21:50.81 ID:FCOQEIBI.net]
そういや安かったのでPS4用のテトリスを何気なく買って連日やってたら慣れてきちゃってレベル15の40ライン消しが楽にできるようになってしまったなあ。
今さらテトリスうまくなってどうすんだ俺w

555 名前:デフォルトの名無しさん [2019/03/07(木) 03:21:20.86 ID:QS9GxyX4.net]
>>494
Kotlin
https://paiza.io/projects/w5ywqyfGfQpwllH68rmt5A

入力はカラム名の行が最初にあり、次の行からはデータが続き「# カラム名」の行で終わり、
そこで指定したカラム名の列の合計値が出力される。

エラーはデータが数値として解釈できない文字列、項目数がカラム名の数と一致しない行、
同一カラム名があった場合に出る。一度エラーになると # の行まで読み飛ばされる。

556 名前:デフォルトの名無しさん [2019/03/07(木) 17:22:14.11 ID:bbRk4M8e.net]
お題
R言語にandmaginsとうう関数がある。
m行n列の行列を渡すと行ごとの合計と列ごとの合計を追加して
(m+1)行(n+1)列の行列を返す。
同様の関数をつくる。

1 2 3
4 5 6

1 2 3 6
4 5 6 15
5 7 9 21
となる

557 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 19:35:31.07 ID:gyMjU+f2.net]
>>544
C++
https://ideone.com/XhFw95

558 名前:デフォルトの名無しさん mailto:sage [2019/03/07(木) 23:35:37.41 ID:bSfNx8gZ.net]
>>544 Squeak/Pharo Smalltalk

| fn |
fn := [:arr | arr, {arr sum} collect: [:row | row, {row sum}]].
fn value: #(
(1 2 3)
(4 5 6)
).

"=> #(
(1 2 3 6)
(4 5 6 15)
(5 7 9 21)
) "

559 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 00:35:43.62 ID:N66/0TP0.net]
大文字小文字だけが異なる、ファイル名を見つける

入力
aB.txt
Ab.txt
xx
cd
cD
CD

出力
aB.txt : Ab.txt
cd : cD : CD

560 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 04:41:32.92 ID:JrzgN4oN.net]
#!/bin/sh
infile="aB.txt Ab.txt xx cd cD CD"
for f in ${infile}; do
echo $f $(echo $f | tr [:lower:] [:upper:])
done | awk '
{ save[$2] = save[$2] " : " $1 }
END {
for (i in save) print save[i]
}' | sed 's/^ : //' | sort | awk 'NF > 1 {print}'



561 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 09:23:36.88 ID:iTwHpxzE.net]
>>547 Squeak Smalltalk

| fn |
fn := [:arr |
| groups |
groups := arr groupBy: #asLowercase having: [:group | group size > 1].
groups values collect: #asArray
].
fn value: #('aB.txt' 'Ab.txt' 'xx' 'cd' 'cD' 'CD').

"=> #(('cd' 'cD' 'CD') ('aB.txt' 'Ab.txt')) "

562 名前:デフォルトの名無しさん [2019/03/08(金) 09:47:13.60 ID:pv8HlopZ.net]
>>547
それはWindowsとかでは試せないのでは?ディレクトリが違うならできるだろうけど。
(まあWindowsでもWSLでUbuntuとか動かせばできるが)

563 名前:547 mailto:sage [2019/03/08(金) 11:48:57.26 ID:N66/0TP0.net]
同一フォルダ内での、大文字小文字だけが異なるファイル名は、Windows では作れないけど、
Linux では作れてしまうので、それをチェックする目的です

Linuxでも、こういうファイル名は作らない方がよい

564 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 16:35:28.24 ID:VhFMuL/G.net]
>>551
死ね

565 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 17:12:36.80 ID:qP6cz7Aj.net]
時々死ねと言うやついるけど同じやつなのか? いい加減で大人になれ。

566 名前:デフォルトの名無しさん [2019/03/08(金) 18:19:49.57 ID:aY8HpC9F.net]
イ`

567 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 18:42:00.27 ID:eAQ60MzF.net]
お題: 1=2を証明しろ
証明出来ないは無しで

568 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 18:49:56.10 ID:qP6cz7Aj.net]
>>555 それは言語によるんじゃないの? 論理的にはあり得ない。
一般的には、0がFalse でそれ以外がTrueと言うだけでは?

569 名前:さまよえる蟻人間 mailto:sage [2019/03/08(金) 18:58:42.07 ID:8R2ZaOuQ.net]
整数のオーバーフロー使えば楽に証明できるけど、それはもはや基礎数学の整数じゃないし。

570 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:14:26.55 ID:2owB+W9f.net]
>>544 octave
https://ideone.com/JoTcaP



571 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:17:05.52 ID:ru9qZk5w.net]
お題:
N人の人物がある部屋に出入りしています。
i番目の人は時刻a[i]に入室し、時刻b[i]に退室します。(1 <= a[i] < b[i])

すべての人は入退室時に以下の通り行動します。
・入室時に、照明がOFFならば照明をONにする。
・退室時に、室内に自分以外に誰もいなければ照明をOFFにする。

最初は照明がOFFになっていて室内には誰もいません。
複数の人物が同時に入退室することはないものとします。

照明がONになっている時間の合計を求めなさい。

a={1,3,5}
b={2,4,6}
=> 3

a={1,2}
b={5,6}
=> 5

a={100,1,2}
b={105,3,4}
=> 8

572 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:26.76 ID:q/o0JPH8.net]
>>364
brainf*ck
>++++++++++<+[,.>.<]

573 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:27.70 ID:AweN/YnK.net]
★ぁりがdヾ(。・ω・。)ノぁりがd★

574 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:54:42.10 ID:2owB+W9f.net]
>>559 ruby
https://ideone.com/yo3mvc

575 名前:デフォルトの名無しさん [2019/03/08(金) 21:22:26.01 ID:QMcItLTV.net]
>>559 Common Lisp
https://ideone.com/2hHoAC

576 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 21:55:03.73 ID:2owB+W9f.net]
>>547 ruby
https://ideone.com/faTKf5

577 名前:デフォルトの名無しさん [2019/03/09(土) 08:53:56.42 ID:irV15TzB.net]
>>410 J
f =: 3 : 0
 > , { ;/(,. toupper) y
)

578 名前:562 mailto:sage [2019/03/09(土) 09:29:27.51 ID:8CAUa/TL.net]
>>559 ruby
すこーしすっきり
f = ->a, b {a.zip(b).map {|c| (c.first...c.last).to_a}.inject(:|).size}

f = ->a, b {a.zip(b).map {|c, d| [*c...d]}.inject(:|).size}

579 名前:547 mailto:sage [2019/03/09(土) 10:58:09.02 ID:GVs3bbIF.net]
>>564
たった2行とは、素晴らしい!
JavaScript(JS)とか、関数型プログラミングだね

f(&:upcase), f(&:chomp)
関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ!

漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw
情けない

Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/234

580 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 12:51:20.88 ID:C6v7oEvs.net]
クソみてーな恣意的な記号使いはperl譲りだな



581 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 13:17:28.26 ID:capoU8RA.net]
アンダースコア_はprologの時点であるんじゃね
それに記号なら恣意的だろ

582 名前:デフォルトの名無しさん [2019/03/09(土) 19:25:50.03 ID:hBO8FWAE.net]
>>544
Haskell

main = mapM_ print $ newxss ++ [zipWith (+) (newxss!!0) (newxss!!1)]

xss = [[1,2,3],[4,5,6]]

newxss = map (\xs -> xs ++ [sum xs]) xss

583 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:49:27.50 ID:R3sqYFdd.net]
お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する

入力
abc 2

出力
*b*
a*c

584 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:57:53.65 ID:C6v7oEvs.net]
お題か出力のどっちかが間違っている
日本語勉強した方がいい

585 名前:デフォルトの名無しさん [2019/03/09(土) 19:58:57.39 ID:hBO8FWAE.net]
>>544,570

任意の数の行列だったか。。。
修正

main = mapM_ print $ newxss ++ [lastxs]

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

newxss = map (\xs -> xs ++ [sum xs]) xss

lastxs = map sum $ retsu newxss

retsu ([]:xs) = []
retsu xss = map head xss:retsu (map tail xss)

586 名前:デフォルトの名無しさん [2019/03/09(土) 20:10:49.99 ID:0OOZ8KrR.net]
>>557
オーバーフローは数学ですらないだろ。こっちは数学。


宇宙を支えていたのは、驚異のたし算だった
私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。
私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。
その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。
jbpress.ismedia.jp/mwimgs/4/b/400/img_4b7f33022b840f792a0324a10b89a24d369437.jpg
jbpress.ismedia.jp/articles/-/46939

587 名前:さまよえる蟻人間 mailto:age [2019/03/09(土) 20:18:26.71 ID:XY+I2Bbh.net]
>>574
応用数学ではオーバーフローも数学の一種。

588 名前:デフォルトの名無しさん [2019/03/09(土) 20:25:11.72 ID:hBO8FWAE.net]
>>364

Haskell

main = mapM_ (\c -> putStrLn $ c:[]) "hello"

589 名前:デフォルトの名無しさん [2019/03/09(土) 20:38:18.94 ID:1xJckQ5D.net]
>>544
kotlin
https://paiza.io/projects/cL6xIQA--yDFZ1pjndvzAw

Double型でやったら出力に小数点以下が付加されたが値として間違ってるわけではないのでそのままにする。

590 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 01:41:18.58 ID:5A3UW8N7.net]
>>544 Python

import numpy as np
# 何行何列でも良い
ar =[
[1,2,3,4],
[4,5,6,7],
[7,8,9,10]
]

#縦に足して行を追加
r=np.vstack((ar,np.sum(ar,axis=0)))

#横に足して列を追加
ans=np.hstack((r,np.sum(r,axis=1).reshape((-1,1))))
print('ans=\n',ans)
'''
ans=
[[ 1 2 3 4 10]
[ 4 5 6 7 22]
[ 7 8 9 10 34]
[12 15 18 21 66]]
'''



591 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 03:08:27.84 ID:LqrBe0vy.net]
>>571 ruby
s = "abc"
n = 2
t = "*" * s.length
t[n - 1] = s[n - 1]
u = s.clone
u[n - 1] = "*"
puts(t, u)

592 名前:デフォルトの名無しさん [2019/03/10(日) 11:41:34.27 ID:x4ZRCWyR7]
>>544,573

n = 3

xss = (take n.iterate (map (+ n))) [1..n]

もっと大きな行列渡したくて、n*nのリスト(行列)作る関数作った。
こういうのって、手続き型と宣言型で違いが顕著だと思った。

593 名前:デフォルトの名無しさん [2019/03/10(日) 11:57:40.70 ID:e6SI07pl.net]
>>571 J
f =: 4 : 0
|: ((,. -.) (<:x) = i. # y ) {"1 '*' ,. y
)

2 f 'abc'
*b*
a*c

594 名前:デフォルトの名無しさん [2019/03/10(日) 13:31:21.17 ID:vqbsu7fW.net]
>>571

Haskell

main = do
putStrLn $ seclet "abc" (==) 2
putStrLn $ seclet "abc" (/=) 2

seclet lst func num = seclet' lst func 1 num
where
seclet' [] _ _ _ = []
seclet' (x:xs) f n a | f n a = x: seclet' xs f (n + 1) a
seclet' (_:xs) f n a = '*': seclet' xs f (n + 1) a

595 名前:デフォルトの名無しさん [2019/03/10(日) 13:56:33.99 ID:vqbsu7fW.net]
>>571
>>582

引数の順序入れ替えてmapM_ 使って、main部分を一行にまとめた。

main = mapM_ (putStrLn.seclet "abc" 2) [(==),(/=)]

seclet lst num func = seclet' lst 1 num func
where
seclet' [] _ _ _ = []
seclet' (x:xs) n a f | f n a = x: seclet' xs (n + 1) a f
seclet' (_:xs) n a f = '*': seclet' xs (n + 1) a f

596 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:19:36.82 ID:lsf+n+kn.net]
>>571 Perl5

($s, $n)= qw{abc 2};
@s = split'',$s;
@t = qw{*} x @s;
$n--;
($s[$n], $t[$n]) = ($t[$n], $s[$n]);
print @t, "\n", @s, "\n";

実行結果
~ $ perl 13_571.pl
*b*
a*c

597 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:47:53.28 ID:lsf+n+kn.net]
>>544 Perl5

@a = ([1, 2, 3,],
    [4, 5, 6]);
use List::Util sum;
push @$_, sum(@$_) for @a;
for $i (0..$#{$a[0]}) {
 push @b, sum(map{$a[$_][$i]} 0..$#a)
}
print "@$_\n" for @a;
print "@b\n";


実行結果
~ $ perl 13_544.pl
1 2 3 6
4 5 6 15
5 7 9 21

598 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 20:48:09.83 ID:z5UigTCL.net]
>>571 octave
https://ideone.com/fEaJMh

599 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:12:33.92 ID:ObNpfzdX.net]
ここっておっさんが多いイメージ

600 名前:デフォルトの名無しさん [2019/03/10(日) 21:16:39.36 ID:KcIurEvX.net]
>>559
Java
https://paiza.io/projects/uoq0pfsAO5vRexzfWg1Mdw?language=java



601 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:20:18.73 ID:z5UigTCL.net]
>>571 ruby
https://ideone.com/6NM2Z2

>>567
String#lines ←これの存在知らなかった
勉強になりました

602 名前:デフォルトの名無しさん [2019/03/10(日) 21:46:22.59 ID:KcIurEvX.net]
>>547
Java
https://paiza.io/projects/2ff8V2wS29AjINHLm-bgYw?language=java

603 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:59:51.08 ID:5renFNS0.net]
>>571
@Mathematica

https://ideone.com/gDkzl4

604 名前:567 mailto:sage [2019/03/10(日) 22:01:14.30 ID:bEzyp4mc.net]
>>589
余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる!
Rubyは、色々と便利なものを作っている

p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT

#=> ["a", "b"]

605 名前:デフォルトの名無しさん [2019/03/10(日) 22:14:16.51 ID:SJp/1k7U.net]
>>571 Common Lisp
https://ideone.com/cnTKML

606 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:23.44 ID:KcIurEvX.net]
>>579
Java
https://paiza.io/projects/eCieLwJTqtEDvaYM4uknOA?language=java

607 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:48.10 ID:KcIurEvX.net]
ごめん間違えた
>>571です

608 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 23:51:29.55 ID:THpHptm5.net]
>>571 Node.js
https://ideone.com/l4XmDp

609 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 00:57:47.40 ID:HrDBQthw.net]
>>571 Squeak/Pharo Smalltalk。nを複数指定可で

| fn |
fn := [:str :ns |
| ans |
ans := (String new: str size withAll: $*), String cr, str.
ns do: [:n | ans swap: n with: n + str size + 1].
ans
].

fn value: 'abc' value: #(2). "=>
'*b*
a*c' "

fn value: 'abcdef' value: #(2 3 5). "=>
'*bc*e*
a**d*f' "

610 名前:デフォルトの名無しさん [2019/03/11(月) 01:39:23.53 ID:+Nlo5Elt.net]
>>547
Kotlin
https://paiza.io/projects/fxNs_pgfP7MwmXYp2xQ1YA



611 名前:デフォルトの名無しさん [2019/03/11(月) 02:41:21.51 ID:+Nlo5Elt.net]
>>559
Kotlin
https://paiza.io/projects/rbSY9Q6oTve1ILy1AIIj_g

612 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 07:59:46.54 ID:hFtMxxmn.net]
>>547 Perl5
https://ideone.com/Mbj5Hz


push @{$h{lc $_}}, $_ for <STDIN>;
print "@{$_}" for grep{@$_ > 1} values %h;

613 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 09:18:51.69 ID:D2PSGRy3.net]
>>571 Python

def split3(s,p=1) :
 r0= s[:p]+'*'+s[p+1:]
 r1= '*'*p + s[p] + '*'*(len(s)-(p+1))
 return r0+'\n'+r1

print(split3('abcd',2))
print(split3('abc',0))

'''結果
ab*d
**c*
*bc
a**
'''

614 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 10:48:42.57 ID:u4Ymakq9.net]
お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由
例:
入力: >>>>>vvvvv<<<<^^^^
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v

615 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:00:20.46 ID:JmszPBJl.net]
これって一歩目はなんでもいいよね

616 名前:デフォルトの名無しさん [2019/03/11(月) 11:35:10.21 ID:AGCERQh7.net]
>>571 Io
f := method(s,n,
"*" repeated(s size)atPut(n - 1, s at(n - 1)) println
s asMutable atPut(n - 1, 42)println
)
f("abc",2)
実行結果
*b*
a*c

617 名前:デフォルトの名無しさん [2019/03/11(月) 11:45:13.16 ID:+cahZmCl.net]
>>602
それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?

618 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:48:56.08 ID:u4Ymakq9.net]
>>603
>>605
そういうめんどくさい質問がこないように、
それ以外は自由と付け加えてある

619 名前:デフォルトの名無しさん [2019/03/11(月) 13:45:52.04 ID:+cahZmCl.net]
>>606
仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。

620 名前:デフォルトの名無しさん [2019/03/11(月) 16:12:48.47 ID:TMb+YRHxP]
>>571
>>597

Haskellでも複数対応してみた。

main = mapM_ (putStrLn.secret "abcdef" [2,3,5]) [elem,notElem]

secret xs ns = secret' xs 1 ns
   where
      secret' [] _ _ _ = []
      secret' (x:xs) n as f | f n as = x:secret' xs (n + 1) as f
      secret' (_:xs) n as f = '*':secret' xs (n + 1) as f



621 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 15:42:22.28 ID:7+lrfCi1.net]
>>605
そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは?
ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。

622 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:07:33.07 ID:5vEtkzIB.net]
>>606 何でこれ以外の形は許さんと言えないんだ?
自由にどうぞなんて問題じゃ無いだろ。

623 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:18:14.19 ID:ZVqwh3rP.net]
>>607,610
こいつらホント掃き溜めのゴミだな

624 名前:デフォルトの名無しさん [2019/03/11(月) 16:19:55.06 ID:+cahZmCl.net]
>>571
Kotlin
https://paiza.io/projects/fOvQDvJ6VoTchgVL3pYJpw

625 名前:デフォルトの名無しさん [2019/03/11(月) 16:25:40.59 ID:+cahZmCl.net]
>>609
なるほど。しかしそれならばその事を書いておいて欲しかったな。

>>611
何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?

626 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:58:12.79 ID:PGatxMde.net]
>>602
出力おかしくねぇ?最初と最後の行は5列だけど
間の行ぜんぶ6列になってるぞ?

出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v

こうじゃね?
>>>>>
^***v
^***v
^***v
^***v
<<<<v

627 名前:デフォルトの名無しさん [2019/03/11(月) 17:14:58.23 ID:+cahZmCl.net]
ま、いいや。よくわかんない問題は放っておこう。

628 名前:デフォルトの名無しさん [2019/03/11(月) 18:14:45.27 ID:I7wjNxVQq]
>>547

Haskell

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","f"]

filename [] = []
filename (xs:xss) |length a > 1 = a:(filename.drop (length a)) (xs:xss)
   where
      a = filter ((map toUpper xs ==).map toUpper) (xs:xss)
filename (_:xss) = filename xss

629 名前:デフォルトの名無しさん [2019/03/11(月) 19:08:54.88 ID:TMb+YRHxP]
ソートするの忘れてた…。

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]

filename [] = []
filename (xs:xss) | length a > 1 = a:(filename.drop (length a)) sorted
   where
      a = filter ((map toUpper xs ==).map toUpper) sorted
      sorted = ssort (xs:xss)
filename (_:xss) = filename xss

ssort [] = []
ssort xs = minimum xs:(ssort.delete (minimum xs)) xs

delete _ [] = []
delete n (x:xs) | n == x = xs
delete n (x:xs) = x:delete xs

630 名前:デフォルトの名無しさん [2019/03/11(月) 19:49:55.14 ID:TMb+YRHxP]
度々ごめん・・・
バグが有った。
そもそもソートとか関係なかった。

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]

filename [] = []
filename (xs:xss) | length a > 1 = a:filename b
   where
      a = func (==)
      b = func (/=)
      func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss



631 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:21:39.70 ID:PGatxMde.net]
>>602 javascript
長くなっちった
https://ideone.com/vzncKq

入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv
出力:
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********

632 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:33.05 ID:/Vx80pKW.net]
お題
m×nマスのチェス盤を考える。
1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。
ナイトが訪れることのできるマスの個数を求めよ。

m=1, n=1
=> 1

m=3, n=3
=> 8 (真ん中のマスを訪れることができない)

m=4, n=4
=> 16

633 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:35.88 ID:DXpwYxNa.net]
>>619 説明がないと何をどうやってるのかわけわからん。
先ずは入力と出力をどう解釈して作ったのか?
形にも一貫性があるとは思えないけど。

しかしこんなのがどんどん出てきたら、煩わしいだけ。

634 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:02:17.74 ID:JmszPBJl.net]
いや、その通りに歩くんだろ

635 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:07:58.88 ID:5vEtkzIB.net]
出題通り以外の回答はやめてほしいな。
それ以外の回答をする場合は、解説文も日本語で書いてくれよ。

不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見

636 名前:黷ホわかるというのは無し。 []
[ここ壊れてます]

637 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 21:26:59.93 ID:ALw/TkKR.net]
>>623
ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。
出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。

638 名前:デフォルトの名無しさん [2019/03/11(月) 21:31:45.37 ID:1OBeL2+Y.net]
>>602 Common Lisp, >>619の移植
https://ideone.com/B76Dki

639 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:12:51.52 ID:+V1dboU8.net]
>>>v<^^>>
の場合
*^>>
>^>
*<v

640 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:40:32.65 ID:6pdTomDX.net]
>>571 octave 複数列指定可能版
https://ideone.com/UqKcNb

h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + (i == n)), m, 1:numel(m)));

h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + any(i == n)), m, 1:numel(m)));



641 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:02:42.18 ID:GdRfR4uu.net]
以下の整形式の.ini ファイルから、すべての値を取得して、
「セクション名 : キー名 : 値」で表示する

[sec1]
key1=val1

[sec2]
key2=val2

642 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:51:36.77 ID:/Vx80pKW.net]
>>628 C++
https://ideone.com/V4sf81

643 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:26:56.22 ID:XpXqAgCh.net]
>>628 Perl5

while (<DATA>) {
 $s = $1 if /\[(\w+)\]/;
 print "$s:$k:$v\n"
  if ($k, $v) = /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1

[sec2]
key2=val2



実行結果
~ $ perl 13_623.pl
sec1:key1:val1
sec2:key2:val2

644 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:37:42.27 ID:XpXqAgCh.net]
>>630 も少し簡潔に書けるんだった…

while (<DATA>) {
 $s = $1 if /\[(\w+)\]/;
 print "$s:$1:$2\n" if /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1

[sec2]
key2=val2

645 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:38:34.08 ID:nghHbW0D.net]
>>628 javascript(es2018 named capture groups)
`
[sec1]
key1=val1

[sec2]
key2=val2
`.replace(/\[(?<section>.+)\]\n(?<key>.+)=(?<value>.+)\n/g, '$<section>:$<key>:$<value>').trim();
結果:
sec1:key1:val1
sec2:key2:val2

646 名前:デフォルトの名無しさん [2019/03/12(火) 05:56:44.85 ID:KPetEW8/.net]
>>547

Haskell

import Data.Char

main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","aBc.txt","cd","cD","CD","ab.txt","z"]

filename [] = []
filename (xs:xss)| length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss

647 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:03:25.03 ID:+VdOvnK/.net]
>>620

0 <= m,n <=10億 と仮定して

int64_t cal(int m, int n){
  if( m>n ) swap(m, n);
  if( m<=1 ) return m;
  if( m==2 ) return (n + 1) / 2;
  if( n==3 && m==3) return 8;
  return (int64_t)n * m;
}

648 名前:デフォルトの名無しさん [2019/03/12(火) 18:21:10.69 ID:MLSq27aG.net]
>>628 Io
f := method(s,
s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":"))
)

649 名前:デフォルトの名無しさん [2019/03/12(火) 18:30:10.82 ID:M/w6PjEF.net]
>>624
出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?

650 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 19:26:28.38 ID:mUEXbKn8.net]
お題
数列a[i]を考える。
a[0] = p
a[i+1] = q * a[i] + r

[入力]
p q r n
(p,q,r,nは整数)
(0≦p,q,r≦99)
(0≦n≦10^10)

[出力]
a[n] mod 13 を求めよ

1 2 0 8
=> 9 (2^8 mod 13)

1 0 99 0
=> 1

1 2 3 2
=> 0 (a[0]=1, a[1]=2*1+3=5, a[2]=2*5+3=13)

1 3 5 10000000000
=> ?



651 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 20:52:19.49 ID:2hm/Dong.net]
つまらん

652 名前:デフォルトの名無しさん [2019/03/12(火) 21:03:21.90 ID:KPetEW8/.net]
>>624

>>547に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか?
意図を無視するのは論外だが。

653 名前:デフォルトの名無しさん [2019/03/12(火) 21:07:56.58 ID:KPetEW8/.net]
>>637
マシンパワーがあれば式を入れればいいだけってのはね。。。
解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。

いあ、無茶振りだろうから、どれか2つ満たせればおkだが。

654 名前:デフォルトの名無しさん [2019/03/12(火) 21:12:06.00 ID:KPetEW8/.net]
例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。

655 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 21:43:25.40 ID:rf03pH6k.net]
>>641
一般的なミューテートするカウンタも使っちゃダメってことかな?

656 名前:623 mailto:sage [2019/03/12(火) 22:49:08.83 ID:oX4bYoPv.net]
>>628
お題を修正

[ ] = の3つは、特別な記号です。
それらを含まない行は、無視して

[sec1]
key1=val1

[sec2]
key2=val2
x=y

>>632
セクション名・キー名・値は、特定の文字列ではありません!
特別な記号以外の、任意の文字列です

657 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:03:23.82 ID:oX4bYoPv.net]
お題

現行規格のISBN (ISBN-13) のcheck digit は、JANコードと同じく、
「モジュラス10 ウェイト3・1(モジュラス10 ウェイト3)」という計算法にて算出される

一番右側の? の所のcheck digitを除いて、数字以外は無視して、
一番左側の桁から順に、1、3、1、3…を掛けて、それらの和を取る。
和を10で割って出た余りを、10から引く。
ただし、10で割って出た余りの下1桁が0の場合は、check digitを0とする

ISBN 978-4-10-109205-?

9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3
= 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15 = 82
82 ÷ 10 = 8 あまり 2
10 - 2 = 8

幾つかのISBN-13 で、計算してみて!

658 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:07:31.93 ID:+VdOvnK/.net]
>>637
 https://ideone.com/Y4N5oM  c++

 小さい数値は力技(bf2)で確認してみたが……

659 名前:デフォルトの名無しさん [2019/03/12(火) 23:27:43.44 ID:LDiZRGdZ.net]
>>602 Common Lisp
>>625のリファクタリング
ついでに * を空白に、開始地点を A、終了地点を Z に

660 名前:オてみた
https://ideone.com/zMHal6

Python
https://pastebin.com/NAGHLtcu
実行結果 https://webmshare.com/Ma3gZ
[]
[ここ壊れてます]



661 名前:デフォルトの名無しさん [2019/03/12(火) 23:42:34.93 ID:2FAQzMGK.net]
>>637 C
https://ideone.com/m3vejt

エクセルとかで実際に数列を計算してみると、長さ12(剰余の数-1)以下の周期になるっぽいのでそれで求められる。
普通に計算するとq * a[i] + r はどんどん大きくなるけど、
毎回 (q * a[i] + r) mod 13としても、計算に影響はないようなので、オーバーフローもせずに計算できる。
だたし、数学的に正しいか保証しかねるが。

662 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:12:22.73 ID:rGhbMCbu.net]
>>645
12 0 11 1
=> 11
というコーナーケースが…

663 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:29:04.16 ID:Eq+ygVqk.net]
>>648

確かに、
コメントアウト(bf2)するときに誤ってしまったようだ、
("if(n==0)" だったのだが、いらないなぁ)
どっちにしろ、0や1のテストは、やってない

664 名前:デフォルトの名無しさん [2019/03/13(水) 00:51:17.73 ID:vPzmbHWs.net]
>>642
だめ。
そこが関数型言語と手続き型言語の考え方の大きな違いだし。
皮肉にも?それ作った時、入門書の関数より考え方の違いが分かった。

665 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:54:41.38 ID:bUFEpZHr.net]
>>643
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です

えぇ…

入力:
[あああ]
いいい=ううう

[えええ]
おおお=かかか

出力:
あああ:いいい:ううう
えええ:おおお:かかか

少なくとも任意の文字列には対応してるじゃん。不当指摘だ!

666 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 01:18:15.16 ID:FktqEJYT.net]
>>650 javascript
const seqSqArr = n => Array.from({length: n}).map((v, i) => Array.from({length: n}, (v, j) => n * i + j + 1));
console.log(seqSqArr(3));
//=> [[1,2,3],[4,5,6],[7,8,9]]
console.log(seqSqArr(7));
//=> [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]

667 名前:623 mailto:sage [2019/03/13(水) 02:39:20.04 ID:ZImJqTUY.net]
>>651
スマン。漏れの間違い!

key, val などの特定の文字列を置換しているのかと、勘違いしていた

668 名前:デフォルトの名無しさん [2019/03/13(水) 05:11:02.02 ID:36vLAC/n.net]
>>644 J
f =: 3 : 0
10 | 10 - 10 | +/ (12 $ 1 3) * "."0 }: y -. '-'
)
f '978-4-10-109205-8'
8

f '978-4873115870'
0

669 名前:デフォルトの名無しさん [2019/03/13(水) 06:35:32.94 ID:vPzmbHWs.net]
>>641,642,650,652

Haskell

main = ps 3 >> putStrLn "" >> ps 7
where ps = print.seqSqList

seqSqList n = (take n.iterate (map (+ n))) [1..n]

out:
[[1,2,3],[4,5,6],[7,8,9]]

[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]

670 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:01:04.25 ID:loIc2/nm.net]
>>628 ruby
https://ideone.com/FBiZcF



671 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 22:22:09.99 ID:H95Q/dPG.net]
こうかな?
;; Common Lisp

(defun seq-sq-list (n)
      (labels ((sub (i r)
           (if (zerop i)
             r
             (sub (1- i) (if (zerop (mod i n))
                     (cons (list i) r)
                     (cons (cons i (car r)) (cdr r)))))))
       (sub (* n n) nil)))

672 名前:さまよえる蟻人間 mailto:age [2019/03/13(水) 23:29:50.59 ID:KwyST1w4.net]
お題: ピリオド区切りの二つのバージョン番号を比較し、大小関係を判定した結果を-1, 0, 1のいずれとして

673 名前:ヤせ。

0.1.2 > 0.0: 1
1.2.3 < 1.3: -1
0.0.0 == 0.0: 0
[]
[ここ壊れてます]

674 名前:デフォルトの名無しさん [2019/03/14(木) 00:08:08.19 ID:TPG8S2ma.net]
>>658
手抜きHaskell

main = mapM_ pc $ [("0.1.2", "0.0"), ("1.2.3", "1.3"), ("0.0.0", "0.0")]
where pc = print.uncurry mycompare

mycompare "0.0.0" "0.0" = 0
mycompare "0.0" "0.0.0" = 0
mycompare xs ys |xs `compare` ys == EQ = 0
|xs `compare` ys == GT = 1
|xs `compare` ys == LT = -1

675 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 01:08:57.36 ID:vRIsxo2e.net]
>>602 Perl5

$s = '>>>>>vvvvv<<<<^^^^';
($i, $y) = (0, 0);
for (split'',$s) {
 $i++ if />/;
 $i-- if /</;
 $j++ if /v/;
 $j-- if /\^/;
 push @t, [$i, $j, $_];
}
use List::Util qw{min max};
($i, $j) = (min(map{$$_[0]} @t), min(map{$$_[1]} @t));
$$_[0] -= $i, $$_[1] -= $j for @t;
($i, $j) = (max(map{$$_[0]} @t), max(map{$$_[1]} @t));
push @m, [('*')x($i + 1)] for 0..$j;
$m[$$_[1]][$$_[0]] = $$_[2] for @t;
use feature say;
say @$_ for @m;


実行結果
~ $ perl 13_601.pl
>>>>>
^***v
^***v
^***v
^***v
<<<<v

676 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 01:16:23.50 ID:vRIsxo2e.net]
>>643 Perl5

$r = qr/[^][=]/;
while (<DATA>) {
 chomp;
 $s = $1 if /\[($r+)\]/;
 print "$s:$1:$2\n" if /($r+)=($r+)/;
}
__DATA__
[sec1]
key1=val1

[sec2]
key2=val2


実行結果
~ $ perl 13_638.pl
sec1:key1:val1
sec2:key2:val2

677 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 06:43:00.64 ID:3EvgP48J.net]
>>658
0.0.1 > 0.0 でいいのか?

678 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 07:26:20.10 ID:1+g2CCuw.net]
>>662
ない桁はゼロと見なす。

679 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 10:42:18.54 ID:YiVNNcx0.net]
>>658 javascript
const vComp = (a, b) => {
const [semA, semB] = [a, b].map(v => {
const {major, minor = 0, patch = 0} = /(?<major>\d+)(\.(?<minor>\d+)(\.(?<patch>\d+))?)?/.exec(v).groups;
return {major, minor, patch};
});
const majorComp = semA.major - semB.major;
if (majorComp) return Math.sign(majorComp);
const minorComp = semA.minor - semB.minor;
if (minorComp) return Math.sign(minorComp);
const patchComp = semA.patch - semB.patch;
return Math.sign(patchComp);
};
console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
結果:
1
-1
0

(おまけ)ソート:
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
結果:
["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"]

680 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 10:59:38.01 ID:PwP2txgq.net]
>>658
大小関係の定義をまじめに考えましょう。
>>664
JavaScriptならsplit使えるはず。桁数の制限は要らない。



681 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 11:23:19.67 ID:YiVNNcx0.net]
ごめん勝手にsemverかと思い込んでた

682 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 11:35:04.68 ID:1+g2CCuw.net]
LaTeXのバージョンシステムはちょっと特殊で、円周率に近付くようになってる。この場合は文字列として比較しないといけない。
一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。
まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。

683 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 11:47:43.06 ID:1+g2CCuw.net]
一番確実なバージョン大小判定方法は、リリースごとに年月日とバージョン情報を記録しておくことだ。

684 名前:デフォルトの名無しさん [2019/03/14(木) 13:52:35.97 ID:uKED8jms.net]
>>658
Perl
https://paiza.io/projects/puAYVRuDktPCBh_Xdd2vbQ

685 名前:デフォルトの名無しさん [2019/03/14(木) 15:56:35.04 ID:TPG8S2ma.net]
>>547

Haskell
内包表記の方が何をやってるか分かり易いと気付いて書き換えた。

import Data.Char

main = (mapM_ print.filename) ["aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt"]

filename [] = []
filename (xs:xss)| length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = [xs' | xs' <-

686 名前: (xs:xss), map toLower xs `f` map toLower xs']
filename (_:xss) = filename xss
[]
[ここ壊れてます]

687 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:00:35.68 ID:38t26SL0.net]
お題: 何も出力しないプログラム自身のコードをソートするとhello worldを出力するプログラムを作れ

688 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:07:12.84 ID:YPV07ntD.net]
>>658 # Python

def cmp(v0,v1):
 if v0==v1: return 0
 else: return 1 if (v0 > v1) else -1

print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') ,
cmp('1.1', '1.1') ,
cmp('1.2.3','1.3')
)

# 1 1 0 -1

689 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 18:11:49.83 ID:1+g2CCuw.net]
>>672
バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。

690 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:14:06.49 ID:YPV07ntD.net]
>>672
print( cmp('1.1.0', '1.1') )

# 1



691 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:32:38.72 ID:YPV07ntD.net]
>>672 訂正 Python

def cmp(v0,v1):
 v0 = list( map(int , v0.split('.') ) )
 v1 = list( map(int , v1.split('.') ) )
 if v0==v1: return 0
 else: return 1 if (v0 > v1) else -1

print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') ,
cmp('1.1.0', '1.1') ,
cmp('10.0','9.1') ,
cmp('1.1', '1.1') ,
cmp('1.2.3','1.3') ,
cmp('1.1', '1.1.0') ,
)

# 1 1 1 1 0 -1 -1

692 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 18:44:00.25 ID:1+g2CCuw.net]
>>675
残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。

693 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:50:17.55 ID:dvZ8z+Z0.net]
>>658 octave
https://ideone.com/xh4Cj4

694 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:58:38.18 ID:dvZ8z+Z0.net]
お題:フィボナッチ数列を最初の10個表示せよ

ruby
https://ideone.com/ewyP50

perl6
https://ideone.com/O3tVZj

695 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 18:59:00.09 ID:1+g2CCuw.net]
ソフトウェア開発におけるバージョン管理は、製造メーカーにおける型番管理と同じくらい重要である。
検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。
インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。

696 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 18:59:16.90 ID:38t26SL0.net]
お題: 3つの数の最小値を1回の分岐で決めろ!

697 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 19:55:29.27 ID:YiVNNcx0.net]
>>665 javascript
const vComp = (a, b) => {
const verA = a.split`.`;
const verB = b.split`.`;
const shorter = verA.length - verB.length < 0 ? verA : verB;
const cmps = shorter.map((v, i) => Math.sign(verA[i] - verB[i]));
return cmps.reduce((acc, v, i) => Math.sign(acc + v * 2 ** (shorter.length - i)), 0);
};
console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
結果:
1
-1
0

(おまけ)ソート:
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
結果:
["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"]

698 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 19:59:51.70 ID:YiVNNcx0.net]
あっ間違えた
家帰ってから直す

699 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:14:25.92 ID:vvVzV1YI.net]
>>676 どこにそんな決まりがあるの?

普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。
総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。

700 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:14:59.41 ID:ko69m/9G.net]
見つけた

RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org
https://metacpan.org/pod/RPM::VersionSort



701 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:16:24.45 ID:vvVzV1YI.net]
とにかくバージョン番号が異なれば別のバージョンとみなすのが普通だろ。
同じと思う方がおかしい。

702 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:16:49.16 ID:0tbf1s3D.net]
お題:“木”という漢字を使って以下のようなフラクタル図形を描け

n=0


n=1
-木
木木

n=2
---木
--木木
-木--木
木木木木

n=3
-------木
------木木
-----木--木
----木木木木
---木------木
--木木----木木
-木--木--木--木
木木木木木木木木

※ハイフンはスペースだと思ってください

703 名前:さまよえる蟻人間 mailto:age [2019/03/14(木) 20:26:23.57 ID:1+g2CCuw.net]
>>683
Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。

704 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:45:22.76 ID:vvVzV1YI.net]
>>687 そんなローカルールなんて知るかよ。 もしそういう意図なら問題を訂正しろよ。 いちいち誰かのいちゃもんに付き合ってる暇はない。

705 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 20:52:19.11 ID:YiVNNcx0.net]
>>665 の修正
const vComp = (a, b) => {
let verA = a.split `.`;
let verB = b.split `.`;
const len = Math.max(verA.length, verB.length);
verA = [...verA, ...'0'.repeat(len - verA.length)];
verB = [...verB, ...'0'.repeat(len - verB.length)];
const cmps = verA.map((v, i) => Math.sign(verA[i] - verB[i]));
return Math.sign(cmps.reduce((acc, v, i) => acc + v * 2 ** (len - i)), 0);
};

console.log(vComp('0.1.2', '0.0'));
console.log(vComp('1.2.3', '1.3'));
console.log(vComp('0.0.0', '0.0'));
console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp));
//いいかげん結果省略

706 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 22:10:39.99 ID:8oAE3RnG.net]
>>688
例に0.0.0と0.0が等しいって書いてあるんだが

707 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:16:14.88 ID:3EvgP48J.net]
>>688
> いちいち誰かのいちゃもんに付き合ってる暇はない。
ならスルーしろよ
お前の頓珍漢な解釈なんて要らんし

708 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 23:41:35.78 ID:nI5lwjDU.net]
>>658 Squeak Smalltalk

| fn |
fn := [:strs | (strs collect: [:str | (str subStrings: '.') polynomialEval: 1/1e4]) reduce: #<=>].
fn value: #('0.1.2' '0.0'). "=> 1 "
fn value: #('1.2.3' '1.3'). "=> -1 "
fn value: #('0.0.0' '0.0'). "=> 0 "

709 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 00:00:24.31 ID:27sSd34q.net]
>>658 Perl5

use feature current_sub;
@is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']);
for (@is) {
 ($l, $r) = @$_;
 @l = split'\.', $l;
 @r = split'\.', $r;
 $z = sub {
  my $a = shift @l;
  my $b = shift @r;
  if (defined $a or defined $b) {
   $a //= 0;
   $b //= 0;
   $a <=> $b or __SUB__->()
  } else {
   0
  }
 }->();
 %d = (-1 => ' <', 0 => '==', 1 => '> ');
 print "$l $d{$z} $r : $z\n";
}

実行結果
~ $ perl 13_653.pl
0.1.2 > 0.0 : 1
1.2.3 < 1.3 : -1
0.0.0 == 0.0 : 0

710 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 00:10:49.43 ID:27sSd34q.net]
>>678 Perl5

@f = (0, 1);
push @f, $f[-2] + $f[-1] while @f < 10;
print "@f\n";

実行結果
~ $ perl 13_673_fib10.pl
0 1 1 2 3 5 8 13 21 34


Prel6、いいな…



711 名前: mailto:sage [2019/03/15(金) 00:29:52.08 ID:LCz/5Veu.net]
>>680
>1回の分岐で決めろ!
https://ideone.com/15k0PN
は題意を満たしていますか?

712 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 00:45:04.99 ID:GUP5tEyB.net]
2回分岐してるように見えるが

713 名前:デフォルトの名無しさん [2019/03/15(金) 00:50:01.20 ID:ltf0XXfV.net]
>>671 I
行単位で昇順にソートする場合

exit
"hello world" println

文字単位のソートの場合は難しそう。

714 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 00:52:36.60 ID:J+j6Qj2a.net]
>>680 Java
https://ideone.com/dAlKtw
0回じゃお題満たしてないからだめです?

715 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 01:15:34.20 ID:T0clmjRI.net]
>>678 Squeak Smalltalk

| fibGen |
fibGen := [:a :b | Generator on: [:g | [g yield: a. b := a + b. a := b - a] repeat]].
(fibGen value: 0 value: 1) next: 10.

"=> an OrderedCollection(0 1 1 2 3 5 8 13 21 34) "

716 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 01:34:55.02 ID:4EriVrie.net]
>>686 Squeak Smalltalk

| sp fn |
sp := $-. "sp := Character space."
fn := [:n |
| tree |
tree := [:lines :count |
(lines collectWithIndex: [:line :idx |
line, (String new: idx - 1 * 2 withAll: sp), line
]), lines
].
(((1 to: n) inject: #('木') into: tree) collectWithIndex: [:line :idx |
(String new: idx - 1 withAll: sp), line
]) reversed asStringWithCr
].

fn value: 0. "=>
'木' "

fn value: 1. "=>
'-木
木木' "

fn value: 2. "=>
'---木
--木木
-木--木
木木木木' "

717 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 01:51:53.98 ID:Fj/79Ht+.net]
>>678 javascript
const take = n => function*(iterable) {
const iterator = iterable[Symbol.iterator]();
for (let i = 0; i < n; i++) {
const {value, done} = iterator.next();
if (done) break;
yield value;
}
};
const fibo = function*() {
const memo = [0n, 1n];
const fib = n => n in memo ? memo[n] : memo[n] = fib(n - 2) + fib(n - 1);
for(let i = 0; ; i++) yield fib(i);
}();

console.log([...take(10)(fibo)]);
結果:
[0n, 1n, 1n, 2n, 3n, 5n, 8n, 13n, 21n, 34n]

718 名前:デフォルトの名無しさん [2019/03/15(金) 08:40:18.32 ID:VdqhZ9XO.net]
>>678 Common Lisp
https://ideone.com/fbbBbx

719 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 10:29:40.47 ID:4uXCwYPV.net]
>>701
よく考えたら配列で出力する必要もなかった
console.log(...take(10)(fibo));
結果:
0 1 1 2 3 5 8 13 21 34

720 名前:デフォルトの名無しさん [2019/03/15(金) 10:50:31.62 ID:ltf0XXfV.net]
>>671 Lua

a=ture
a=a or print("hello world")



721 名前:デフォルトの名無しさん [2019/03/15(金) 10:54:07.06 ID:EVqxIhVf.net]
>>678

Haskell

main = (print.take 10) fibs
where fibs = 0:1:zipWith (+) fibs (tail fibs)

722 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 11:30:37.72 ID:gesJPCRi.net]
>>675 訂正 Python

def ver (v):
 s = list( map(int , v.split('.') ) )
 for _ in s:
  if s[-1] == 0 :s.pop(-1)
 return s

def cmp(v0,v1):
 v0 = ver(v0)
 v1 = ver(v1)
 if v0==v1: return 0
 else: return 1 if (v0 > v1) else -1

print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') ,
cmp('10.0','9.1') ,
cmp('1.1', '1.1') ,
cmp('1.2.0.0','1.2.0') ,
cmp('1.2.3','1.3')
)

# 1 1 1 0 0 -1

723 名前:デフォルトの名無しさん [2019/03/15(金) 12:06:15.98 ID:phFelL6J.net]
>>671
「ソートすると」ではなく「ソートしてからその出力を実行またはコンパイルして実行すると」なのでは?

724 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 13:00:31.13 ID:1zMWa3GW.net]
>>707
せやで

725 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 13:38:24.99 ID:CRw2aIHX.net]
そーっとしておこう

726 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 15:16:52.97 ID:1zMWa3GW.net]
お題: プログラムのコードの文字を縦読みしたコードが実行可能なコード

727 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 17:37:30.24 ID:g4S7Lu9n.net]
お題
2桁16進数化したものをつなげた形でIPアドレスが与えられる。(例:192.168.0.1 -> C0A80001)
与えられたIPアドレスからホスト名を逆引きせよ。


08080808 -> google-public-dns-a.google.com
9da6e21a -> www.cnn.com

728 名前:デフォルトの名無しさん [2019/03/15(金) 18:51:48.50 ID:phFelL6J.net]
>>711
Perl5
https://paiza.io/projects/pgmsypvAWHlJ0UwFis4OFg?language=perl

729 名前:673 mailto:sage [2019/03/15(金) 19:08:00.81 ID:3zDqFokC.net]
>>678 java
https://ideone.com/vNVR4y

>>678 c
https://ideone.com/P6eqTd

730 名前:デフォルトの名無しさん mailto:sage [2019/03/15(金) 19:13:09.78 ID:4uXCwYPV.net]
>>711 node
const reverse = hexIP => require('dns').reverse(hexIP
.split(/^(..)(..)(..)(..)$/g)
.map(xx => parseInt(xx, 16) || '')
.join('.').replace(/^\.|\.$/g, ''),
(err, hostnames) => {
console.log(hostnames);
});
console.log(reverse('08080808')); //=> [ 'google-public-dns-a.google.com' ]
console.log(reverse('9da6e21a')); //=> [ 'www.cnn.com' ]



731 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 01:04:28.66 ID:moiau3OK.net]
>>693 もっと簡潔に書けるんだった…

>>658 Perl5

use feature current_sub;
@is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']);
for (@is) {
 ($l, $r) = @$_;
 @l = split'\.', $l;
 @r = split'\.', $r;
 $z = sub {
  my $a = shift @l;
  my $b = shift @r;
  (defined $a or defined $b) ? ($a <=> $b or __SUB__->()) : 0
 }->();
 %d = qw{-1 < 0 == 1 >};
 print "$l $d{$z} $r : $z\n";
}

実行結果
~ $ perl 13_653.pl
0.1.2 > 0.0 : 1
1.2.3 < 1.3 : -1
0.0.0 == 0.0 : 0

732 名前:デフォルトの名無しさん [2019/03/16(土) 02:33:36.77 ID:ksQagb59.net]
>>658
Kotlin
https://paiza.io/projects/Uidg2dU-H0l3liAmw1scwQ

733 名前:デフォルトの名無しさん [2019/03/16(土) 06:51:03.68 ID:x9tnPyz1.net]
>>671

Haskell
空文字は出力しないと動かないから許して。(動く場合はmain =でパターンマッチして出力文埋め込むだけだけど)
ソートした自身の書き込み先、実行先は自身じゃ無いといけないとは書いてない。

import System.Process

main = putStr "" >> readFile "runmyself.hs" >>= \f -> writeFile "runmyself2.hs" ((replace.unlines.qsort.lines) f) >> callCommand "runghc runmyself2.hs"

replace [] = []
replace (p:u:t:s:t2:r:x:y:z:xs) | (p:u:t:s:t2:r:x:y:z:[]) == "putStr \"\"" = "putStrLn \"Hello World\"" ++ replace xs
replace (a1:a2:a3:a4:a5:a6:a7:a8:a9:a10:a11:a12:a13:a14:a15:a16:a17:a18:a19:a20:a21:a22:a23:a24:a25:a26:a27:a28:a29:a30:a31:a32:a33:a34:a35:a36:a37:xs) |
(a1:a2:a3:a4:a5:a6:a7:a8:a9:a10:a11:a12:a13:a14:a15:a16:a17:a18:a19:a20:a21:a22:a23:a24:a25:a26:a27:a28:a29:a30:a31:a32:a33:a34:a35:a36:a37:[]) == ">> callCommand \"runghc runmyself2.hs\"" = "" ++ replace xs
replace (x:xs) = x:replace xs

qsort [] = []
qsort (x:xs) = qsort [s| s <- xs, s <= x] ++ [x] ++ qsort [l| l <- xs, l > x]

734 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 14:50:17.74 ID:0dLFyPZP.net]
>>686 Perl5

use feature say;
$n = 0;
@t = ('木');
say "n=$n\n$t[0]";
for $n (1..2) {
 $l = '-' x 2**($n-1);
 @u = map{$l . $_ . $l} @t;
 @w = map{$t[$_].$t[$_]} 0..$#t;
 @t = (@u, @w);
 say "n=$n";
 say for @t;
}

実行例
~ $ perl 13_681.pl
n=0

n=1
-木-
木木
n=2
---木---
--木木--
-木--木-
木木木木

注) 正直者には、-はスペースに見えます。

735 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 16:51:50.43 ID:EVMD7h0V.net]
お題: プログラム言語をなにも知らない人にもプログラムの意味が理解できるコメント無しのhello worldを出力するコプログラム

736 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 17:11:38.87 ID:0dLFyPZP.net]
わかりません><

737 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 17:16:48.87 ID:EVMD7h0V.net]
お題: 文字列に丁度いい具合にグリッチを入れて超かっこいい文字列を作るプログラム

738 名前:さまよえる蟻人間 mailto:age [2019/03/16(土) 17:18:04.51 ID:PQISp+Pa.net]
グリッチは広辞苑には載っていません。説明して下さい。

739 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 17:21:14.90 ID:EVMD7h0V.net]
>>722
いやです

740 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 17:36:13.64 ID:0dLFyPZP.net]
>>721 perl5
perl-users.jp/articles/advent-calendar/2011/acme/6



741 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:05:38.53 ID:INaBYg0f.net]
グリッチってアレでしょ?
あの、整いました!ってやつ。
最近みないな。
https://glitch.com

742 名前:707 [2019/03/17(日) 01:26:35.49 ID:5dC2feuc.net]
>>711
Kotlin
https://paiza.io/projects/PHrLKrBMqZYA6AC9bUWDcg

何故か 9da6e21a の方はホスト名になってくれず IP アドレスの文字列になる。

743 名前:707 [2019/03/17(日) 02:33:00.06 ID:5dC2feuc.net]
>>711
C
https://paiza.io/projects/ZW4sJq_ea_wQQxe_vOlGjQ

gethostbyname() や gethostbyaddr() ではなく getnameinfo() 使ってみました。

744 名前:デフォルトの名無しさん [2019/03/17(日) 06:18:59.33 ID:k04EM+xl.net]
2桁までの足し算の筆算を表示せよ。

例:
29
+15
----
14
3
----
44

29
+ 5
----
14
2
----
34

745 名前:デフォルトの名無しさん [2019/03/17(日) 06:20:05.97 ID:5dC2feuc.net]
>>686
Kotlin
https://paiza.io/projects/wzAUkDgm-BUe9ENI4NFDYw

746 名前:デフォルトの名無しさん [2019/03/17(日) 07:23:54.75 ID:1ggb6IGK.net]
お題
実数a,b (0<a<b)が与えられたとき、平面座標(a,b),(0,0),(a,-b)の3点を通る円の半径を求める。

747 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 07:27:24.80 ID:vfP8HMqf.net]
余弦定理と正弦定理1回ずつ使うだけだな

748 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 07:31:01.10 ID:OwOB9RAr.net]
数学で解けてもコードに落とせない人っているよね

749 名前:デフォルトの名無しさん [2019/03/17(日) 08:41:45.83 ID:k04EM+xl.net]
>>732
居るけど、そういう人って機械自体が苦手な人。
機械と数学に強くてコードに落とせない人には会ったことがない。

機械には強いけど数学苦手だからコードに落とせないって人は(自分含め)沢山いるが。

750 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 12:19:22.82 ID:gm8A83sV.net]
自転車修理屋さんが機械に強いけどコードなんて、かけなさそう



751 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 12:38:59.54 ID:TUY5K+QC.net]
>>728 Perl5

for (<DATA>) {
 ($l, $o, $r) = split;
 @l = $l =~ /(\d?)(\d)/;
 @r = $r =~ /(\d?)(\d)/;
 $a1 = $l[0] + $r[0];
 $a0 = $l[1] + $r[1];
 @a1 = $a1 =~ /(\d?)(\d)/;
 @a0 = $a0 =~ /(\d?)(\d)/;
 $a = 10*$a1 + $a0;
 $" = '';
 print <<"EOF";
@l
$o@r
---
@a1
@a0
---
$a

EOF
}
__DATA__
29 + 15
29 + 5

752 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 12:40:50.32 ID:TUY5K+QC.net]
>>735 の実行結果

~ $ perl 13_723.pl
29
+15
---
3
14
---
44

29
+5
---
2
14
---
34

せっかくのスペース調整が詰まっちゃって残念なのでアンカーでポップアップして見てね
>>736

753 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 12:41:06.87 ID:PfKDQB+U.net]
>>730 C++
https://ideone.com/Mvx9Mp

754 名前:デフォルトの名無しさん [2019/03/17(日) 13:19:09.72 ID:k04EM+xl.net]
>>728
掛け算に対応したり、1桁どうしの計算用フォーマット作ったりしてたら規模がでかくなった(・ω・`)

1
* 2
-----
2

10
* 0
-----
0

Haskell

https://ideone.com/SCzGKq

755 名前:デフォルトの名無しさん [2019/03/17(日) 13:39:28.89 ID:yIqzgq0g.net]
>>686 Common Lisp
https://ideone.com/Mutq4v

756 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 18:42:43.38 ID:7j/Zhhp5.net]
>>728 ネタ回答: WolframAlpha API / node
// index.js
const {get} = require('http');
const appid = '<<YOUR WolframAlpha APP ID>>';
process.stdin.on('data', data => {
get(`api.wolframalpha.com/v2/query?appid=${appid}&input=${encodeURIComponent(data.toString().trim())}&podstate=Result__Step-by-step+solution&format=image&output=json`, res => {
res.setEncoding('utf8');
let body = '';
res.on('data', chunk => {body += chunk;});
res.on('end', () => {
get(JSON.parse(body).queryresult.pods.filter(({title}) => title === 'Results')[0].subpods.filter(({title}) => title === 'Possible intermediate steps')[0].img.src, res => {
res.on('data', data => {process.stdout.write(data)});
});
});
});
});
$ echo 29+15 | node . > ./test1.gif
https://i.imgur.com/QxolfNz.gif
$ echo 29+5 | node . > ./test2.gif
https://i.imgur.com/D0r3sSg.gif
$ echo 29*15 | node . > ./test3.gif
https://i.imgur.com/imvQO5g.gif

試しに一桁×一桁やってみたらなんだか微妙な計算過程に…
$ echo 5*5 | node . > ./test.gif
https://i.imgur.com/8z3kZPf.gif

あと割り算はAPIからでは計算過程のURL取れなかった

757 名前:デフォルトの名無しさん [2019/03/17(日) 19:54:31.54 ID:k04EM+xl.net]
>>740
こうやって足し算の筆算とは言え、人間の思考過程をプログラムで再現してみると小学生から結構複雑な処理してるんだなと思う。
もっと人間の処理に近づけるなら文字列として認識して、1桁目を数字に変換して〜みたいになるんだろうけど。

758 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 22:48:25.97 ID:t+AGMGYK.net]
>>494
(CSVはコンマ区切りの値だよ)

759 名前:デフォルトの名無しさん mailto:age [2019/03/17(日) 23:32:46.95 ID:wEirTeMQ.net]
>>742
カンマを逆から読むとマンコですよ

760 名前:デフォルトの名無しさん mailto:age [2019/03/17(日) 23:33:11.60 ID:wEirTeMQ.net]
致命的なミスを犯しました



761 名前:デフォルトの名無しさん mailto:sage [2019/03/17(日) 23:35:38.92 ID:QL30OvU4.net]
許さないからな

762 名前:デフォルトの名無しさん mailto:sage [2019/03/18(月) 00:38:16.94 ID:9+FFV4Nx.net]
>>494 >>496 Perl5
use feature say;
@data = <DATA>;
chomp @data;
@tags = split' ', shift @data;
%idx = map{$_ => $n++} @tags;
@sum = 0 x $n;
for (@data) {
 @fs = split' ';
 for (0..$n-1) {
  $v = $fs[$_];
  if ($v =~ /^(\d+\.\d*|\d*\.\d+|\d+)$/) {
   $sum[$_] += $v;
  } else {
   warn "変なデータが紛れ込んでいます_ノ乙(、ン、)_`$v'\n";
  }
 }
}
for (@tags) {
 say "$_ の合計 = ", $sum[$idx{$_}];
}
__DATA__
カラム1 カラム2 カラム3 カラム4
1,0 2.0 3.0 4.0
2.1 3.1 4.1 5.1

~ $ perl 13_494.pl
変なデータが紛れ込んでいます_ノ乙(、ン、)_`1,0'
カラム1 の合計 = 2.1
カラム2 の合計 = 5.1
カラム3 の合計 = 7.1
カラム4 の合計 = 9.1

763 名前:デフォルトの名無しさん [2019/03/18(月) 01:13:14.07 ID:4b49AUHf.net]
>>743
マンコ・カパックは、インカ神話によるクスコ王国の初代国王である。

764 名前:デフォルトの名無しさん [2019/03/21(木) 03:20:09.08 ID:ZuEvTwkR.net]
>>728
Kotlin
https://paiza.io/projects/IQdiv40t3eXnM8CEXzF2Og

765 名前:デフォルトの名無しさん [2019/03/21(木) 05:20:06.50 ID:ZuEvTwkR.net]
>>680
Kotlin
https://paiza.io/projects/SlCrKgxVJRghtvESdUMR_A

リストの中の最小値をループして探し出しように作っただけなんだけど、こんなんで良いのか?
(MutableListなのでsort()しちゃうという手抜きワザもあったがそれだと表面上分岐が一つもない状態になるので止めた)。

766 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 11:30:55.91 ID:4Lv8Ku6J.net]
>>494 Squeak Smalltalk。コンマを分割と見なしそれぞれについての和を出力させてみた

| fn |
fn := [:columnName |
FileStream oldFileNamed: 'data.txt' do: [:file |
| index sum |
index := (file nextLine subStrings: ' ') indexOf: columnName.
sum := 0.
[file atEnd] whileFalse: [
| next |
next := ((file nextLine subStrings: ' ') at: index) subStrings: ','.
sum := sum + (next size = 1 ifTrue: [next anyOne] ifFalse: [next])].
sum
]
].

fn value: 'カラム3'. "=> 7.1 "
fn value: 'カラム1'. "=> #(3.1 2.1) "

767 名前:デフォルトの名無しさん [2019/03/21(木) 13:37:55.15 ID:p+hkSRzH.net]
お題
長方形の盤で左上から上下左右に一マスずつ移動して全てのマスを
辿る。
移動の順番を表した数字を向きと終点を表す文字(↑↓←→★、
上下左右終、UDLRG、^V<>Gなど)に変換する。

入力
1 4 5 6
2 3 8 7
15 14 9 10
16 13 12 11

出力
↓→→↓
→↑↓←
↓←→↓
★↑←←

768 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 14:37:03.32 ID:Krn8F3T2.net]
>>751 Perl5
@a = map{[split]} <DATA>;
for $y (0..$#a) {
 $h{$a[$y][$_]} = [$y,$_,''] for 0..$#a;
}
@s = keys %h;
%r = qw{-1,0 ↑ 1,0 ↓ 0,-1 ← 0,1 →};
for $i (1..@s) {
 if ($i == @s) {
  $d = '★'
 } else {
  $y = $h{$i+1}->[0] - $h{$i}->[0];
  $x = $h{$i+1}->[1] - $h{$i}->[1];
  $d = $r{"$y,$x"}
 }
 $h{$i}->[2] = $d;
}
($y, $x, $d) = @$_, $a[$y][$x] = $d for values %h;
use feature say;
say "@$_" for @a;
__DATA__
1 4 5 6
2 3 8 7
15 14 9 10
16 13 12 11

実行結果
~ $ perl 13_746.pl
↓ → → ↓
→ ↑ ↓ ←
↓ ← → ↓
★ ↑ ← ←

769 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 22:33:42.92 ID:4Lv8Ku6J.net]
>>728 Squeak Smalltalk

| fn |
fn := [:int1 :int2 |
| strings width digits interms ans max line |
strings := {int1. int2} collect: #asString.
width := (strings detectMax: #size) size.
digits := strings collect: [:str |
(str forceTo: width padd

770 名前:ingStartWith: $0) reversed asArray collect: #asString].
interms := (digits reduce: #+) collectWithIndex: [:interm :idx |
interm, (String new: idx-1 withAll: Character space)].
ans := interms polynomialEval: '10'.
strings atLast: 1 put: '+ ', strings last.
max := ((strings, {ans}) collect: #size) max.
line := String new: max withAll: $-.
(strings, {line}, interms, {line. ans} collect: [:str |
(str forceTo: max paddingStartWith: Character space) withoutTrailingBlanks
]) asStringWithCr
].

fn value: 987 value: 65. "=>
' 987
+ 65
----
12
14
9
----
1052' "
[]
[ここ壊れてます]



771 名前:デフォルトの名無しさん [2019/03/22(金) 05:04:29.93 ID:NMDgNTgg.net]
>>751
Kotlin
https://paiza.io/projects/kKx0DA0gpsZ6He2ZxKSF_A

772 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 12:12:43.26 ID:bmKj2SZK.net]
>>751 Squeak Smalltalk

| fn |

fn := [:str |
| map range sign goal position next atEnd |
map := str lines collect: [:line | line subStrings collect: #asInteger].
range := 1@1 extent: map first size @ map size.
sign := (0 asPoint fourNeighbors with: #(→ ↓ ← ↑) collect: #->) as: Dictionary.
goal := #★.
position := 1@1. next := 2. atEnd := false.
[atEnd] whileFalse: [
| found |
found := position fourNeighbors detect: [:neighPos |
(range containsPoint: neighPos) and: [((map at: neighPos y) at: neighPos x) = next]
] ifNone: [atEnd := true. Float nan].
(map at: position y) at: position x put: (sign at: found - position ifAbsent: goal).
position := found. next := next + 1.
].
(map collect: #join) asStringWithCr
].

fn value: '1 4 5 6
2 3 8 7
15 14 9 10
16 13 12 11'

"=>
'↓→→↓
→↑↓←
↓←→↓
★↑←←' "

773 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 20:50:59.33 ID:KB/r9SyN.net]
>>751 octave
https://ideone.com/BacNm6

774 名前:デフォルトの名無しさん [2019/03/22(金) 21:14:53.89 ID:97922Y7I.net]
まだ見にくいなあ。線を繋いで矢印を入れることはできないかな。

775 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 21:41:47.96 ID:nZ/OoXFx.net]
罫線
│┌─┐
└┘┌┘
┌┐└┐
★└─┘

直線部に矢印
│┌→┐
└┘┌┘
┌┐└┐
★└←┘

こんな感じ?

776 名前:デフォルトの名無しさん mailto:sage [2019/03/22(金) 21:43:03.63 ID:nZ/OoXFx.net]
スタート部も矢印に出来るやん…

↓┌→┐
└┘┌┘
┌┐└┐
★└←┘

777 名前:747 mailto:sage [2019/03/22(金) 23:30:54.68 ID:DMg7GUli.net]
code、プリーズ

778 名前:デフォルトの名無しさん [2019/03/23(土) 01:24:21.91 ID:Bvojjkpo.net]
>>759
Kotlin
https://paiza.io/projects/jjP3AHDkfJ4t_Lfsd3wmlA

>>754 を改造して作った。

779 名前:デフォルトの名無しさん [2019/03/23(土) 01:27:24.77 ID:Bvojjkpo.net]
罫線や矢印が半角で★が全角で表示されてしまうとずれるな。
ま、しょうがないか。

780 名前:デフォルトの名無しさん [2019/03/23(土) 02:35:34.66 ID:FcxASXew.net]
>>751 Common Lisp
https://ideone.com/7h7HT4



781 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 05:47:57.62 ID:ZlGSstH0.net]
>>759 Squeak Smalltalk

| fn |
fn := [:str |
| map range signs sign goal position from next atEnd |
map := str lines collect: [:line | line subStrings collect: #asInteger].
range := 1@1 extent: map first size @ map size.
goal := #★. signs := #(┌ ┌ ← → └ └ ┐ ┐ ↑ ↓ ┘ ┘) readStream.
sign := Dictionary new.
0 asPoint fourNeighbors combinations: 2 atATimeDo: [:combi |
sign at: combi copy put: signs next; at: combi reversed put: signs next].
position := 1@1. from := nil. next := 2. atEnd := false.
[atEnd] whileFalse: [
| found delta |
found := position fourNeighbors detect: [:neighPos |
(range containsPoint: neighPos) and: [((map at: neighPos y) at: neighPos x) = next]
] ifNone: [atEnd := true. Float nan].
delta := found - position.
(map at: position y) at: position x put: (sign at: {from ifNil: [delta negated]. delta} ifAbsent: goal).
position := found. from := delta negated. next := next + 1].
(map collect: #join) asStringWithCr
].

fn value: '1 4 5 6
2 3 8 7
15 14 9 10
16 13 12 11' .
"=>
'↓┌→┐
└┘┌┘
┌┐└┐
★└←┘' "

782 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 06:18:42.67 ID:ZlGSstH0.net]
>>764 758の入力例を拝借

fn value: '1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9'.

"=>
'→→→→┐
┌→→┐↓
↑┌★↓↓
↑└←┘↓
└←←←┘' "

fn value: '1 4 5 8 9 12
2 3 6 7 10 11'.

"=>
'↓┌┐┌┐★
└┘└┘└┘' "

fn value: '1 4 5 6
2 3 8 7
16 14 9 10
15 13 12 11' .

"=> 繋げられるところまでで終点にする。
'↓┌→┐
└┘┌┘
16★└┐
15└←┘' "

783 名前:デフォルトの名無しさん [2019/03/23(土) 22:17:53.61 ID:4V4ijAbJ.net]
S : Start
E : End
X : 行けない所

で、表す方がよいかも

784 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 23:35:50.10 ID:4ExQ31KE.net]
縦読み

785 名前:デフォルトの名無しさん mailto:sage [2019/03/23(土) 23:49:28.93 ID:5/UQAxw+.net]
>>766
セックス!

786 名前:デフォルトの名無しさん [2019/03/24(日) 01:17:54.50 ID:TWBa+gHA.net]
>>751 C
https://ideone.com/dQ2NRt
行けないところがある場合■で表示した

787 名前:デフォルトの名無しさん [2019/03/24(日) 13:31:32.22 ID:Vlgf6sT0.net]
お題 :次のようなジョブパラメータで表されるジョブ(製造工程)があります。全て完成するための最小時間とマシンスケジュールを求めてください。貧乏なので同じ番号のマシンは一台しかありません。{A, B}とあれば;Aマシン番号、B:所要時間

int job_param[JOBNUM][STP][2] = {
{{3, 10}, {4, 10}, {2, 12}, {0, 18}, {1, 4}},
{{1, 11}, {2, 6}, {3, 2}, {4, 8}, {0, 15}},
{{2, 10}, {4, 16}, {3, 2}, {1, 8}, {0, 14}},
{{2, 15}, {1, 12}, {0, 16}, {3, 6}, {4, 17}},
{{4, 14}, {0, 2}, {1, 15}, {2, 6}, {3, 10}}};

788 名前:デフォルトの名無しさん [2019/03/24(日) 13:50:50.08 ID:ynFGlX0q.net]
>>770
順序に対する制限とかは?
それとなんで5つに分かれているのか?
全部一塊で25個のマシン番号と所要時間のペアがある状態だと順序の関係で何かまずいのか?

789 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 13:56:04.93 ID:xOvhcY6B.net]
>>771
5つのタスクでそれぞれ5つの工程があるってことだろう

790 名前:デフォルトの名無しさん [2019/03/24(日) 14:40:55.72 ID:ynFGlX0q.net]
>>772
その辺の制限やルールが書かれていないからどうやれば良いのかが分からない、ということ。

順序も何もかも(マシン番号と所要時間も)入れ替えて構わないなら0〜4のマシン全体に所要時間を平均的に
詰め込むだけになると思うが、わざわざジョブとか分けてるんだからどうやらそうではなさそうだよな。
どうやら順序や入れ替えには制限があるように見える。しかしその制限が書かれていない。



791 名前:デフォルトの名無しさん [2019/03/24(日) 17:03:38.93 ID:Ou399CfX.net]
>>770
>>771
>>772
ジョブショップスケジューリング問題です。この問題はジョブや機械が増加すると調べなければならない組み合わせが爆発的に増加してしまうため、現実的な時間で最適解を求めることが難しいとされています(NP困難として知られています)。
マシンを配列順に使用することで1つの製品ができます。

私の実験では10分ぐらい待っても95で終わりませんでした。

792 名前:デフォルトの名無しさん [2019/03/24(日) 17:35:40.10 ID:Ou399CfX.net]
>>774
途中結果
Solution 4
COST_TIME: 95
0 : ( 3, 0, 10), ( 4, 15, 25), ( 2, 27, 39), ( 0, 46, 64), ( 1, 65, 69)
1 : ( 1, 0, 11), ( 2, 40, 46), ( 3, 54, 56), ( 4, 57, 65), ( 0, 80, 95)
2 : ( 2, 16, 26), ( 4, 27, 43), ( 3, 44, 46), ( 1, 47, 55), ( 0, 65, 79)
3 : ( 2, 0, 15), ( 1, 16, 28), ( 0, 29, 45), ( 3, 47, 53), ( 4, 66, 83)
4 : ( 4, 0, 14), ( 0, 15, 17), ( 1, 29, 44), ( 2, 47, 53), ( 3, 57, 67)

MACHIN Schedule
0 : (46, 64), (80, 95), (65, 79), (29, 45), (15, 17)
1 : (65, 69), ( 0, 11), (47, 55), (16, 28), (29, 44)
2 : (27, 39), (40, 46), (16, 26), ( 0, 15), (47, 53)
3 : ( 0, 10), (54, 56), (44, 46), (47, 53), (57, 67)
4 : (15, 25), (57, 65), (27, 43), (66, 83), ( 0, 14)

793 名前:デフォルトの名無しさん [2019/03/24(日) 20:02:05.47 ID:TWBa+gHA.net]
>>775
ttps://imgur.com/upBqhWN.png
手動で調べたら90時間(単位は適当)まで縮んだ。最小時間か知らんが。
こういうのガントチャートっていうんだな

794 名前:デフォルトの名無しさん mailto:sage [2019/03/24(日) 22:58:01.17 ID:3fqiTHWE.net]
ちなみに、

>>751
の問題で、行列の周りに、番兵を作って、処理した人はいる?

漏れは、いつもこの手の問題では、番兵で周りを囲む

795 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 12:18:06.31 ID:7aW5s/71.net]
……プログラミングやっててガントチャートしらないヤツもいるのか
勉強になった

796 名前:デフォルトの名無しさん [2019/03/25(月) 12:23:06.98 ID:T0osdeZX.net]
名前知らなかっただけでは?

797 名前:デフォルトの名無しさん [2019/03/25(月) 12:26:24.36 ID:VWPF1Bqz.net]
ロシア国防省「東アジアの地震の多い某国は数十年にわたり、地震を偽装した地下核実験を繰り返して

798 名前:「る」
https://rosie.5ch.net/test/read.cgi/liveplus/1550888671/l50
自衛隊の中に熊本人工地震を発生させた連中がいることは震源地が自衛隊駐屯地地下であることから自明。
http://open.mixi.jp/user/38378433/diary/1953066799
そればかりか、いま熊本の地下から出ている放射線量が「謎の赤丸急上昇中」だというのだ。
https://quasimoto2.exblog.jp/22729487/
今、自民党政権が、原発再稼働を進めている本当の理由は、核武装計画だけである。
経済的にとっくに破綻した原子力発電など、最初から眼中にないのだ。
東海アマブログentry-688.html
[]
[ここ壊れてます]

799 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 14:02:28.57 ID:FL0Sj0Av.net]
いちいちガントチャートなんて銘打たんしな
進捗管理するときには普通に使うもんだ

800 名前:デフォルトの名無しさん [2019/03/25(月) 14:57:20.21 ID:T0osdeZX.net]
みんな名前知らないけど気づいたら作ってるようなものじゃないか?



801 名前:デフォルトの名無しさん mailto:sage [2019/03/25(月) 21:13:29.59 ID:wbp6GG9F.net]
ナップザック問題の一種じゃないの?

802 名前:デフォルトの名無しさん [2019/03/26(火) 00:12:39.41 ID:xyG5xdoY.net]
お題1: 整数値に対して K, M, G 等の単位を付けて人間に読みやすく文字列に変換して出力する。(ls -lh の時の容量の出力と同じで良い)。2^10 = K, 2^20 = M, 2^30 = G とする。
 小数点以下を何桁にするかはご自由に。但しあまりあり過ぎると人間には分かり辛いので1桁か2桁が望ましい。

お題2: お題1の逆変換。但し欠落した下位桁があったとしても考慮しなくて良い。

お題3: お題1, お題2 の10^3 = K, 10^6 = M, 10^9 = G 版。

回答のプログラムはまとめた形でも良い。例えばお題1を処理する関数のオプションとして0を与えると2^10単位、1を与えると10^3単位にするなど。
また、K, M, G よりも上の単位ができても良い。

803 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 03:32:10.56 ID:xI3rzKRA.net]
いまどき容量系の接頭辞はKi, Mi, Gi使えや

804 名前:デフォルトの名無しさん [2019/03/26(火) 03:42:21.20 ID:xyG5xdoY.net]
>>785
そうしたければそうしてもいいよ。

805 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 13:05:28.20 ID:8ujFPLE9.net]
お題1と3まとめてswitch-case文って
筋悪いですかねえ

あるいはお題1とお題2をまとめて、enum型でINVERSEとか作るとか、あるいは TRUE / FALSE で分岐とか

806 名前:デフォルトの名無しさん mailto:sage [2019/03/26(火) 19:22:41.61 ID:NbUyZWCM.net]
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 95286
https://you-can-program.hatenablog.jp

807 名前:デフォルトの名無しさん mailto:sage [2019/03/27(水) 00:34:27.07 ID:KJlt8YQv.net]
>>784 c
https://ideone.com/N64nDG
・十分に小さい値のときしか動かない
・大きい値を与えたときの挙動もケアされない

808 名前:デフォルトの名無しさん [2019/03/27(水) 23:48:37.99 ID:oM4knkxt.net]
>>784
Kotlin
https://paiza.io/projects/BisWbp363VArN7FaHYwmoA

Long 型使って正の整数しか考慮してないので63bitまで。

809 名前:さまよえる蟻人間 mailto:sage [2019/03/28(木) 00:18:20.27 ID:JS1PpMcc.net]
Windows付属のshlwapi.dllにStrFormatByteSizeという関数があるようだね。

810 名前:デフォルトの名無しさん [2019/03/28(木) 17:17:39.60 ID:vvqhH31/.net]
>>770
乱数使ったプログラム書いてみたけど動かした瞬間90まで行くけど
そこから何分待っても動かなさそう



811 名前:デフォルトの名無しさん [2019/03/30(土) 20:23:23.36 ID:ghZBhzgh.net]
お題
表示画面におさまる最大の正三角形を描画する

812 名前:デフォルトの名無しさん mailto:sage [2019/03/30(土) 23:07:23.94 ID:DyxzEuK/.net]
つまらん次

813 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 08:20:57.83 ID:JrOSOdLx.net]
>>793
最大の定義ぐらい書けよ…

814 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 13:16:21.13 ID:m8dr8/PB.net]
>>795
「たとえば表示画面が640x400なら、一辺が400の正三角形を描画する」ことではないのか
貴殿が想定する「最大の定義」とやらを示してもらえんかの?

815 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 13:25:41.80 ID:+5DxT57L.net]
ん?
その場合、一辺は400*2/sqrt(3)になるんじゃない?

816 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 13:28:01.88 ID:EfWeZY5f.net]
>>796
高さ400の正三角形だと一辺461.88じゃね?

817 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 15:30:18.52 ID:uX30LzG9.net]
怒涛のツッコミw

818 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 19:30:51.59 ID:KJRyWF55.net]
コンソール画面なら、画面の横幅と縦幅を取得しなきゃならんから言語によってはめんどくさいだろうな
標準でcurses使える言語ってなにがあるかな

819 名前:デフォルトの名無しさん mailto:sage [2019/03/31(日) 20:25:37.50 ID:P4y0w1jO.net]
表示画面が球体だったら…

820 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 00:15:16.48 ID:ucc1UNjR.net]
リーマン幾何の多様体上で計算しとけ

なお、サラリーマンのリーンマン じゃないからな。



821 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 01:51:36.50 ID://wZRuJn.net]
でしゃばんな

822 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 03:15:46.62 ID:Mx+j7LaB.net]
Windows環境だとdirectx叩くことになるのかな

VT100とかXとかは全く知らないけど DisplayWidth とか DisplayHeight とか使うのか
あるいは何らかのクラスのメンバー関数を呼ぶのか

823 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 03:16:52.56 ID:Mx+j7LaB.net]
>>800
pdcursesがあるじゃないか(あらゆる環境で使えるとは言ってない

824 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 22:24:58.61 ID:pFhU6MbP.net]
エスケープシーケンスで座標指定とか文字色変更って、今はできないんだっけ?

825 名前:デフォルトの名無しさん mailto:sage [2019/04/15(月) 23:06:48.83 ID:1nT5zSFt.net]
エスケープシーケンス powershell
で、ググってみ

826 名前:デフォルトの名無しさん [2019/04/16(火) 09:06:19.32 ID:wCqxjGzR.net]
>>806
文字を出す端末による。

WindowsだったとしてもWSLでUbuntu動かした時のbashの端末では使えてるので多分設定次第なんだろうな。
逆に言うと設定によっては意図した通りに動かない。

827 名前:デフォルトの名無しさん [2019/04/16(火) 16:33:57.42 ID:wCqxjGzR.net]
お題
アミダくじの作成、表示、及び余力があれば実行

・縦線の本数と横線の最大本数は入力できるようにする。

・左右の縦線への横線だけでなく飛び越えて他の縦線へ移動する横線もオプションで作れるようにする。

・表示方法は罫線キャラクタを使っても良いがGUI等他の方法でも良い。

・実行時はアニメーションでも良いし、いきなり結果が出るだけでも良い。

・面倒なら作成して表示するだけで実行しなくても良い。

828 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 16:45:06.33 ID:GDkTCt4E.net]
N88-BASIC(86)で出来そうな気がするが

829 名前:デフォルトの名無しさん [2019/04/16(火) 17:51:22.60 ID:wCqxjGzR.net]
・PC-8001で動作すること。

いや、動かんでもいい。

830 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:37:53.31 ID:GDkTCt4E.net]
PRINT CHR$(12)



831 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:38:10.10 ID:GDkTCt4E.net]
CONSOLE 80,25,0,1
だっけ

832 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:40:11.47 ID:GDkTCt4E.net]
10 WIDTH 80,25
からか…

833 名前:デフォルトの名無しさん mailto:sage [2019/04/16(火) 18:46:35.84 ID:GDkTCt4E.net]
DEFINTA-Z:PRINT"HOW MANY COLUMNS":INPUTA:A0=160/A

834 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 19:26:49.12 ID:pJc8eu0c.net]
お題:要素数が同じふたつの数値配列を受け取り、要素ごとに足した配列を返す。
中級:同様に、三つの配列を受け取る。
上級:同様に、三つの配列を受け取り、掛けて割ったもの返す。

ocaml
https://ideone.com/GyC6yJ

octave
https://ideone.com/NwYyqs

835 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 21:28:55.51 ID:47ewAOC/.net]
簡単過ぎる、次

836 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 23:26:27.73 ID:izaVyiw1.net]
>>816 Squeak/Pharo Smalltalk

#(1 2 3) + #(4 5 6). "=> #(5 7 9) "
#((1 2 3) (4 5 6) (7 8 9)) sum. "=> #(12 15 18) "
#(1 2 3) * #(4 5 6) / #(7 8 9). "=> {(4/7) . (5/4) . 2} "

837 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 00:02:01.58 ID:ODUYGH1G.net]
お題そのものは簡単でも、マイナー言語での解き方を見るのは面白いね

838 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 00:09:49.99 ID:fWzUUJvd.net]
自演乙

839 名前:デフォルトの名無しさん [2019/04/19(金) 07:15:46.60 ID:TxABBsFf.net]
>>816
main = do
print $ zipWith (+) [1,2,3] [4,5,6]
print $ zipWith3 (\a b c -> a + b + c) [1,2,3] [4,5,6] [7,8,9]
print $ zipWith3 (\a b c -> a * b / c) [1,2,3] [4,5,6] [7,8,9]

Out:
[5,7,9]
[12,15,18]
[0.571428571428571,1.25,2.0]

840 名前:デフォルトの名無しさん [2019/04/19(金) 08:40:44.50 ID:TxABBsFf.net]
>>818
Haskellでは%記号が分数を表すので、Data.Ratioをインポートして

import Data.Ratio

main = do
print $ zipWith (+) [1,2,3] [4,5,6]
print $ zipWith3 (\a b c -> a + b + c) [1,2,3] [4,5,6] [7,8,9]
print $ zipWith3 (\a b c -> a * b % c) [1,2,3] [4,5,6] [7,8,9]

Out:
[5,7,9]
[12,15,18]
[4 % 7,5 % 4,2 % 1]



841 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 12:21:00.80 ID:R45IcBKG.net]
お題:円の中心の座標と、円の半径の2乗が与えられる。
この円の円周上にある格子点の数を求めよ。

(X座標 Y座標 半径の2乗)
9/22 5/22 138125/242 => 7
7/38 5/38 785817263725/722 => 77
17/38 13/38 13603053979519731025/722 => 777
9/38 6/38 23959256988683736880737131790625/1444 => ?
12/38 7/38 23959256988683736880737131790625/1444 => ?
15/38 14/38 23959256988683736880737131790625/1444 => ?

842 名前:デフォルトの名無しさん [2019/04/20(土) 18:57:22.37 ID:4zW2+iPl.net]
また数学か・・・

843 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 19:51:50.54 ID:JrfgKJuX.net]
しょっちゅう出てくるけどこれ宿題か?

844 名前:デフォルトの名無しさん mailto:sage [2019/04/20(土) 23:55:49.29 ID:R45IcBKG.net]
宿題じゃないんやけどなー
12/38 7/38 23959256988683736880737131790625/1444 => ? の答えと円周上の格子点一覧…俺が間違えてなければ
https://pastebin.com/pnGbWPfM

845 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 00:12:56.57 ID:E83GoNC+.net]
コードを出せコードを!

846 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 01:28:16.84 ID:TAIIcaTj.net]
プログラムでの解き方が思い付かないわ
円の方程式に整数代入して満たすかみればいいのか?

847 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 02:14:46.56 ID:H/Se0iAi.net]
解法を考えるのも回答能力のうちだからね
今の時代、参照・検索も当然 可だけれど

848 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 06:09:56.50 ID:/+hkU7cH.net]
>>822
割り算が%とか、そのモジュール書いた奴、頭腐ってんじゃないの?

849 名前:デフォルトの名無しさん [2019/04/21(日) 13:14:42.53 ID:ay9waDdy.net]
>>830

>>821 見てないの?
Haskellでは少数を返す割り算は「/」、整数を返す割り算は「`div`」と返す型で使い分ける。
「%」が返すのは分数型(Rational)

850 名前:デフォルトの名無しさん mailto:sage [2019/04/21(日) 14:45:56.49 ID:/+hkU7cH.net]
やっぱ頭腐ってるな。



851 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:43:26.25 ID:NALZs80Z.net]
お題: 日本語の文章の句読点を , や . に置き換える。
ただし、, や . の直後には半角のスペースを置き、さらに改行の手前や文末のスペースは削除すること。

例:
In < これは、日本語の文章です。ふひひ。
Out > これは, 日本語の文章です. ふひひ.

852 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:50:03.68 ID:WcGowxU3.net]
しょうもな

853 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:51:59.82 ID:Y8OSWYHv.net]
文末のスペースが消えてないやん
どっちやねん

854 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:52:14.50 ID:NALZs80Z.net]
お題: 簡易なテーブルを綺麗に整形する
余力があればカラムの左揃え、右揃えをオプションで選択できるようにする(出力は中央揃え)

入力:
a|aaaaa|bb
ccc|ddd|ee

出力:

**a***|*aaaaa*|***bb*
------+-------+------
*ccc**|**ddd**|***ee*

855 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 20:54:35.53 ID:NALZs80Z.net]
>>836
×(出力は中央揃え)
〇(例は中央揃え)

856 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:01:38.43 ID:Y8OSWYHv.net]
bとeが中央じゃなくね

857 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 21:05:36.09 ID:NALZs80Z.net]
>>838
例に使ったスクリプトがバグってた

858 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 22:36:14.15 ID:lwqMqFKi.net]
左のaとcもおかしい

859 名前:デフォルトの名無しさん mailto:sage [2019/04/24(水) 23:50:33.64 ID:NSCbK96M.net]
各列の文字数は一致する必要があるのか

860 名前:デフォルトの名無しさん [2019/04/25(木) 04:26:28.66 ID:D6NtakiX.net]
>>836
入出力のエンコードは?
ASCII以外はあるのか?



861 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 05:01:51.18 ID:XVamjpPA.net]
>>842
ASCIIのみで

862 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 07:44:22.82 ID:XVamjpPA.net]
>>839
いやバグってなかったわ
>>836
が正常
| の前後に*が一つ入るから
| の前後の*は入れても入れなくてもいいけど入れたほうが綺麗になるかもしれん

863 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 10:34:23.81 ID:J1W60oTI.net]
「綺麗」とか言うお気持ちワードが入るとダメだな

864 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 10:41:43.51 ID:aGd2Nt87.net]
「楽しいプログラミング」w
「美しく書ける」ww

865 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 12:39:16.14 ID:J1W60oTI.net]
何がキレイなのか定義出来ず言うことが主観でコロコロ変わる、マジで今の日本のサイコパス上司そのものだ
「オレの心情をさっしろ」みたいな屑がいいそうなこと
頭が悪いから定義が出来ないし自分の言ってることが支離滅裂になってる
曖昧な用語(綺麗)で押し通そうとする
コレ全部サイコパスの特徴

866 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:02:10.38 ID:pYdb89HV.net]
美を定義できる人間がいるなら会いたいものだ

867 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 13:47:48.74 ID:BUlwZIC7.net]
>>848
プラトンのスュンポスィオーンって本で定義されてたぞ

868 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 16:18:28.13 ID:ThHN2jz5.net]
美しいコードなんて求められてない。小学生でも知ってる。
https://tr.twipple.jp/ps/3f/af4715.html

869 名前:デフォルトの名無しさん [2019/04/25(木) 18:30:28.28 ID:/IwwINNy.net]
美しい半角カナ

870 名前:デフォルトの名無しさん [2019/04/25(木) 18:35:37.23 ID:/IwwINNy.net]
>>850
変数に日本語が使えないとか書いてあるな。
Javaとか普通に使えるんだがな。



871 名前: mailto:sage [2019/04/25(木) 20:27:10.98 ID:6xUIrXDu.net]
>>849
倉橋由美子のが面白かったと思っています

872 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 22:32:18.97 ID:siWhi4pR.net]
>>852
そんなに日本語使いたいならなでしこでも書いとけ

873 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 22:33:30.90 ID:X6smEgNz.net]
>>852 そんな大昔の話をするなよ。 今はPython3 なんだから日本語も使えるよ。

なな = 7
print(なな)
# 7

874 名前:デフォルトの名無しさん mailto:sage [2019/04/25(木) 23:27:23.78 ID:jZ4+eHeJ.net]
今時C++とかでも普通に日本語識別子使えるだろ…

875 名前:デフォルトの名無しさん [2019/04/25(木) 23:39:11.26 ID:D6NtakiX.net]
>>856
あ、そうなの?
知らなかった。

876 名前:デフォルトの名無しさん [2019/04/26(金) 18:55:29.49 ID:YRtkzMZR.net]
>>836
Kotlin
https://paiza.io/projects/RCbBPGrxaB1uoB-tj_1hJg
入力は1行目に 0, 1, 2 の何れかのオプションを指定する。
意味は 0=中央、1=左寄せ、2=右寄せ になっている。
2行目からは | 区切りで文字列を入れる。
空行またはファイルの終わりで表を出力する。
空行だった場合はまた次の表の最初のオプションから入れられる。

877 名前:デフォルトの名無しさん mailto:sage [2019/04/26(金) 19:49:06.87 ID:RVSBatxL.net]
>>858
ほとぼりが冷めたと思ってんのか屑?
お前が>>844だろ
ID変わったからっていい気になんなよ

ゴミみたいな出力のまさにゴミだ
全然綺麗じゃない

878 名前:853 [2019/04/27(土) 04:31:22.65 ID:dVFnhFQW.net]
>>859
違うよ。俺はもっと上の方であみだくじのお題を出したやつだよ。
自分でもプログラム作るには作ったけど表示するところまでだな。
しかしブラウザの実行環境で表示すると罫線の幅の問題でずれるので画像で出力しようかと思っている。
これな。
https://paiza.io/projects/2mINZHiEB6ciPWHEpkCJig

879 名前:デフォルトの名無しさん [2019/04/27(土) 15:02:49.57 ID:TtYrpMGa.net]
お題:ジョブショップスケジューリングの問題です。
int job_param[JOBNUM][STP][2] = {

{{4, 342}, {1, 244}, {2, 351}, {3, 293}, {0, 342}}, // 1572

{{2, 306}, {4, 342}, {3, 386}, {1, 386}, {0, 413}}, // 1833

{{3, 168}, {0, 266}, {2, 182}, {1, 106}, {4, 368}}, // 1090

{{3, 368}, {2, 151}, {4, 284}, {0, 84}, {1, 164}}, // 1051

{{4, 240}, {1, 191}, {0, 351}, {3, 408}, {2, 275}}, // 1465

{{2, 342}, {3, 351}, {4, 191}, {0, 333}, {1, 426}}, // 1643

{{0, 93}, {1, 235}, {2, 422}, {3, 244}, {4, 151}}, // 1145

{{0, 75}, {4, 217}, {1, 111}, {3, 195}, {2, 435}}, // 1033

{{2, 173}, {4, 435}, {3, 186}, {1, 137}, {0, 53}}, // 984

{{1, 93}, {2, 231}, {4, 71}, {3, 115}, {0, 315}}}; // 825

880 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 16:10:46.35 ID:nhVWQaIp.net]
宿題は自分でやれ



881 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 16:24:49.19 ID:VMurKVDA.net]
まずジョブスケジューリングが何か説明してもらおう

882 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 17:28:59.65 ID:PUfIYz8D.net]
適当に詰めて行くプログラムで2928まではなった

h0 0-75 g0 75-168 c1 168-434 e2 434-785 j4 1002-1317 d3 1505-1589 f3 1696-2029 b4 2029-2442 a4 2442-2784 i4 2875-2928
j0 0-93 e1 240-431 h2 457-568 a1 799-1043 g1 1043-1278 c3 1385-1491 b3 1607-1993 d4 1993-2157 f4 2157-2583 i3 2738-2875
f0 0-342 j1 342-573 b0 573-879 i0 879-1052 d1 1052-1203 c2 1203-1385 a2 1385-1736 g2 1736-2158 e4 2158-2433 h4 2433-2868
c0 0-168 d0 168-536 f1 536-887 j3 887-1002 h3 1002-1197 b2 1221-1607 e3 1607-2015 a3 2015-2308 g3 2308-2552 i2 2552-2738
e0 0-240 h1 240-457 a0 457-799 j2 799-870 b1 879-1221 d2 1221-1505 f2 1505-1696 c4 1696-2064 i1 2064-2499 g4 2552-2703

883 名前:デフォルトの名無しさん mailto:sage [2019/04/27(土) 17:44:35.53 ID:PUfIYz8D.net]
今2889になってたけどSegmentation faultで落ちてた
前回のやつでJOBNUMとかSTPとかをわざわざ直接5 5とか書いてて
今回どんなコードかもう忘れて片方を適当に10に直したからか元からバグがあったのか分からないけど
結果自体は間違ってなそうだと思うけど

884 名前:818 mailto:sage [2019/04/27(土) 18:03:52.53 ID:63A0HxGX.net]
>>823の(最適化していない)コード Java
https://ideone.com/72sNsk

>>827
出したで

885 名前:デフォルトの名無しさん [2019/04/28(日) 08:12:15.68 ID:3xnz0I0C.net]
>>861
COST_TIME: 2932
0 : ( 4, 457, 799), ( 1, 800, 1044), ( 2, 1275, 1626), ( 3, 2017, 2310), ( 0, 2417, 2759)
1 : ( 2, 573, 879), ( 4, 880, 1222), ( 3, 1223, 1609), ( 1, 1610, 1996), ( 0, 2004, 2417)
2 : ( 3, 0, 168), ( 0, 784, 1050), ( 2, 1093, 1275), ( 1, 1279, 1385), ( 4, 2389, 2757)
3 : ( 3, 168, 536), ( 2, 942, 1093), ( 4, 1586, 1870), ( 0, 1920, 2004), ( 1, 2473, 2637)
4 : ( 4, 0, 240), ( 1, 241, 432), ( 0, 433, 784), ( 3, 1609, 2017), ( 2, 2221, 2496)
5 : ( 2, 0, 342), ( 3, 536, 887), ( 4, 1395, 1586), ( 0, 1587, 1920), ( 1, 2047, 2473)
6 : ( 0, 75, 168), ( 1, 1044, 1279), ( 2, 1799, 2221), ( 3, 2310, 2554), ( 4, 2757, 2908)
7 : ( 0, 0, 75), ( 4, 240, 457), ( 1, 458, 569), ( 3, 892, 1087), ( 2, 2496, 2931)
8 : ( 2, 1626, 1799), ( 4, 1954, 2389), ( 3, 2554, 2740), ( 1, 2741, 2878), ( 0, 2879, 2932)
9 : ( 1, 0, 93), ( 2, 342, 573), ( 4, 799, 870), ( 3, 1087, 1202), ( 0, 1203, 1518)

MACHINE Schedule
0 : ( 7, 0, 75), ( 6, 75, 168), ( 4, 433, 784), ( 2, 784, 1050), ( 9, 1203, 1518), ( 5, 1587, 1920), ( 3, 1920, 2004), ( 1, 2004, 2417), ( 0, 2417, 2759), ( 8, 2879, 2932)
1 : ( 9, 0, 93), ( 4, 241, 432), ( 7, 458, 569), ( 0, 800, 1044), ( 6, 1044, 1279), ( 2, 1279, 1385), ( 1, 1610, 1996), ( 5, 2047, 2473), ( 3, 2473, 2637), ( 8, 2741, 2878)
2 : ( 5, 0, 342), ( 9, 342, 573), ( 1, 573, 879), ( 3, 942, 1093), ( 2, 1093, 1275), ( 0, 1275, 1626), ( 8, 1626, 1799), ( 6, 1799, 2221), ( 4, 2221, 2496), ( 7, 2496, 2931)
3 : ( 2, 0, 168), ( 3, 168, 536), ( 5, 536, 887), ( 7, 892, 1087), ( 9, 1087, 1202), ( 1, 1223, 1609), ( 4, 1609, 2017), ( 0, 2017, 2310), ( 6, 2310, 2554), ( 8, 2554, 2740)
4 : ( 4, 0, 240), ( 7, 240, 457), ( 0, 457, 799), ( 9, 799, 870), ( 1, 880, 1222), ( 5, 1395, 1586), ( 3, 1586, 1870), ( 8, 1954, 2389), ( 2, 2389, 2757), ( 6, 2757, 2908)

886 名前:デフォルトの名無しさん [2019/04/28(日) 19:46:09.95 ID:4L316qYF.net]
COST_TIME: 2868
0 : ( 4, 457, 799), ( 1, 800, 1044), ( 2, 1212, 1563), ( 3, 2017, 2310), ( 0, 2410, 2752)
1 : ( 2, 573, 879), ( 4, 880, 1222), ( 3, 1223, 1609), ( 1, 1610, 1996), ( 0, 1997, 2410)
2 : ( 3, 0, 168), ( 0, 169, 435), ( 2, 1030, 1212), ( 1, 1213, 1319), ( 4, 2

887 名前:326, 2694)
3 : ( 3, 168, 536), ( 2, 879, 1030), ( 4, 1523, 1807), ( 0, 1857, 1941), ( 1, 2703, 2867)
4 : ( 4, 0, 240), ( 1, 241, 432), ( 0, 435, 786), ( 3, 1609, 2017), ( 2, 2158, 2433)
5 : ( 2, 0, 342), ( 3, 536, 887), ( 4, 1332, 1523), ( 0, 1524, 1857), ( 1, 1996, 2422)
6 : ( 0, 75, 168), ( 1, 1319, 1554), ( 2, 1736, 2158), ( 3, 2310, 2554), ( 4, 2694, 2845)
7 : ( 0, 0, 75), ( 4, 240, 457), ( 1, 458, 569), ( 3, 887, 1082), ( 2, 2433, 2868)
8 : ( 2, 1563, 1736), ( 4, 1891, 2326), ( 3, 2379, 2565), ( 1, 2566, 2703), ( 0, 2752, 2805)
9 : ( 1, 0, 93), ( 2, 342, 573), ( 4, 799, 870), ( 3, 1082, 1197), ( 0, 1198, 1513)

MACHINE Schedule
0 : ( 7, 0, 75), ( 6, 75, 168), ( 2, 169, 435), ( 4, 435, 786), ( 9, 1198, 1513), ( 5, 1524, 1857), ( 3, 1857, 1941), ( 1, 1997, 2410), ( 0, 2410, 2752), ( 8, 2752, 2805)
1 : ( 9, 0, 93), ( 4, 241, 432), ( 7, 458, 569), ( 0, 800, 1044), ( 2, 1213, 1319), ( 6, 1319, 1554), ( 1, 1610, 1996), ( 5, 1996, 2422), ( 8, 2566, 2703), ( 3, 2703, 2867)
2 : ( 5, 0, 342), ( 9, 342, 573), ( 1, 573, 879), ( 3, 879, 1030), ( 2, 1030, 1212), ( 0, 1212, 1563), ( 8, 1563, 1736), ( 6, 1736, 2158), ( 4, 2158, 2433), ( 7, 2433, 2868)
3 : ( 2, 0, 168), ( 3, 168, 536), ( 5, 536, 887), ( 7, 887, 1082), ( 9, 1082, 1197), ( 1, 1223, 1609), ( 4, 1609, 2017), ( 0, 2017, 2310), ( 6, 2310, 2554), ( 8, 2379, 2565)
4 : ( 4, 0, 240), ( 7, 240, 457), ( 0, 457, 799), ( 9, 799, 870), ( 1, 880, 1222), ( 5, 1332, 1523), ( 3, 1523, 1807), ( 8, 1891, 2326), ( 2, 2326, 2694), ( 6, 2694, 2845)
[]
[ここ壊れてます]

888 名前:デフォルトの名無しさん mailto:sage [2019/04/28(日) 23:28:25.99 ID:l2GeSHcv.net]
>>868
3 : ( 2, 0, 168), ( 3, 168, 536), ( 5, 536, 887), ( 7, 887, 1082), ( 9, 1082, 1197), ( 1, 1223, 1609), ( 4, 1609, 2017), ( 0, 2017 , 2310), ( 6, 2310, 2554), ( 8, 2379, 2565)

( 6, 2310, 2554), ( 8, 2379, 2565)
ここが重複してるから間違ってる

889 名前:デフォルトの名無しさん [2019/04/29(月) 05:34:40.52 ID:8r4CfxJG.net]
>>869
ご指摘ありがとうございます。

890 名前:デフォルトの名無しさん [2019/05/02(木) 08:14:38.07 ID:y6AdJjmd.net]
お題:ジョブショップスケジューリングの問題です。
int job_param[JOBNUM][STP][2] = {
{{4, 100}, {1, 100}, {2, 100}, {3, 100}, {0, 100}}, // 500
{{2, 100}, {4, 100}, {3, 100}, {1, 100}, {0, 100}}, // 500
{{3, 100}, {0, 100}, {2, 100}, {1, 100}, {4, 100}}, // 500
{{3, 100}, {2, 100}, {4, 100}, {0, 100}, {1, 100}}, // 500
{{4, 100}, {1, 100}, {0, 100}, {3, 100}, {2, 100}}, // 500
{{2, 100}, {3, 100}, {4, 100}, {0, 100}, {1, 100}}, // 500
{{0, 100}, {1, 100}, {2, 100}, {3, 100}, {4, 100}}, // 500
{{0, 100}, {4, 100}, {1, 100}, {3, 100}, {2, 100}}, // 500
{{2, 100}, {4, 100}, {3, 100}, {1, 100}, {0, 100}}, // 500
{{1, 100}, {2, 100}, {4, 100}, {3, 100}, {0, 100}}}; // 500



891 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 10:15:40.84 ID:uedhNxa1.net]
死ね

892 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 10:36:17.75 ID:aiQlF5oy.net]
>>871
時間全部同じなら1にしちゃってえーんちゃう?

893 名前:デフォルトの名無しさん mailto:sage [2019/05/02(木) 12:40:19.89 ID:6TxNQP9X.net]
死んで良し。こんな長たらしいのを貼るなんて迷惑。
どこかに貼ってリンクだけにしろ。

894 名前:デフォルトの名無しさん [2019/05/03(金) 00:09:09.98 ID:zqE/J/GT.net]
>>836
C https://ideone.com/UPx6IS
もうどうでもいいかもしれんが、各列で幅調整ができるようにした

895 名前:デフォルトの名無しさん [2019/05/07(火) 18:32:57.10 ID:dWjIX09N.net]
COST_TIME: 2903
0 : ( 4, 799, 1141), ( 1, 1141, 1385), ( 2, 1385, 1736), ( 3, 2023, 2316), ( 0, 2477, 2819)
1 : ( 2, 0, 306), ( 4, 457, 799), ( 3, 1114, 1500), ( 1, 1500, 1886), ( 0, 1980, 2393)
2 : ( 3, 368, 536), ( 0, 913, 1179), ( 2, 1203, 1385), ( 1, 1385, 1491), ( 4, 2122, 2490)
3 : ( 3, 0, 368), ( 2, 1052, 1203), ( 4, 1838, 2122), ( 0, 2393, 2477), ( 1, 2639, 2803)
4 : ( 4, 0, 240), ( 1, 240, 431), ( 0, 562, 913), ( 3, 1615, 2023), ( 2, 2593, 2868)
5 : ( 2, 306, 648), ( 3, 763, 1114), ( 4, 1141, 1332), ( 0, 1332, 1665), ( 1, 1886, 2312)
6 : ( 0, 75, 168), ( 1, 568, 803), ( 2, 1736, 2158), ( 3, 2508, 2752), ( 4, 2752, 2903)
7 : ( 0, 0, 75), ( 4, 240, 457), ( 1, 457, 568), ( 3, 568, 763), ( 2, 2158, 2593)
8 : ( 2, 879, 1052), ( 4, 1403, 1838), ( 3, 2316, 2502), ( 1, 2502, 2639), ( 0, 2819, 2872)
9 : ( 1, 0, 93), ( 2, 648, 879), ( 4, 1332, 1403), ( 3, 1500, 1615), ( 0, 1665, 1980)

MACHINE Schedule
0 : ( 7, 0, 75), ( 6, 75, 168), ( 4, 562, 913), ( 2, 913, 1179), ( 5, 1332, 1665), ( 9, 1665, 1980), ( 1, 1980, 2393), ( 3, 2393, 2477), ( 0, 2477, 2819), ( 8, 2819, 2872)
1 : ( 9, 0, 93), ( 4, 240, 431), ( 7, 457, 568), ( 6, 568, 803), ( 0, 1141, 1385), ( 2, 1385, 1491), ( 1, 1500, 1886), ( 5, 1886, 2312), ( 8, 2502, 2639), ( 3, 2639, 2803)
2 : ( 1, 0, 306), ( 5, 306, 648), ( 9, 648, 879), ( 8, 879, 1052), ( 3, 1052, 1203), ( 2, 1203, 1385), ( 0, 1385, 1736), ( 6, 1736, 2158), ( 7, 2158, 2593), ( 4, 2593, 2868)
3 : ( 3, 0, 368), ( 2, 368, 536), ( 7, 568, 763), ( 5, 763, 1114), ( 1, 1114, 1500), ( 9, 1500, 1615), ( 4, 1615, 2023), ( 0, 2023, 2316), ( 8, 2316, 2502), ( 6, 2508, 2752)
4 : ( 4, 0, 240), ( 7, 240, 457), ( 1, 457, 799), ( 0, 799, 1141), ( 5, 1141, 1332), ( 9, 1332, 1403), ( 8, 1403, 1838), ( 3, 1838, 2122), ( 2, 2122, 2490), ( 6, 2752, 2903)

896 名前:デフォルトの名無しさん mailto:sage [2019/05/07(火) 19:09:14.64 ID:T//WWibe.net]
死ねやマジで

897 名前:デフォルトの名無しさん [2019/05/09(木) 08:23:28.37 ID:iHKmUIWi.net]
COST_TIME: 2868
0 : ( 4, 970, 1312), ( 1, 1312, 1556), ( 2, 1807, 2158), ( 3, 2177, 2470), ( 0, 2470, 2812)
1 : ( 2, 0, 306), ( 4, 557, 899), ( 3, 1197, 1583), ( 1, 1583, 1969), ( 0, 1969, 2382)
2 : ( 3, 0, 168), ( 0, 394, 660), ( 2, 1474, 1656), ( 1, 1969, 2075), ( 4, 2222, 2590)
3 : ( 3, 168, 536), ( 2, 1656, 1807), ( 4, 1938, 2222), ( 0, 2382, 2466), ( 1, 2696, 2860)
4 : ( 4, 292, 532), ( 1, 532, 723), ( 0, 723, 1074), ( 3, 1583, 1991), ( 2, 2158, 2433)
5 : ( 2, 306, 648), ( 3, 731, 1082), ( 4, 1312, 1503), ( 0, 1512, 1845), ( 1, 2133, 2559)
6 : ( 0, 75, 168), ( 1, 723, 958), ( 2, 1052, 1474), ( 3, 2470, 2714), ( 4, 2714, 2865)
7 : ( 0, 0, 75), ( 4, 75, 292), ( 1, 292, 403), ( 3, 536, 731), ( 2, 2433, 2868)
8 : ( 2, 879, 1052), ( 4, 1503, 1938), ( 3, 1991, 2177), ( 1, 2559, 2696), ( 0, 2812, 2865)
9 : ( 1, 0, 93), ( 2, 648, 879), ( 4, 899, 970), ( 3, 1082, 1197), ( 0, 1197, 1512)

MACHINE Schedule
0 : ( 7, 0, 75), ( 6, 75, 168), ( 2, 394, 660), ( 4, 723, 1074), ( 9, 1197, 1512), ( 5, 1512, 1845), ( 1, 1969, 2382), ( 3, 2382, 2466), ( 0, 2470, 2812), ( 8, 2812, 2865)
1 : ( 9, 0, 93), ( 7, 292, 403), ( 4, 532, 723), ( 6, 723, 958), ( 0, 1312, 1556), ( 1, 1583, 1969), ( 2, 1969, 2075), ( 5, 2133, 2559), ( 8, 2559, 2696), ( 3, 2696, 2860)
2 : ( 1, 0, 306), ( 5, 306, 648), ( 9, 648, 879), ( 8, 879, 1052), ( 6, 1052, 1474), ( 2, 1474, 1656), ( 3, 1656, 1807), ( 0, 1807, 2158), ( 4, 2158, 2433), ( 7, 2433, 2868)
3 : ( 2, 0, 168), ( 3, 168, 536), ( 7, 536, 731), ( 5, 731, 1082), ( 9, 1082, 1197), ( 1, 1197, 1583), ( 4, 1583, 1991), ( 8, 1991, 2177), ( 0, 2177, 2470), ( 6, 2470, 2714)
4 : ( 7, 75, 292), ( 4, 292, 532), ( 1, 557, 899), ( 9, 899, 970), ( 0, 970, 1312), ( 5, 1312, 1503), ( 8, 1503, 1938), ( 3, 1938, 2222), ( 2, 2222, 2590), ( 6, 2714, 2865)

898 名前:デフォルトの名無しさん [2019/05/09(木) 09:37:18.89 ID:pu1Iu6no.net]
ここはプログラミングのお題スレであって結果と思われる出力を書き込むスレではない。

899 名前:デフォルトの名無しさん [2019/05/09(木) 19:00:51.34 ID:n0QdGvKz.net]
コラッツ数列を作る関数chainを書け

コラッツ数列の定義

任意の自然数から開始する
数が 1ならば 、終了
数が偶数なら 、 2で割る
数が奇数なら 、 3倍して 1を足す
新しい値でこのアルゴリズムを繰り返す

使用例

>chain 10
[ 1 0 , 5 , 1 6 , 8 , 4 , 2 , 1 ]

>chain 1
[ 1 ]

>chain 30
[ 3 0 , 1 5 , 4 6 , 2 3 , 7 0 , 3 5 , 1 0 6 , 5 3 , 1 6 0 , 8 0 , 4 0 , 2 0 , 1 0 , 5 , 1 6 , 8 , 4 , 2 , 1 ]

900 名前:デフォルトの名無しさん [2019/05/09(木) 21:28:06.85 ID:V3giiBFx.net]
>>880 C
https://ideone.com/vpQG5P



901 名前:さまよえる蟻人間 mailto:sage [2019/05/09(木) 22:20:55.24 ID:sZO2t0w0.net]
お題: 改行とスペースを含むASCII文字列が与えられる。
改行とスペース以外の各印字可能文字の位置を以下のように順番に出力せよ。

(入力)
a b c

d
(出力)
[a, 0, 0]
[b, 2, 0]
[c, 5, 0]
[d, 0, 2]

902 名前:デフォルトの名無しさん [2019/05/10(金) 08:21:41.55 ID:Z1uC1A15.net]
>>880
python

def chain(n):
lst = []
if n < 1: raise ValueError("Please n > 0 number")
while n != 1:
lst.append(n)
if n % 2 == 0: n //= 2
else: n = n * 3 + 1
lst.append(1)
return lst

for i in [10,1,30,0]: print(chain(i))

903 名前:デフォルトの名無しさん [2019/05/10(金) 08:24:53.49 ID:Z1uC1A15.net]
>>880
Haskell

main = mapM_ (print.chain) [10,1,30,0]

chain 1 = [1]
chain n | n < 1 = error "Please n > 0 number"
chain n | even n = n:chain (n `div` 2)
chain n = n:chain (n * 3 + 1)

904 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 11:11:44.01 ID:VtNtFyvg.net]
>>880

C
https://ideone.com/mBt0yE

1未満の値の判定はchain関数に実装すべきなのかどうなのか……

905 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 11:56:36.34 ID:sggjdX/2.net]
>>882
[c, 5, 0]?
[c, 4, 0]じゃなくて?

906 名前:さすらいの蟻人間 mailto:sage [2019/05/10(金) 12:18:04.49 ID:8LSsTFj9.net]
>>882 >>886
4の間違いでした。訂正。

907 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 12:30:05.58 ID:k7gY5pMP.net]
>>882
出力は、行列番号が0から始まるとして
文字,列番号、行番号 だと思うから c の列番号は間違ってるんじゃないの?
(入力)
a b c

d
(出力)
[a, 0, 0]
[b, 2, 0]
[c, 4, 0] << 5じゃなくて4だろ。
[d, 0, 2]

908 名前:デフォルトの名無しさん [2019/05/10(金) 12:47:01.79 ID:6xQjM2XG.net]
>>881,885
この問題、入門書から抜粋したけど次に1ー100の間に長さ15以上は何個あるかとか出てるから、
Cだとリストから作らないといけないのは分かるが、リスト返す様にした方が仕様変更に強いと思う。

909 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 12:53:54.51 ID:KAkBQh2y.net]
宿題誘導か
最近のアホは小賢しいな

910 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 13:27:19.10 ID:k7gY5pMP.net]
>>882 python

st = '''a b c

d
'''
line = 0 ; col = 0
for c in st :
__if c == '\n' :
____line += 1
____col = 0
____continue
__if c != ' ' :
____print ('['+c, col,str(line)+']', sep=',')
__col += 1



911 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 13:40:11.78 ID:k7gY5pMP.net]
>>891 出力フォーマットが
['a', 0, 0]
['b', 2, 0]
['c', 4, 0]
['d', 0, 2]
でもよければ print文は簡単になる
print ([c, col,line])

912 名前:さすらいの蟻人間 mailto:sage [2019/05/10(金) 14:51:58.21 ID:CF7UUf9v.net]
お題: >>882 の入出力を逆転。

913 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 15:12:02.76 ID:bODSyEKx.net]
>>893 手抜きすんな面白くない

914 名前:デフォルトの名無しさん [2019/05/10(金) 15:43:29.85 ID:aTy0NCJ4.net]
>>880
与えられた数の3倍以上の個数を持つ系列を
を3個示せ。

915 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 17:50:33.37 ID:58PV3kUA.net]
>>880,889 Squeak Smalltalk

| chain |

chain := [:n |
Array streamContents: [:ss |
ss nextPut: n.
[n > 1] whileTrue: [ss nextPut: (n := n even ifTrue: [n / 2] ifFalse: [n * 3 + 1])]
]
].

chain value: 10. "=> #(10 5 16 8 4 2 1) "

(1 to: 100) count: [:n | (chain value: n) size >= 15] "=> 71 "

916 名前:デフォルトの名無しさん [2019/05/10(金) 20:05:13.80 ID:0Zlxa6bH.net]
>>880
Perl のワンライナー。

perl -ne '$n=$_;chomp($n);@d=($n);while($n!=1){$n=$n&1?($n*3+1):($n/2);push(@d,$n)}print "[".join(", ", @d)."]\n"'

実行する場合はbash等のシェルから行う(シングルクォートの中がそのままperlに引き渡されさえすれば他のシェルでも良い)。

標準入力から1行1データで入力して結果を出力するようにした。

917 名前:デフォルトの名無しさん [2019/05/10(金) 20:29:31.76 ID:/+/am3CQ.net]
>>895
27のとき112個
31のとき107個
10億くらいまで回したけど、これら以外なくね?

数列の初期値と長さは、初期値が小さいうちは同じくらいだが、初期値を大きくしても数列の長さはさほど伸びない。
ttps://imgur.com/wm0kCEQ
グラフはxが大きくなるほど飛ばす間隔も大きくしてあるからあまり正確ではない。

918 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 21:48:47.85 ID:LM2YqzO0.net]
お題
https://www.youtube.com/watch?v=2JNgkMMaNlw

このようなルートの数を数え上げるプログラムを作る
N=5位まででよい

919 名前:デフォルトの名無しさん mailto:sage [2019/05/10(金) 22:09:58.71 ID:KAkBQh2y.net]
ZDDやるなら出来合いのもの使って終わりじゃねえの?

https://github.com/junkawahara/frontier-basic
https://hs-nazuna.github.io/tdzdd-manual/intro.html

920 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 11:54:01.37 ID:Ze1v8w/9.net]
>>880 Perl5

sub chain {
 my $i = shift;
 $i == 1 ? $i : ($i, ($i & 1 ? chain(3*$i + 1) : chain($i / 2)))
}

for (qw{10 1 30}) {
 @a = chain $_;
 print "[@a]\n";
}


実行
~ $ perl 13_875_collatz.pl
[10 5 16 8 4 2 1]
[1]
[30 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1]



921 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 12:16:05.54 ID:Ze1v8w/9.net]
>>882 Perl5

@in = map{[split'']} map{split '\n'} <<EOF;
a b c

d
EOF
for $j (0..$#in) {
 for $i (0..$#{$in[$j]}) {
  $c = $in[$j][$i];
  print "[$c,$i,$j]\n" if $c =~ /\w/;
 }
}


実行
~ $ perl 13_877.pl
[a,0,0]
[b,2,0]
[c,4,0]
[d,0,2]

922 名前:デフォルトの名無しさん [2019/05/11(土) 13:06:48.39 ID:bKjSBhWB.net]
>>880
Ruby で

module Collatz
def self.next_number( num )
if num.even? # 偶数
num / 2
else # 奇数
num * 3 + 1
end
end

def self.chain( num )
@@results = [ ]
tmp = num

while true
@@results.push tmp
break if tmp == 1

tmp = next_number( tmp )
end
@@results
end
end

[ 1, 27 ].each do | num |
p Collatz.chain( num )
end

923 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 18:55:11.91 ID:fAbbaveG.net]
>>880 c
https://ideone.com/jwtvbF

>>880 ruby
https://ideone.com/MIKeM7

>>880 ocaml
https://ideone.com/CEassZ

924 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 20:54:08.94 ID:wddfxsLz.net]
ideone.comはMATLABに対応してないのね。
書いてみた後で気がついた。

925 名前:デフォルトの名無しさん mailto:sage [2019/05/11(土) 23:44:29.57 ID:fAbbaveG.net]
>>880 octave
https://ideone.com/eNqIim

926 名前:デフォルトの名無しさん [2019/05/12(日) 02:01:10.46 ID:FbICTnq7.net]
>>880
Java
https://paiza.io/projects/VSqA-UZgWeXB-YzVTnrQRg

takeUntilが欲しいなー

927 名前:デフォルトの名無しさん [2019/05/12(日) 06:46:28.87 ID:R9TUiFuu.net]
>>880
コラッツ樹で作れば出力を減らせる。

928 名前:デフォルトの名無しさん [2019/05/14(火) 02:59:08.35 ID:3xJ0OqNt.net]
>>882
Kotlin
https://paiza.io/projects/Aab0mA1WSwXHnHL2049hCA

for や while ループ使わずに forEachIndexed で入れ子にしてみました。

929 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 09:26:15.81 ID:zeev4Evh.net]
>>882
Ruby で

text = <<"EOT"
a b c

d
EOT

re = /[^ ]+/ # 空白以外

text.each_line.with_index do | line, idx | # 1行ずつ処理する
line.strip! # trim
# $~.begin は、マッチした先頭文字の位置
line.scan( re ) { puts "[" + [ $~.to_s, $~.begin(0), idx ].join( ", " ) + "]" }
end

930 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 10:07:03.30 ID:rKVVoOG1.net]
>>891 をスッキリ修正してみた
改行コード指定をやめ、for loop のカウンタを利用

>>882 の解

st = '''a b c

d
'''
for line,l in enumerate(st.splitlines()) :
 for col,c in enumerate(l):
  if c != ' ' : print('['+c, col,str(line)+']',sep=',')



931 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 14:12:15.49 ID:8QdSJZ63.net]
>>910
空白以外は\Sでマッチするぞ

932 名前:デフォルトの名無しさん mailto:sage [2019/05/14(火) 23:52:44.04 ID:AtHJrRxM.net]
>>882 Squeak Smalltalk

| fn |

fn := [:str |
((str lines collectWithIndex: [:line :lIdx |
(line reject: #isSeparator) asArray
collect: [:chr | {chr. (line indexOf: chr) - 1. lIdx - 1}]]
) concatenation select: #notEmpty) asStringWithCr
].

fn value: 'a b c

d'

"=>
'#($a 0 0)
#($b 2 0)
#($c 4 0)
#($d 0 2)' "

933 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 01:06:44.65 ID:tCUIeJeC.net]
>>913 smalltalk って全く知らないけど、最後が出力のつもり?
だったらお題の出力フォーマットと似ても似つかないじゃん。

934 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 03:57:52.07 ID:i8y0s24p.net]
いや似てる

935 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 04:50:48.17 ID:TsVBVaTo.net]
>>882 Squeak/Pharo Smalltalk
出力はともかく同行に同文字があるとダメだった^^;ので>>913 差し替え

| fn |

fn := [:str |
((str lines collectWithIndex: [:line :lIdx |
(line asArray collectWithIndex: [:chr :cIdx | {chr. cIdx - 1. lIdx - 1}]
) reject: [:each | each first isSeparator]]
) concatenation
select: #notEmpty thenCollect: [:each | '[{1}, {2}, {3}]' format: each]) asStringWithCr
].

fn value: 'a b c

d'

"=>
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2] "

936 名前:905 [2019/05/15(水) 09:57:59.71 ID:AfKgri37.net]
>>912
re = /[^ ]+/
空白以外だから、上のようにしたけど、空白"類"以外なら、\S+ でよい

問題の意図がどちらなのか、よく分からない

937 名前:デフォルトの名無しさん mailto:sage [2019/05/15(水) 23:43:58.92 ID:jmndeABE.net]
>>882 c
https://ideone.com/tIcQPK

>>882 ruby
https://ideone.com/qMREyy

>>882 ocaml
https://ideone.com/uaNmRF

>>882 octave
https://ideone.com/psnXl5

938 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 01:50:16.53 ID:4fy8zsNP.net]
>>918
C以外は助長だな

939 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 03:57:55.40 ID:6BLr95cC.net]
>>919
具体的にはどの処理のどの部分を冗長に感じられたのでしょうか?
たとえばRubyの回答がどう冗長か(あるいはどう書けば良いか)教えてください!

940 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 08:25:20.49 ID:MujhV/Cm.net]
>>918 故意にpython 外しはずるい。
>>882 python
https://ideone.com/yvFuOl

printフォーマットは、コメントにしたpython3.6のf文字列の方がシンプルだが、ideone は3.5しかないのでformat文にした。



941 名前:デフォルトの名無しさん [2019/05/16(木) 10:18:52.91 ID:YVMjr/q8.net]
>>882
Go
https://ideone.com/mJOisR

コンパクトにならんね

942 名前:デフォルトの名無しさん [2019/05/16(木) 14:34:08.16 ID:YVMjr/q8.net]
>>893
Go
https://ideone.com/x2iyka

943 名前:デフォルトの名無しさん [2019/05/16(木) 19:26:40.27 ID:ktv4pd0R.net]
>>882
C++
https://ideone.com/cbDkCt

944 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 20:28:13.91 ID:3sIrlJF4.net]
お題
整数の数列が与えられるので、各値の大小関係を変えないように値をなるべく小さくせよ
ただし1番小さい要素は1にすること
入力
-6 3 9 5 3 -7
出力
2 3 5 4 3 1

945 名前:デフォルトの名無しさん [2019/05/16(木) 21:00:21.83 ID:/dAesd8e.net]
>>925
c++
https://ideone.com/zEwKOk

946 名前: mailto:sage [2019/05/16(木) 21:47:12.78 ID:m1RdOLwU.net]
>>925
>値をなるべく小さくせよ
絶対値を小さく、という意味ですか?

947 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 22:59:47.34 ID:0eZXbfha.net]
>>925 Pharo/Squeak Smalltalk

| fn |

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

fn value: #(-6 3 9 5 3 -7). "=> #(2 3 5 4 3 1) "

948 名前:913 mailto:sage [2019/05/16(木) 23:00:52.84 ID:02wuysYU.net]
>>882 ocaml
https://ideone.com/waZZh7
・自分に正直になってrefとforループで書いた

>>919
じょ、助長…

>>921
外しと言うより、たんに不勉強
python書けないんよね(´・ω・`)

949 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 23:34:17.56 ID:YXKZQo24.net]
>>928 Perl5

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

実行
~ $ perl 13_920.pl
-6 3 9 5 3 -7 => 2 3 5 4 3 1

950 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 23:42:11.94 ID:YXKZQo24.net]
>>930
アンカーしくった、>>925 宛だった…orz



951 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 23:44:54.09 ID:02wuysYU.net]
>>925 octave
https://ideone.com/f9S91N

952 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 00:26:31.35 ID:SI3/qEwo.net]
>>893 Pharo/Squeak Smalltalk

| fn |

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

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

"=>
a b c


d "

953 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 00:35:47.85 ID:HrEfbPs9.net]
>>932
重複除去でソート後のインデックスを返す関数?
チート過ぎてわろたw

954 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 00:55:59.72 ID:TuAgku6e.net]
最近jニキ来ないな

955 名前:デフォルトの名無しさん [2019/05/17(金) 01:23:24.98 ID:UHIjSpei.net]
>>925
Kotlin
https://paiza.io/projects/NMOKqrUnEfwIbLSRmrMMmQ

956 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 07:54:47.22 ID:9a+COZnd.net]
>>893
s = '''\
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2]
'''

from parse import * #pip install

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

'''#出力
a b c

d
'''

957 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 08:32:11.25 ID:9a+COZnd.net]
>>937 parse に型指定追加
>>893 Python
s = '''\
[a, 0, 0]
[b, 2, 0]
[c, 4, 0]
[d, 0, 2]
'''

from parse import * #pip install

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

'''#出力
a b c

d
'''

958 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:14:50.20 ID:8VLhbVxR.net]
>>925
は、ランク付けの問題だろ

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

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

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

つまり、ランクが欠けることはない!

959 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:23:14.18 ID:99nnd/tf.net]
>>939
うるせぇ死ね

960 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:39:09.53 ID:L8EHraRu.net]
難しく書いてたけど結局これだけなのか
問題文をわざと複雑に見せかける現代文読解と同じ仕組みじゃないか



961 名前:デフォルトの名無しさん [2019/05/17(金) 12:49:18.63 ID:ut9H1r3U.net]
プログラム作る前に気づいたので>>936のリンク先のブログラムのタイトルは密かに「順位」にしといたw

962 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:50:56.11 ID:l82uGMBO.net]
>>941
わざと難しく見せかけているというよ

963 名前:閨Aたんに説明が下手なだけだと思う []
[ここ壊れてます]

964 名前:デフォルトの名無しさん mailto:age [2019/05/17(金) 13:23:46.56 ID:gFFtTihX.net]
別に難しくない件

965 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 13:29:01.98 ID:L8EHraRu.net]
そうですね
難易度は主観ですね
なら短さ長さを比べるとこうなります

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

もしかしたらこれが要するにただのランク付けだと分かるまで何人が挑戦するかを試してみる社会調査だったのかもしれません

966 名前:デフォルトの名無しさん [2019/05/17(金) 13:36:08.80 ID:/5AjAxyT.net]
>ランク付けだと分かるまで何人が挑戦するかを試してみる

まさにそうじゃないの?

967 名前:デフォルトの名無しさん [2019/05/17(金) 13:44:50.72 ID:mxL0YWmq.net]
>>925 J
f =: >: @ (i.~ /:~ @ ~.)

f _6 3 9 5 3 _7
2 3 5 4 3 1

968 名前:デフォルトの名無しさん mailto:age [2019/05/17(金) 14:08:19.69 ID:gFFtTihX.net]
>>945
アスペ

969 名前:デフォルトの名無しさん mailto:age [2019/05/17(金) 14:08:53.72 ID:gFFtTihX.net]
問題文を添削しちゃう皆さん

970 名前:デフォルトの名無しさん mailto:age [2019/05/17(金) 14:20:43.10 ID:gFFtTihX.net]
>>927



971 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 15:06:17.59 ID:Jb6joIEA.net]
さすがにいちゃもん付け過ぎだろ
元の問題文読めば普通はわかるだろ

972 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 15:51:11.97 ID:99nnd/tf.net]
問題: おっぱいをなるべく小さくせよ。

973 名前:デフォルトの名無しさん [2019/05/17(金) 16:00:34.70 ID:ut9H1r3U.net]
>>952
(・)(・)

(・)(・)

974 名前:デフォルトの名無しさん [2019/05/17(金) 16:18:22.99 ID:X2USxdO3.net]
お題:自然数を隙間なく自分自身以外の数に対応させよ。

975 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 16:46:21.83 ID:9GdSR9hc.net]
>>954 先生、対応させると言う日本語がわかりません。
日本人には難しいです。

976 名前:デフォルトの名無しさん [2019/05/17(金) 17:04:52.99 ID:ut9H1r3U.net]
>>954
君が何を言っているのかわからない。

977 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 17:24:51.97 ID:L8EHraRu.net]
>>954
パッ見で分からん

978 名前:デフォルトの名無しさん [2019/05/17(金) 18:07:07.73 ID:nEasvejW.net]
偶数なら1引く
奇数なら1足すとかでいいんじゃないの

979 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 18:39:31.46 ID:9GdSR9hc.net]
>>958 良いんじゃないのじゃなくて、他の人が理解できる言葉に翻訳してよ。
これじゃ小学校の国語で平均点以下だろ。

日本語が不自由ならプログラム例を示せば良い。変な言語はダメだけど、C系の素直な言語なら万国共通

980 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 19:30:38.86 ID:Jb6joIEA.net]
要はf: N -> N の∀n∈N f(n) ≠ n かつ全単射な写像を求めろってことでしょ



981 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 19:35:23.29 ID:Jb6joIEA.net]
あ、単射じゃなくてもいいか

982 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 19:40:06.71 ID:9GdSR9hc.net]
>>960 あのさ、それで人に通じると思ってるの?
そんな仕様書を書いて誰がコーディングするんだよ。

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

言語能力にかけてるやつは、自分の頭の中が周りの人からスケスケに見えてると言う妄想を持ってる。
狭い世界で通用しても社会では通用しない。

983 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 19:47:34.60 ID:9GdSR9hc.net]
ここまで何人もの人がわからんと言ってるのは、その仕様を出した人間の素質が失格という事だろ。

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

バカにわからせなければ、PLは務まらないよ。
と言うか、仕事は一般人としてるのに何をトチ狂ってるんだ? かなり精神を疑うな。

984 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 19:50:16.70 ID:Jb6joIEA.net]
教養のないやつに限ってブチ切れる

985 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 20:11:05.80 ID:KIX3RA0i.net]
>>952
桃白白改めミスターポポ改めピラフ改めピッコロさん、くだらない出題はやめてください

986 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 20:11:56.63 ID:9a+COZnd.net]
>>964 で、どんな問題なんだ? プログラミングできる仕様として出してくれよ。

987 名前: mailto:sage [2019/05/17(金) 20:21:17.94 ID:e+Q6zZPk.net]
>>961
単射でないとなると、n に対して n % 10 を対応付けるとかもありになりますね…

>>962
全射、単射、全単射とかは普通に使う単語ですよ、知らないのなら、これらの術語を含む数学の本…代数ですかね?解析ですかね?よくわからないや、を一冊読んでみるのがいいですね

988 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 20:46:06.10 ID:Jb6joIEA.net]
>>966
出題者に言えよ

>>967
%じゃ全射にも単射にもならんぞ
上で誰かが言ってた遇奇を入れ替えたりだとか
f(n) = n - 1, f(0) = 0以外の任意の値
とかなんでもありだね。つまらんけど

989 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 20:48:13.95 ID:99nnd/tf.net]
顔射は普通に使う単語ですか?

990 名前: mailto:sage [2019/05/17(金) 20:51:49.11 ID:e+Q6zZPk.net]
>>968
>%じゃ全射にも単射にもならんぞ
そうですね、じゃ、割り算の商の整数部分「/」とかはどうでしょう



991 名前:デフォルトの名無しさん [2019/05/17(金) 21:06:32.38 ID:ut9H1r3U.net]
>>969
はい。

992 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 21:09:38.99 ID:Jb6joIEA.net]
>>970
そりゃなんでもありよ
その場合は0の時だけ別の値を定義すれば良し

993 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 21:30:53.57 ID:0M7uQZeH.net]
920だが、ランク付けだと解が236531と解釈される可能性が有ったので避けた
もっと簡単な書き方があるはそう思う、座圧+1とかでも伝わるだろうし……

994 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 22:36:31.21 ID:gcMK/Ofn.net]
数値のリストを入力し、値の小さい順に1から順位を付けて、
順位のリストを出力する。同じ値は同じ順位とする

995 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 22:47:54.41 ID:TGYryIO4.net]
ほんとそれ
ピラフ改めピッコロはさっさと自害しろ

996 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 23:20:58.53 ID:L8EHraRu.net]
>>954
やっぱりどういう入出力の具体例になるのか分からない
どういうことなんだよ

997 名前:デフォルトの名無しさん [2019/05/17(金) 23:47:24.37 ID:xYITnAAv.net]
>>976
あくまで俺の推測だが
一例として、自分自身の数が3のとき自然数から3を除去して
(1) 1, 2, 3, 4, 5, 6, ...

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

ただお題の条件としてはもっとゆるくて、入力はオーバーフローしない範囲の自然数、出力は「自分自身の数」を含まない自然数になれば何でもよくて、
定数関数でもハッシュ関数でもいいはず。
ただし、ある入力に対して必ず決まった値にならなければならず、同じ入力で呼び出すたびに出力が違うのはダメ。

998 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 00:15:42.42 ID:w6U4ewGf.net]
>>977 何をアホな事を言ってるんだ? そんなの小学生に数を数えなさいと言ってるのと等しいぞ。

それのどこがプログラミングのお題なんだ?
バカじゃないのか?

999 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 01:03:14.81 ID:bbC9YGRR.net]
>>947
乙、見事。

1000 名前:デフォルトの名無しさん [2019/05/18(土) 01:57:48.06 ID:jjK+y75q.net]
>>925
C#
https://paiza.io/projects/OXVNCyMqgCySX7dUhwYh5Q



1001 名前:デフォルトの名無しさん [2019/05/18(土) 02:15:29.87 ID:jjK+y75q.net]
>>925
Java
https://paiza.io/projects/VRVZT8GnP7oLaOjx4B8LtQ?language=java

1002 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 07:46:37.95 ID:w6U4ewGf.net]
>>925 Python

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

# [2, 3, 5, 4, 3, 1]

1003 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 10:52:55.70 ID:0WkfcTHM.net]
>>976
1. すべての自然数nに対してf(n)≠n
2. 自然数m,nがm≠nを満たすときf(m)≠f(n)
を満たすような関数f(n)を作れってこと

例えば
1. 入力が1のとき出力は1以外
2. 入力が1のときと2のときで出力が同じになってはダメ

1004 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 11:06:29.35 ID:spo9+l+a.net]
>>983
2はいらんやろ
適当なコト抜かすなごかすぞぼけ

1005 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 11:10:21.66 ID:vBrA8iCH.net]
単射である必要はない。全射でさえあればよい

1006 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 12:08:52.78 ID:R97vL30T.net]
難しすぎて全くわからん…
ハローワールド始めて間もない男にも分かる問題を出してくれぬか
優しく教えて欲しい

1007 名前:デフォルトの名無しさん [2019/05/18(土) 12:10:33.89 ID:HBaY+7WM.net]
>>954
これがあれば1Mbyteのファイルが2byteになっちゃうのか?

1008 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 12:48:31.15 ID:PrlqGkYa.net]
>>983 これのどこがプログラムの問題なのかさっぱりわからん。 小学生の練習問題か?

例えば自然数が 1から4までとした場合、f(n) の出力配列は
f(1) 2,3,4
f(2) 1,3,4
f(3) 1,2,4
f(4) 1,2,3
と言う事だろ? どうしてこんな問題を出したかさっぱり分からん、何か勘違いしてる?

1009 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 14:29:45.05 ID:5ij/PJHb.net]
>>925 c
https://ideone.com/JBbm04

1010 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 14:46:59.19 ID:0WkfcTHM.net]
>>984
「隙間なく」を満たすには全射である必要があるけど、今回は定義域と終域が等しいから単射なら自動的に全射になる
全射の条件より単射の条件のほうが説明が楽だから許してくれ

>>988
出題者じゃないから意図は分からんが、自然数を自身以外の自然数に変換するのが題意だからその例は間違っている
f(n)が返すのは自然数であってベクトル(配列)ではない



1011 名前: mailto:sage [2019/05/18(土) 14:50:54.64 ID:To+6m73X.net]
>>985
>単射である必要はない。全射でさえあればよい

???

>>983
2. 自然数m,nがm≠nを満たすときf(m)≠f(n)

これって単射の定義そのものなのでは?
だから単射である必要があるのでは?

f が単射でない場合 f:a->z, f:b->z だった場合に a != b にもかかわらず f(a)=f(b) で 2 を満たさない

1012 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 14:57:54.95 ID:jXb4UL4k.net]
def f(n)
n + 1
end
一応>>983は満たしてる

1013 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 15:16:22.17 ID:0WkfcTHM.net]
>>990
追記
単射なら全射になるのは有限集合の場合だったわ

お詫びにお題
入力n(2≤n≤2^31-1)を素因数分解してそれを表示せよ
入力例)
28
2002
216653
出力例)
2^2*7
2*7*11*13
216653

1014 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 15:45:24.30 ID:kdcwh9zo.net]
>>893 Perl5

@a=([a, 0, 0],
   [b, 2, 0],
   [c, 4, 0],
   [d, 0, 2]);
sub {$t[$_[2]][$_[1]] = $_[0]}->(@$_) for @a;
@b = map{[map{$_ // ' '} @$_]} map{[@$_]} @t;
undef $";
$s = join'', map{"@$_\n"} @b;
print $s;


実行
~ $ perl 13_888.pl
a b c

d

1015 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 15:57:05.04 ID:0itJzGag.net]
ハローワールドなら任せて欲しい

1016 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 16:05:30.57 ID:5ij/PJHb.net]
>>993 octave
https://ideone.com/V5luwe

1017 名前:デフォルトの名無しさん [2019/05/18(土) 16:32:58.07 ID:BaKYgAyw.net]
>>995
任せた。

1018 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 17:19:27.10 ID:4C+see96.net]
>>995
はよ次スレをハローワールドしろや

1019 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 17:34:28.08 ID:BWmpW4IF.net]
>>995 C89
https://ideone.com/IJb1ar

1020 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 17:35:58.58 ID:BWmpW4IF.net]
>>998 次スレ
https://mevius.5ch.net/test/read.cgi/tech/1558168409/



1021 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 17:56:26.22 ID:4C+see96.net]
>>1000
乙。

1022 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 21:05:17.15 ID:sChpoVCN.net]
>>993 Pharo/Squeak Smalltalk

| fn |

fn := [:n |
| m bag |
m := n.
bag := Bag new.
Integer primesUpTo: n sqrt + 1 do: [:prime |
[m isDivisibleBy: prime] whileTrue: [m := m / (bag add: prime)]
].
m > 1 ifTrue: [bag add: m].
String streamContents: [:ss |
bag valuesAndCounts associations sort do: [:assoc |
ss nextPutAll: assoc key asString.
assoc value > 1 ifTrue: [ss nextPutAll: '^', assoc value asString]
] separatedBy: [ss nextPut: $*]
]
].

fn value: 28. "=> '2^2*7' "
fn value: 2002. "=> '2*7*11*13' "
fn value: 216653. "=> '216653' "

1023 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 21:18:36.25 ID:PrlqGkYa.net]
>>992 何か落とし穴があるとしたら、巨大数かなと思い、自然数を増やしてみると、python( iOSのpythonista , ideon )では配列数は 10**7 までだった。

大きな連続数の配列なんて作るバカはいないだろうし、ますます問題の意図がわからん。

一応書いてみたが、lambda 1行のみ ,(def でも何でも良いが)
f978 = lambda x,n:[i for i in range(1,n+1) if i != x]
xが自分の数字、n は自然数の数

https://ideone.com/iMUZ96

呼び出しは、f978(3,10**6) の様に
出力の配列数が大きくなると全ての数のPrint はアホらしいので、
10以上は配列数だけを出してる( これも n-1 だからアホらしいのだが )

out(1,4)
out(2,4)
out(4,4)

out(10**2,10**7)

stdout
個数 n= 4 自数 x= 1 自数以外の数= 3
[2, 3, 4]
個数 n= 4 自数 x= 2 自数以外の数= 3
[1, 3, 4]
個数 n= 4 自数 x= 4 自数以外の数= 3
[1, 2, 3]
個数 n= 10000000 自数 x= 100 自数以外の数= 9999999

1024 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 21:29:48.34 ID:PrlqGkYa.net]
問題をひねって、不連続のランダムの整数としてもほとんど変わらないだろ。

1025 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 21:31:36.43 ID:gB6Wr8nG.net]
(´・_・`)

1026 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 104日 10時間 9分 43秒

1027 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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