プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/
探検
プログラミングのお題スレ Part13
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/03(日) 11:21:53.20ID:72eosYJ+270デフォルトの名無しさん
2019/02/20(水) 09:49:14.61ID:hK+DOQws >>268>>269
死ね
死ね
271デフォルトの名無しさん
2019/02/20(水) 09:52:59.12ID:PF1BNO4k >>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 ではそれはできない。
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 ではそれはできない。
272268
2019/02/20(水) 10:31:11.68ID:B2QSVSiS WSH はわからないけど、Ruby では、
require 'nokogiri'
html = `curl http://www.example.com/`
# curl は書き込めないので、全角に変換した
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
require 'nokogiri'
html = `curl http://www.example.com/`
# curl は書き込めないので、全角に変換した
doc = Nokogiri::HTML( html )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
273デフォルトの名無しさん
2019/02/20(水) 11:50:14.05ID:hK+DOQws >>272
死ね
死ね
274デフォルトの名無しさん
2019/02/20(水) 13:03:16.05ID:agArr1lp >>269
なんかね。UNIX系OSで昔からよく使われてたコマンドを移植したようで、tarとか他にも色々あったと思った。
なんかね。UNIX系OSで昔からよく使われてたコマンドを移植したようで、tarとか他にも色々あったと思った。
275デフォルトの名無しさん
2019/02/20(水) 17:40:48.68ID:3A0CDvTh >>263 今度は反則なしで。python
import requests as r
url = 'http://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
import requests as r
url = 'http://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
276デフォルトの名無しさん
2019/02/20(水) 17:58:34.75ID:t1mcuuOB >>258
Pharo 7
'http://ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt' asUrl retrieveContents
Pharo 7
'http://ftp.iij.ad.jp/pub/linux/centos/7.6.1810/isos/x86_64/0_README.txt' asUrl retrieveContents
277デフォルトの名無しさん
2019/02/20(水) 18:10:48.97ID:3A0CDvTh >>276 ありがとう。 そんな言語も出てきてたんだ。 でも普及は難しいのかも。
278デフォルトの名無しさん
2019/02/20(水) 23:51:29.53ID:MUUM+ThN279デフォルトの名無しさん
2019/02/21(木) 18:54:22.61ID:1axkeZoV お題:リスト等を", "で結合して表示せよ。ただし最後は" and "で結合する。
https://ideone.com/pVuO7T
https://ideone.com/pVuO7T
280デフォルトの名無しさん
2019/02/21(木) 19:06:17.90ID:TUYpSwcQ >>279 JavaScript
const arr = ['apple', 'banana', 'orange', 'mango'];
const last = ' and ' + arr.pop();
console.log(arr.join`, ` + last);
//=> apple, banana, orange and mango
const arr = ['apple', 'banana', 'orange', 'mango'];
const last = ' and ' + arr.pop();
console.log(arr.join`, ` + last);
//=> apple, banana, orange and mango
281デフォルトの名無しさん
2019/02/21(木) 19:17:09.75ID:eUc7EqKm282デフォルトの名無しさん
2019/02/21(木) 19:27:21.23ID:2zdYL4u2 >>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
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
283デフォルトの名無しさん
2019/02/21(木) 19:31:58.30ID:lqQG1Hmj 題意は
list = ["red","green","black","white"]
print(", ".join(list[:-1]),"and",list[-1])
# red, green, black and white
だろ
list = ["red","green","black","white"]
print(", ".join(list[:-1]),"and",list[-1])
# red, green, black and white
だろ
284デフォルトの名無しさん
2019/02/21(木) 19:43:56.00ID:YnrfI9YG そこそこ優秀なのに肝心なところでいい加減だから試験に落ちるタイプだな
285デフォルトの名無しさん
2019/02/21(木) 19:51:21.05ID:2zdYL4u2 >>283
あ、そうか。
不恰好だけどこれで一応対応。
(putStrLn.concat.concat) [init $ map addCanma $ init lst,[last $ init lst],[" and "],[last lst]]
スマートな解答も考えてみるよ。
あ、そうか。
不恰好だけどこれで一応対応。
(putStrLn.concat.concat) [init $ map addCanma $ init lst,[last $ init lst],[" and "],[last lst]]
スマートな解答も考えてみるよ。
286デフォルトの名無しさん
2019/02/21(木) 20:16:12.26ID:eUc7EqKm >>283 ごめん、俺もカンマが抜けてた。
数字の場合の模範解答をよろしく。
数字の場合の模範解答をよろしく。
287デフォルトの名無しさん
2019/02/21(木) 20:20:50.88ID:2zdYL4u2 スマートかは兎も角、一応マシな形に。
空リストや要素数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
空リストや要素数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
288デフォルトの名無しさん
2019/02/21(木) 20:59:38.40ID:lqQG1Hmj >>286
list = [str(x) for x in range(1,5)]
とか
map(lambda x : str(x), list)
でもおk
要素数が1個以下の場合はifで分離するだけなので略
list = [str(x) for x in range(1,5)]
とか
map(lambda x : str(x), list)
でもおk
要素数が1個以下の場合はifで分離するだけなので略
289デフォルトの名無しさん
2019/02/21(木) 21:09:47.73ID:y3+CYNZ6 >>279 Common Lisp
(format t "~{~@{~A~^~#,1^, ~}~^ and ~A~}~%" (list 1 2 3 4))
https://ideone.com/6DcwO9
(format t "~{~@{~A~^~#,1^, ~}~^ and ~A~}~%" (list 1 2 3 4))
https://ideone.com/6DcwO9
290デフォルトの名無しさん
2019/02/21(木) 21:21:18.07ID:lqQG1Hmj 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"))
冷静に考えるとこの正規表現を使い回せばどの言語でもワンライナーなのでは
python
print("".join(reversed(" ,".join(reversed([str(x) for x in list])).replace(",","dna ",1))))
JS+正規表現
console.log(list.join(", ").replace(/(.*),(.*?)+/,"$1 and $2"))
冷静に考えるとこの正規表現を使い回せばどの言語でもワンライナーなのでは
291さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/21(木) 21:21:18.26ID:PQQkN+7n292デフォルトの名無しさん
2019/02/21(木) 21:30:40.21ID:lqQG1Hmj よく考えたらreversedなんか使わんでも
print((" ,".join([str(x) for x in list][::-1]).replace(",","dna ",1))[::-1])
でいけるか。join削減できるし
print((" ,".join([str(x) for x in list][::-1]).replace(",","dna ",1))[::-1])
でいけるか。join削減できるし
293さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/21(木) 21:32:52.15ID:3Jj6vI7v 出力文字列の長さは最短でなければならない。
場合分けの順序は問わないが、場合分けの項目について、ソートすることが望ましい。
場合分けの順序は問わないが、場合分けの項目について、ソートすることが望ましい。
294さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/21(木) 21:37:53.05ID:3Jj6vI7v 一番外側の { } は省略可能。
共通部分がないときは、/で区切って出力せよ。
共通部分がないときは、/で区切って出力せよ。
295279
2019/02/21(木) 21:39:50.99ID:1axkeZoV296さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/21(木) 21:55:49.44ID:PQQkN+7n このラティス構造っていうの、言語学ではよく使うらしいが、専門じゃないからよくわからない。
297デフォルトの名無しさん
2019/02/21(木) 22:55:49.76ID:2zdYL4u2 >>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のはワンライナーでも比較的読みやすくて、ちょっと羨ましい。
>>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のはワンライナーでも比較的読みやすくて、ちょっと羨ましい。
298デフォルトの名無しさん
2019/02/21(木) 22:59:16.06ID:2zdYL4u2 >>297
弄ってるうちに要素一以下だとバグ出てた。
正しいコードはこっち。
putStrLn.concat $ if length lst < 2 then lst else [(tail.concat.(map (\x -> ',':x)).init) lst," and ",last lst]
弄ってるうちに要素一以下だとバグ出てた。
正しいコードはこっち。
putStrLn.concat $ if length lst < 2 then lst else [(tail.concat.(map (\x -> ',':x)).init) lst," and ",last lst]
299デフォルトの名無しさん
2019/02/21(木) 23:36:37.11ID:un6uIa3F >>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
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
300デフォルトの名無しさん
2019/02/22(金) 00:04:51.72ID:EatRhjER301デフォルトの名無しさん
2019/02/22(金) 00:07:27.55ID:wSgiM5bY302デフォルトの名無しさん
2019/02/22(金) 00:28:04.99ID:9PVAJM4v >>300
そういう関数が既にあるの?
そういう関数が既にあるの?
303デフォルトの名無しさん
2019/02/22(金) 00:31:28.15ID:wSgiM5bY304デフォルトの名無しさん
2019/02/22(金) 00:49:22.57ID:9PVAJM4v ほえー
305デフォルトの名無しさん
2019/02/22(金) 06:09:02.19ID:HhIJRo4K >>279
Smalltalk (Pharo 7)
#('apple' 'banana' 'orange' 'mango') asCommaStringAnd
==> 'apple, banana, orange and mango'
#('apple' 'banana') asCommaStringAnd
==> 'apple and banana'
#('apple') asCommaStringAnd
==> 'apple'
Smalltalk (Pharo 7)
#('apple' 'banana' 'orange' 'mango') asCommaStringAnd
==> 'apple, banana, orange and mango'
#('apple' 'banana') asCommaStringAnd
==> 'apple and banana'
#('apple') asCommaStringAnd
==> 'apple'
306デフォルトの名無しさん
2019/02/22(金) 06:36:03.41ID:S1fPIClY >>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([])) # 空だ
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([])) # 空だ
307305
2019/02/22(金) 07:07:04.28ID:HhIJRo4K しまった既出だったorz
308デフォルトの名無しさん
2019/02/22(金) 07:58:55.12ID:6TNKk8ap >>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
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
309デフォルトの名無しさん
2019/02/22(金) 08:05:10.35ID:6TNKk8ap310デフォルトの名無しさん
2019/02/22(金) 08:11:07.14ID:EatRhjER >>302
Smalltalkは1970年代頃にはすでにこんな感じで
https://upload.wikimedia.org/wikipedia/commons/6/6e/Smalltalk-76.blowup.png
IDEからお絵かきツールまで処理系に組み込みだったので
生活に密着したメソッドが揃っています!
Smalltalkは1970年代頃にはすでにこんな感じで
https://upload.wikimedia.org/wikipedia/commons/6/6e/Smalltalk-76.blowup.png
IDEからお絵かきツールまで処理系に組み込みだったので
生活に密着したメソッドが揃っています!
311デフォルトの名無しさん
2019/02/22(金) 09:34:06.68ID:Ao+GBu+d ラティス構造って要するに正規表現を生成すりゃーいいのか?
312デフォルトの名無しさん
2019/02/22(金) 19:34:29.73ID:CY9He0wk313デフォルトの名無しさん
2019/02/22(金) 19:43:43.74ID:FMSx1nas お題:21の階乗を計算して表示せよ。
https://ideone.com/gQAd37
https://ideone.com/gQAd37
314デフォルトの名無しさん
2019/02/22(金) 20:16:33.34ID:9PVAJM4v >>310
ほえー
ほえー
315デフォルトの名無しさん
2019/02/22(金) 21:26:47.09ID:py41/SAb >>313 JavaScript
console.log(Array.from({length: 21}, (v, i) => i + 1).reduce((acc, v) => acc * v));
console.log(Array.from({length: 21}, (v, i) => i + 1).reduce((acc, v) => acc * v));
316デフォルトの名無しさん
2019/02/22(金) 21:42:16.23ID:THqrb0iU お題:
長方形のフィールドが与えられる。フィールド上では上下左右に移動することができる。
各マスの数字はそのマスに入るためのコストを表す。
SからGに向かうときの最小コストを求めよ。(SとGのコストは0とする)
S5111
1115G
=> 6
S1111
98642
G1111
=> 9
13457689768914512071934123457
G4578901258901212890361125312
37890423076834712378998725463
16890102569615902061456259893
34582934765923812893461515232
57896123896741378915691551697
89013897456123457162501835479
21389046013845610034623405686
8902346203948612341356362342S
=> ?
長方形のフィールドが与えられる。フィールド上では上下左右に移動することができる。
各マスの数字はそのマスに入るためのコストを表す。
SからGに向かうときの最小コストを求めよ。(SとGのコストは0とする)
S5111
1115G
=> 6
S1111
98642
G1111
=> 9
13457689768914512071934123457
G4578901258901212890361125312
37890423076834712378998725463
16890102569615902061456259893
34582934765923812893461515232
57896123896741378915691551697
89013897456123457162501835479
21389046013845610034623405686
8902346203948612341356362342S
=> ?
317デフォルトの名無しさん
2019/02/22(金) 21:49:55.63ID:2ARSyvEs318デフォルトの名無しさん
2019/02/22(金) 22:00:24.05ID:py41/SAb こういう文章題好き。
でも実力不足で解けない…
a*かな?
でも実力不足で解けない…
a*かな?
319デフォルトの名無しさん
2019/02/22(金) 22:05:57.76ID:AX8XyL13 >>313 Perl5
use bignum (l=>GMP);
$n = 1;
$n *= $_ for 2..21;
print "$n\n";
実行例
~ $ perl 13_313.pl
51090942171709440000
use bignum (l=>GMP);
$n = 1;
$n *= $_ for 2..21;
print "$n\n";
実行例
~ $ perl 13_313.pl
51090942171709440000
320デフォルトの名無しさん
2019/02/22(金) 22:26:00.12ID:eQxt3fSm >>313 JavaScript
console.log((f=n=>n?n*f(n-1):1)(21))
console.log((f=n=>n?n*f(n-1):1)(21))
321デフォルトの名無しさん
2019/02/23(土) 00:16:14.24ID:KCAwaSn8322デフォルトの名無しさん
2019/02/23(土) 00:27:48.65ID:khwKgkQE >>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 })))
#階乗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 })))
323デフォルトの名無しさん
2019/02/23(土) 01:14:20.46ID:9pS68leH >>279
Kotlin script
最後のカンマを正規表現の文字列置換で and にしただけ。
println(listOf("abc", "def", "xyz").joinToString(", ").replace(",([^,]*)$".toRegex(), " and$1"))
出力
abc, def and xyz
Kotlin script
最後のカンマを正規表現の文字列置換で and にしただけ。
println(listOf("abc", "def", "xyz").joinToString(", ").replace(",([^,]*)$".toRegex(), " and$1"))
出力
abc, def and xyz
324デフォルトの名無しさん
2019/02/23(土) 01:19:01.99ID:CTQXI+x5 lispって組み込みで素数かどうか判定するやつ提供されてるのか、、、面白い!
325デフォルトの名無しさん
2019/02/23(土) 02:10:15.51ID:9pS68leH326デフォルトの名無しさん
2019/02/23(土) 03:31:27.03ID:nkO3lkCA >>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
~$ 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
327デフォルトの名無しさん
2019/02/23(土) 03:32:49.90ID:R2s6jSV3 bcのってjsでもそのまま動くんだな。どっちもc由来文法だからか…
for(i=s=1;i<22;)s*=i++;s
for(i=s=1;i<22;)s*=i++;s
328デフォルトの名無しさん
2019/02/23(土) 04:30:09.37ID:R2s6jSV3 >>326
恥ずかしながらdcコマンド知らなかった…いいねこれ。
~$ echo "$(seq -s' ' 1 21)$(printf '* %.0s' {1..20})p" | dc
51090942171709440000
恥ずかしながらdcコマンド知らなかった…いいねこれ。
~$ echo "$(seq -s' ' 1 21)$(printf '* %.0s' {1..20})p" | dc
51090942171709440000
329デフォルトの名無しさん
2019/02/23(土) 08:05:10.28ID:xK8/Ze+A >>313 Maxima
print(21!);
print(21!);
330デフォルトの名無しさん
2019/02/23(土) 08:20:33.48ID:znXlogg7331デフォルトの名無しさん
2019/02/23(土) 08:45:55.53ID:DQY5g4De332デフォルトの名無しさん
2019/02/23(土) 09:18:55.19ID:IBS/n4EE333デフォルトの名無しさん
2019/02/23(土) 12:01:13.29ID:+GfRG2y6334デフォルトの名無しさん
2019/02/23(土) 12:26:35.61ID:DQY5g4De335デフォルトの名無しさん
2019/02/23(土) 12:44:52.28ID:W0y17tlk 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
標準ライブラリ内の数学関数の例
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
336デフォルトの名無しさん
2019/02/23(土) 13:22:30.58ID:R2s6jSV3 例がちょっと意味分からない
1#=1
1以下の素数の積なのに1?
3#=4#=6
何これ?
5#=30
これだけ分かる
1#=1
1以下の素数の積なのに1?
3#=4#=6
何これ?
5#=30
これだけ分かる
337デフォルトの名無しさん
2019/02/23(土) 13:25:18.18ID:R2s6jSV3 あ、二番目分かりました。
一行目だけ分からない
一行目だけ分からない
338デフォルトの名無しさん
2019/02/23(土) 13:28:26.15ID:+GfRG2y6339デフォルトの名無しさん
2019/02/23(土) 13:34:54.53ID:vMXU7Bcc340デフォルトの名無しさん
2019/02/23(土) 13:40:09.27ID:R2s6jSV3341デフォルトの名無しさん
2019/02/23(土) 13:47:45.99ID:+eBVT+rm >>340
1を素数と見做すんじゃなく空積の1
1を素数と見做すんじゃなく空積の1
342デフォルトの名無しさん
2019/02/23(土) 13:53:12.99ID:W0y17tlk というか数学でも0!=1!=1と定義されているのが普通だと思うし
高校でも大学でもそうじゃない問題を見たことがないのだが
高校でも大学でもそうじゃない問題を見たことがないのだが
343デフォルトの名無しさん
2019/02/23(土) 13:53:38.08ID:vMXU7Bcc >>340
いや、むしろ数学の世界での慣習なんですけど…
いや、むしろ数学の世界での慣習なんですけど…
344デフォルトの名無しさん
2019/02/23(土) 14:28:11.89ID:DQY5g4De 単位元(初期値)だろ。
足し算は0、掛け算は1 が、単位元
Ruby で、
( 1..21 ).inject( 1, :* )
1 が初期値で、:* で掛け算メソッドを渡している
足し算は0、掛け算は1 が、単位元
Ruby で、
( 1..21 ).inject( 1, :* )
1 が初期値で、:* で掛け算メソッドを渡している
345デフォルトの名無しさん
2019/02/23(土) 15:02:20.95ID:R2s6jSV3 >>342
> ただし素数階乗とは与えられた整数n以下のすべての素数の積である
と書いてあるので、
「与えられた整数n」が1
のとき、
「与えられた整数n以下のすべての素数の積」
は、
「1以下のすべての素数の積」
となり、
1以下に素数はないのになんで例で答がが1になってるんだろう、と思った次第です。
お騒がせしました。
> ただし素数階乗とは与えられた整数n以下のすべての素数の積である
と書いてあるので、
「与えられた整数n」が1
のとき、
「与えられた整数n以下のすべての素数の積」
は、
「1以下のすべての素数の積」
となり、
1以下に素数はないのになんで例で答がが1になってるんだろう、と思った次第です。
お騒がせしました。
346デフォルトの名無しさん
2019/02/23(土) 15:15:16.07ID:R2s6jSV3 できた
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に挑戦したい
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に挑戦したい
347デフォルトの名無しさん
2019/02/23(土) 15:45:56.58ID:xK8/Ze+A348デフォルトの名無しさん
2019/02/23(土) 15:50:44.94ID:5fn4St+r Jどこで覚えればいいの?
Effective J的な読みやすい書籍ないの?
Effective J的な読みやすい書籍ないの?
349デフォルトの名無しさん
2019/02/23(土) 16:01:13.49ID:BD+5EZ0V >>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>
(defun ! (n)
(apply #'* (loop for i from 1 upto n collect i)))
CL-USER> (! 21)
51090942171709440000
CL-USER> (! 0)
1
CL-USER>
350デフォルトの名無しさん
2019/02/23(土) 16:18:41.85ID:Z/STDkD0351デフォルトの名無しさん
2019/02/23(土) 17:50:18.29ID:oGmxRysL352デフォルトの名無しさん
2019/02/23(土) 18:00:12.84ID:5fn4St+r でかいキノコやらしい…
353デフォルトの名無しさん
2019/02/23(土) 18:14:04.27ID:2kPF298z354デフォルトの名無しさん
2019/02/23(土) 20:22:19.99ID:ejRNWGjN >>316
python(pypy) https://ideone.com/DV1w4s
本線: キュー使用したダイクストラ (+ 経路復元)。
サンプル程度なら、ワーシャルフロイド(頂点^3)でも回る、と同方も追加。
さすがにpythonには少々きつく、pypyに逃げた。
python(pypy) https://ideone.com/DV1w4s
本線: キュー使用したダイクストラ (+ 経路復元)。
サンプル程度なら、ワーシャルフロイド(頂点^3)でも回る、と同方も追加。
さすがにpythonには少々きつく、pypyに逃げた。
355デフォルトの名無しさん
2019/02/24(日) 00:49:59.19ID:ROsmA06r >>354 pypy に逃げたという話は、その方がかなりスピードが早いからという事? どの位のスピード差になるんだろう?
356デフォルトの名無しさん
2019/02/24(日) 01:37:12.40ID:jRfp9b62 >>313
Kotlin script
println("%.0f".format((2..21).map { it.toDouble() }.reduce { n1, n2 -> n1 * n2 }))
Kotlin script
println("%.0f".format((2..21).map { it.toDouble() }.reduce { n1, n2 -> n1 * n2 }))
357デフォルトの名無しさん
2019/02/24(日) 01:45:28.46ID:W3fm5ADB358さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/24(日) 05:55:10.72ID:xnYazQgz お題: 3分タイマーを作れ。3分間待って、音を鳴らすか、画面に「BEEP!」と表示せよ。ただし、CPU時間を無駄に消費してはならない。
359さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/24(日) 06:09:09.10ID:xnYazQgz お題: スリープソートを実装せよ。
360さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/24(日) 06:27:08.15ID:xnYazQgz お題: 玉入れ競争のシミュレーションを作れ。1チームに玉50個で園児3人。2チームある。園児それぞれが10秒に玉1個投げる。
一回投げると、3秒後に1/2の確率で玉が入る。イベントのたびに「チーム#1の園児#1が玉を投げました」「チーム#2の園児#1の玉が入りました」などと表示する。
一回投げると、3秒後に1/2の確率で玉が入る。イベントのたびに「チーム#1の園児#1が玉を投げました」「チーム#2の園児#1の玉が入りました」などと表示する。
361デフォルトの名無しさん
2019/02/24(日) 07:40:28.45ID:lq3Vey6S362デフォルトの名無しさん
2019/02/24(日) 08:11:35.91ID:UKaroUbg >>335
Smalltalk (Pharo 7)
[:n | (Integer primesUpTo: n+1) inject: 1 into: [:p :x | p * x]] value: 5
==> 30
Smalltalk (Pharo 7)
[:n | (Integer primesUpTo: n+1) inject: 1 into: [:p :x | p * x]] value: 5
==> 30
363デフォルトの名無しさん
2019/02/24(日) 08:39:28.32ID:lq3Vey6S364デフォルトの名無しさん
2019/02/24(日) 08:59:23.56ID:k3GW1oFG お題
与えられた文字列を縦に表示する
入力
hello
出力
h
e
l
l
o
与えられた文字列を縦に表示する
入力
hello
出力
h
e
l
l
o
365デフォルトの名無しさん
2019/02/24(日) 09:18:40.92ID:FkqnBGPg >>364
ruby -e "'hello'.split('').each do |c| puts c end"
ruby -e "'hello'.split('').each do |c| puts c end"
366デフォルトの名無しさん
2019/02/24(日) 09:39:23.28ID:UNsYm68I367デフォルトの名無しさん
2019/02/24(日) 10:41:19.01ID:gbE7FXAb368デフォルトの名無しさん
2019/02/24(日) 10:45:19.09ID:gbE7FXAb369デフォルトの名無しさん
2019/02/24(日) 10:51:12.60ID:5XYYe3Vz370デフォルトの名無しさん
2019/02/24(日) 11:01:40.94ID:gbE7FXAb >>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
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
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
