- 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/
- 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, #] &
|

|