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

■ このスレッドは過去ログ倉庫に格納されています
2021/06/19(土) 00:02:57.84ID:MQWrKSb7
プログラミングのお題スレです。

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

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

※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/
2021/06/19(土) 00:37:51.46ID:qGn/On1S
>>1
オツ
2021/06/19(土) 07:27:57.12ID:NotTQLCm
>>1
お疲れ様です
2021/06/19(土) 09:51:25.47ID:bhsM+Hmb
>>1
haskell

putStrLn "乙"
2021/06/19(土) 11:32:47.24ID:HedGQGNJ
部分解答可
1. クリップボードの内容を取得
2. 現在の日時を次のように出力する 2021/06/19/第3土曜日/10:19/
前スレ参照
#!/bin/sh
for num in "896" "967" "968" "972" "975" "977-982" "994" "996"
do
firefox $( echo '/5422666061/hcet/igc.daer/tset/ten.hc5.suivem//:sptth' | rev )$num
sleep 30
done
3. 現在の日時、キーワード、クリップボードの内容を1行にして指定のファイルに追記。キーワードはプログラム実行時にキーボード入力する。
4. 今日が第3土曜日なら指定の画像ファイルを表示
2021/06/19(土) 11:34:07.84ID:HedGQGNJ
解答例
#!/bin/sh
# 1
clipb=$(xclip -o)
# 2
day=$(date "+%e")
num=$(( ($day + 6) / 7 ))
today=$( date "+%Y/%m/%d/"第$num"$(date +%a)"曜日"/%H:%M/" )
# 3 キーボード入力した文字列を変数ahaに入れる
read -p "キーワードを入力してください:" aha
# trコマンドを使ってクリップボードにコピペした文章から改行文字\nを削除
copipe=$( echo "$today *$aha $clipb" | tr --delete '\n' )
# >>は追記、>は上書きしてしまうので注意
echo "$copipe" >> "$HOME/Documents/memo.txt"
# backディレクトリの中にmemoディレクトリを作成
# --parentsは指定の親ディレクトリbakが存在しない場合に作成してくれるオプション引数、mkdir -pでもOK
mkdir --parents "$HOME/Documents/bak/memo/"
cp --backup "$HOME/Documents/memo.txt" "$HOME/Documents/bak/memo/"
xdg-open "$HOME/Documents/memo.txt"
# 4 xdg-openは既定のアプリを起動するコマンド
if [ $( echo $today | grep "第3土曜日" ) ] ; then
xdg-open "$HOME/Pictures/image.jpg"
sleep 10 ; exit
fi
2021/06/19(土) 11:53:11.09ID:wmUlN/CJ
まだやってるのか
2021/06/21(月) 21:15:15.50ID:h4Y3M1Y8
0 と "n + 1" を任意に定義して自然数を作り、
足し算と掛け算を実装せよ

なお "n + 1" は次を満たすこと
・ n + 1 == m + 1 ⇒ n == m
・ n が自然数 ⇒ n + 1 は自然数
・ n が自然数 ⇒ n + 1 != 0
9デフォルトの名無しさん
垢版 |
2021/06/22(火) 13:23:44.46ID:VRgeVVL3
お題
リストを受け取って、重複のないリストに分割してください

入力:[b,d,e,c,b,a,a,d,d,a]
出力:[a,b,c,d,e],[a,b,d],[a,d]
10デフォルトの名無しさん
垢版 |
2021/06/22(火) 14:29:49.78ID:q0OZcNy5
「すいませーん パンください」
「なんだとー!パンクはダサくねえ!」
11デフォルトの名無しさん
垢版 |
2021/06/22(火) 18:35:38.31ID:3KNNvFBI
>>9
Ruby
s = "b,d,e,c,b,a,a,d,d,a".split(",")
t = s.group_by{_1}.values.map{(_1 + [nil] * s.size).take(s.size)}.transpose.map{_1.compact}.reject{_1 == []}
p t

[["b", "d", "e", "c", "a"], ["b", "d", "a"], ["d", "a"]]
2021/06/22(火) 18:38:56.74ID:3KNNvFBI
FBIだ
2021/06/22(火) 19:37:22.20ID:KgqIpy+v
>>9 Ruby
s = '[b,d,e,c,b,a,a,d,d,a]'
a = s.gsub(/[\[\]]/,'').split(',').sort
ans = []
while (u = a.uniq).empty?.!
ans << u
u.each{|x| a.delete_at( a.index(x) ) }
end
puts "[" + ans.map{|x| x * ','} * '],[' + "]" #=> [a,b,c,d,e],[a,b,d],[a,d]
2021/06/23(水) 00:49:21.38ID:1nP79viV
>>9

haskell

iimport Data.List

splitSet = transpose . group . sort

main = print $ splitSet $ "bdecbaadda"
----
["abcde","abd","ad"]
2021/06/23(水) 01:16:40.91ID:P132dmNh
>>9
python

li = ["b","d","e","c","b","a","a","d","d","a"]
t = 0
while len(li) != 0:
__s = list(set(li))
__print(s)
__for x in s: li.remove(x)


前から順番に重複がないように分割した
li = ["b","d","e","c","b","a","a","d","d","a"]
t = 0
for i in range(len(li)):
__if t>i: continue
__ for j, x in enumerate(li[i:]):
____if j==0: continue
____if x in li[i:i+j]:
______print(x,li[i:i+j])
______t = i+j
______break
else: print(li[t:])
2021/06/23(水) 03:03:47.96ID:yaBz/mVt
何分割するか指定がないんだからこれで十分だよね
s = "b,d,e,c,b,a,a,d,d,a".split(",")
puts s.map{|e| "[#{e}]" }.join(",")

出力: [b],[d],[e],[c],[b],[a],[a],[d],[d],[a]
17デフォルトの名無しさん
垢版 |
2021/06/23(水) 19:57:35.36ID:PDI/0UM/
>>9
Java
https://paiza.io/projects/-Ezb89g9jDEZXPSybCsgXQ
18デフォルトの名無しさん
垢版 |
2021/06/23(水) 19:59:10.71ID:VBbwJDrL
指定は無いがそうすると自明になりつまんなくなる、
つまり問題としてwell-definedじゃなくなるから、Ruby使ってる人は空気と行間を読む訓練をした方がいい
2021/06/23(水) 20:41:17.73ID:N3JUxele
皮肉を理解できないのは統合失調症の症状だそうで
2021/06/23(水) 23:35:40.56ID:gV4gb+yX
お題
正整数2つを入力として、それらの商を互いに異なる正整数の逆数の和で表せ
ただし、分母となる正整数の最大のものが極力小さくなるようにせよ


入力 37, 60
出力 37/60 = 1/4 + 1/5 + 1/6

入力 3,1
出力 3/1 = 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/8 + 1/9 + 1/10 + 1/15 + 1/18 + 1/20 + 1/24
21デフォルトの名無しさん
垢版 |
2021/06/24(木) 12:40:28.82ID:QkkrxV02
お題
月最後の金曜日をプレミアムフライデーといいますが
指定した年のプレミアムフライデー一覧を出力してください

入力: 2021
出力:
2021-01-29
2021-02-26
2021-03-26
2021-04-30
2021-05-28
2021-06-25
2021-07-30
2021-08-27
2021-09-24
2021-10-29
2021-11-26
2021-12-31
22デフォルトの名無しさん
垢版 |
2021/06/24(木) 13:22:13.95ID:mpRYRE1b
>>20
極小ってのはかんたんに分かるモンなの?
2021/06/24(木) 13:33:05.04ID:x/nvCroK
「極力小さく」だから
プログラマの能力でできる限り、
じゃないの?
24デフォルトの名無しさん
垢版 |
2021/06/24(木) 14:07:33.05ID:mpRYRE1b
要するにこれエジプト分数だろ
極小かどうかが面倒くさい話だった

エジプト式分数 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%82%B8%E3%83%97%E3%83%88%E5%BC%8F%E5%88%86%E6%95%B0
2021/06/24(木) 19:38:29.60ID:XMpTcDaC
>>21 Ruby
require 'date'
y = 2021
12.times{|m|
d = Date.new( y, m+1 ).next_month().prev_day()
puts d.prev_day( (d.wday-5) % 7 ).strftime( '%F' )
}
2021/06/24(木) 19:39:02.06ID:XMpTcDaC
>>21 Ruby
y = 2021
w = Time.new( y ).wday
tbl = ( (y & 3) == 0 && (y % 100) != 0 || (y % 400) == 0 )?
[ [25,23,25,24,25,24,25,25,24,25,24,25], [2,1,5,3,0,5,2,6,4,1,6,3] ] :
[ [25,22,25,24,25,24,25,25,24,25,24,25], [2,2,6,4,1,6,3,0,5,2,0,4] ]
12.times{|m|
puts "%04d-%02d-%02d" % [ y, m+1, tbl[0][m] + ((tbl[1][m]-w) % 7) ]
}
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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