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

■ このスレッドは過去ログ倉庫に格納されています
2020/11/30(月) 00:04:05.21ID:TF2Czp0y
プログラミングのお題スレです。

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

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

※前スレ
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/
2020/12/05(土) 08:59:53.39ID:e3dDslST
>>30
辺上なら
(2h+2w)C3-2 (h+1)C3 -2 (w+1)C3
=(2h + 2w)(2h + 2w-1)(2h + 2w-2)/6 - 2(h+1)h(h-1)/6-2(w+1)w(w-1)/6
じゃないの?
2020/12/05(土) 09:08:46.93ID:wyyz8Yxy
>>31
なに当たり前のこと言ってんの?
2020/12/05(土) 09:10:06.86ID:l3I779fy
>>31
は純粋にすごいと思ったけど
>>32
はドヤっててキモい
2020/12/05(土) 09:11:19.04ID:wyyz8Yxy
指摘が意味不明すぎなんだわ
てかこんなん中学の算数だろ
2020/12/05(土) 09:15:41.52ID:9/0cDzrv
コンビネーションって高校じゃなかったっけ?
まあ、31は24と30の反論になってないから(むしろ論を補強してる)、
意味がよく分からない指摘だというのは同意。
2020/12/05(土) 09:26:57.24ID:e3dDslST
イヤ、だってH=987, W=654の時どうしますか?
がお題だけど
こコレ
「まともに3282C3=5,886,638,960通りから直線に並ぶ場合を抜くとどえらい計算になります。どうしますか?」
という意味にしか見えないんけど
コレが辺上だけじゃなくて内点も走るならともかく、辺上しか走らないならどうしますかもへったくれもない
2020/12/05(土) 09:32:49.97ID:wyyz8Yxy
>>36
ああ、そういう文脈で言ってたのね
ただ問題文で辺上って言われてるし、しかも2x3の例からもそれは明らかなんで
ぱぱぱっと計算して終わりで良いんじゃないの
2020/12/05(土) 09:52:46.86ID:CtYOdxNe
>>24
(h + w) * ((h + w - 1)^2 + h * w) が答えだな。
たかがこんな計算を凄いと思えちゃう>>33君かわいい。
2020/12/05(土) 09:53:01.14ID:e3dDslST
まぁじゃババっと
Haskell

f n = div (n*(n-1)*(n-2)) 6
g h w = ( f $ 2*h+2*w ) - 2*( f $ h+1 ) - 2*( f $ w+1 )

main = do
print $ g 1 1
print $ g 3 2
print $ g 987 654

----
4
110
5472895818
2020/12/05(土) 12:09:38.25ID:TQcPj7M7
>>32
単純にこのレスはダサいだろ
2020/12/05(土) 12:21:48.03ID:ueKgO2NY
>>33が必死で草
42デフォルトの名無しさん
垢版 |
2020/12/06(日) 04:56:07.06ID:KfTg6Pxo
マウンティングのとりあい、カッコ悪い
2020/12/06(日) 09:12:18.95ID:ikxyNJRG
当人同士が反目し合ってるわけじゃないのに外野が騒いでるのがなんとも
2020/12/06(日) 09:16:55.00ID:Qe9xBjDT
チクチク言葉やめろよカス
2020/12/06(日) 14:34:10.80ID:oqBHe4TF
整数 a, b, c が与えられるので, x^3 + ax^2 + bx + c = 0 を満たす実数を1つ求めよ.

0 0 -1 -> 1.0
-6 -11 -6 -> [1.0, 2.0, 3.0 の内のいずれか]
1 2 3 -> -1.275682203650985
4 5 6 -> -3.0
3 -1415 926535 -> -103.38046753468685
30000 299905755 -942477760 -> ???
2020/12/06(日) 18:18:32.49ID:EaHZxlDZ
>>45
https://ideone.com/wictTe
2020/12/07(月) 00:14:06.84ID:LcHpzYm6
お題: 三次元のライフゲームを映像化。
2020/12/07(月) 01:07:51.20ID:owPfoMMb
>>47
クソスレ立てるなカス

作ろう!ウェブアプリ開発コンテストPart1
https://mevius.5ch.net/test/read.cgi/hp/1605200346/
111 蟻人間 ◆T6xkBnTXz7B0 sage 2020/12/05(土) 17:53:48.82 ID:???
☆★☆テナント募集中☆★☆
スレッド終了のため、一緒にスレッドを盛り上げてくれる
イベント企画が出来る方を募集しています。
まずはご連絡下さい。
株式会社突撃商会 TEL 03-XXXX-XXXX
2020/12/07(月) 01:32:19.45ID:LcHpzYm6
>>48
うぜえ、ストーカー規制法だぞ
2020/12/07(月) 01:42:49.56ID:MzJ6ksVT
>>47
映像化することがお題というなら、ライフゲーム自体はお前が提供するのか
51デフォルトの名無しさん
垢版 |
2020/12/07(月) 14:21:20.37ID:8Ddysj0U
お題
表が連続する長さの平均を求めてください

入力: 裏裏表裏裏表裏裏裏表裏裏裏表表裏表裏裏表裏裏裏裏表表表表表裏表表裏裏表裏表表裏表表表表表裏裏裏裏裏表表表表裏表表表表裏表表表裏表表表裏裏表裏裏表表裏裏表裏表表表裏裏裏裏裏表表表表表裏表表裏表裏裏表裏表
2020/12/07(月) 15:32:20.36ID:78t68E9P
>>51
haskell

import Data.List

str = "裏裏表裏裏表裏裏裏表裏裏裏表表裏表裏裏表裏裏裏裏表表表表表裏表表裏裏表裏表表裏表表表表表裏裏裏裏裏表表表表裏表表表表裏表表表裏表表表裏裏表裏裏表表裏裏表裏表表表裏裏裏裏裏表表表表表裏表表裏表裏裏表裏表"

consecHeads = id
. map genericLength
. filter ( (=='表') . head )
. group

avg x = ( sum x ) / ( genericLength x)

main = do
print $ consecHeads str
print $ avg $ consecHeads
----
[1.0,1.0,1.0,2.0,1.0,1.0,5.0,2.0,1.0,2.0,5.0,4.0,4.0,3.0,3.0,1.0,2.0,1.0,3.0,5.0,2.0,1.0,1.0,1.0]
2.2083333333333335
2020/12/07(月) 18:45:30.74ID:Ao/BDdnQ
>>51 Ruby
Str = '裏裏表裏裏表裏裏裏表裏裏裏表表裏表裏裏表裏裏裏裏表表表表表裏表表裏裏表裏表表裏表表表表表裏裏裏裏裏表表表表裏表表表表裏表表表裏表表表裏裏表裏裏表表裏裏表裏表表表裏裏裏裏裏表表表表表裏表表裏表裏裏表裏表'

series = Str.scan( /表+/ )
puts series.sum(0.0){|s| s.size } / series.size
2020/12/07(月) 19:47:31.22ID:m3NDFPid
>>49
クソスレ立てるな

すき家とかかつやみたいな和食屋で外国人雇うな
https://mevius.5ch.net/test/read.cgi/tech/1607138691/
13 蟻人間 ◆T6xkBnTXz7B0 sage 2020/12/07(月) 19:09:17.13 ID:rNPNmVA2
>>11

いい所に来たな。ウェブ技術に関するあるプロジェクトがあるんだが、手伝ってくれるかい?
成果物は山分けだ。

HTTPもしくはHTTPS通信で、とあるURLにあるHTMLをダウンロードして画像を含めてレンダリングする。ただし、jQueryまたはPython3を使用する。

ここまで。

14 蟻人間 ◆T6xkBnTXz7B0 sage 2020/12/07(月) 19:25:06.23 ID:rNPNmVA2
いわゆるスクレイピングって言う技術だけど、それ以上のことがしたいんだ。

ホームページの構成要素を破壊するような動画を作りたい。まあ、実際に破壊する訳じゃないけど、ハッカーになりたい子どもたちの娯楽として役に立つらしい。
2020/12/07(月) 19:54:22.42ID:rNPNmVA2
>>54
立ててねーよ。
2020/12/07(月) 20:03:08.23ID:7hownX7E
お題流れるからクソコテは死ね
2020/12/07(月) 20:16:20.90ID:sdBj/JBd
荒らしを相手にするやつも嵐のメンバー。
2020/12/07(月) 20:18:25.02ID:m3NDFPid
お前が言うな
盗人猛々しい奴だな
59デフォルトの名無しさん
垢版 |
2020/12/08(火) 15:44:35.89ID:jRmhdWmE
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13212452128
なぜですか?

質問者からのお礼コメント
小学生でもわかるような回答ではなく、なぜそうなのかも回答できないと社会人として微妙ですよ。
わかる箇所だけ答えるのはニワカです。
2020/12/08(火) 15:52:58.87ID:KeS4W5RD
漠然とした質問に相応の答えだね
2020/12/08(火) 22:48:35.65ID:pGXopNTt
ヤフー知恵袋スマホで見たらどこがサイト本体なのかわからねえなゴミ袋かよ
2020/12/10(木) 18:22:03.94ID:uygr7FQy
>>51
python
s = input()
return sum(len(x) for x in s.split("裏") if x != 0) / len([None for x in s.split("裏") if x != ""])
何もimportせずに1行にする方法が思いつかなかった
2020/12/10(木) 18:37:00.38ID:uygr7FQy
jsならreduceがあるからできるな
window.prompt().split("裏").filter(x=>x!="").map(x=>x.length).map(x=>[x,1]).reduce((a,b)=>[a[0]+b[0],a[1]+b[1]]).reduce((a,b)=>a/b)
2020/12/10(木) 18:40:22.32ID:WBenXu2r
pythonでもlambda使えば
2020/12/10(木) 18:41:01.74ID:WBenXu2r
書き込みミスったすまん
print((lambda a: sum(a) / len(a))([len(x) for x in input().split("裏") if x != ""]))
66デフォルトの名無しさん
垢版 |
2020/12/11(金) 01:42:53.01ID:2d//6+8I
>>51
Kotlin
https://paiza.io/projects/J5pzqTvWyPo3SHwaijR_wQ
2020/12/11(金) 01:44:21.40ID:2d//6+8I
あ、間違えた。表の方を数えるのか。じゃあこっそり直そう。
68デフォルトの名無しさん
垢版 |
2020/12/11(金) 12:19:49.95ID:OZejrzeq
>>51 Python
print((lambda a: a.count("表")/(a+"裏").count("表裏"))(input()))
2020/12/12(土) 20:53:25.52ID:LY1sKTLV
>>51
perl5
https://paiza.io/projects/qKzBZMnxL6G2mveKArd7-g
2020/12/12(土) 21:20:21.05ID:LY1sKTLV
>>51
びっくりする副作用を使うバージョンでもう一回 perl5
https://paiza.io/projects/d45itfxNwe7Y4RCtte8czQ
2020/12/12(土) 21:23:14.60ID:Tjq2nQZU
お題:
プログラム言語X1では32ビットの符号なし整数と32ビットの符号付き整数が使える。
しかし、プログラム言語X2では32ビットの符号なし整数が使えず、32ビットの符号付き整数が使える。
このままではX1からX2への移植が困難である。
そこで、X2において与えられた32ビットの整数を符号なしと見なした値を10進数文字列化せよ。
2020/12/12(土) 21:29:50.06ID:My1CH9nH
>>71
クソスレ立てるな自演野郎

作ろう!ウェブアプリ開発コンテストPart1
https://mevius.5ch.net/test/read.cgi/hp/1605200346/
83 Name_Not_Found sage 2020/11/30(月) 01:23:51.15 ID:???
蟻=熊

33 蟻人間 ◆T6xkBnTXz7B0 sage 2020/11/18(水) 22:50:58.32 ID:???
local storageはセキュリティどうなん?

34 蟻人間 ◆T6xkBnTXz7B0 sage 2020/11/18(水) 22:55:28.97 ID:???
>>33
今回は技術情報システムで、公開される情報だから、問題ないんとちゃうん?

36 Name_Not_Found sage 2020/11/18(水) 23:20:35.82 ID:???
トリップそのままとか斬新な自演ですね(笑)


一人ママゴト楽しい?
2020/12/12(土) 21:30:30.92ID:My1CH9nH
>>71
クソスレ立てるな

すき家とかかつやみたいな和食屋で外国人雇うな
https://mevius.5ch.net/test/read.cgi/tech/1607138691/
13 蟻人間 ◆T6xkBnTXz7B0 sage 2020/12/07(月) 19:09:17.13 ID:rNPNmVA2
>>11

いい所に来たな。ウェブ技術に関するあるプロジェクトがあるんだが、手伝ってくれるかい?
成果物は山分けだ。

HTTPもしくはHTTPS通信で、とあるURLにあるHTMLをダウンロードして画像を含めてレンダリングする。ただし、jQueryまたはPython3を使用する。

ここまで。

14 蟻人間 ◆T6xkBnTXz7B0 sage 2020/12/07(月) 19:25:06.23 ID:rNPNmVA2
いわゆるスクレイピングって言う技術だけど、それ以上のことがしたいんだ。

ホームページの構成要素を破壊するような動画を作りたい。まあ、実際に破壊する訳じゃないけど、ハッカーになりたい子どもたちの娯楽として役に立つらしい。
2020/12/12(土) 22:53:12.12ID:gPUrwTXi
>>51 bat
:: 循環小数の循環節を()で表す
@echo off &setlocal enabledelayedexpansion
set str=裏裏表裏裏表裏裏裏表裏裏裏表表裏表裏裏表裏裏裏裏表表表表表裏表表裏裏表裏表表裏表表表表表裏裏裏裏裏表表表表裏表表表表裏表表表裏表表表裏裏表裏裏表表裏裏表裏表表表裏裏裏裏裏表表表表表裏表表裏表裏裏表裏表
set str=%str:裏= %
for %%a in (%str%) do set /a n+=1
set /a s=%str:表=1+%0, a=s/n, r=s%%n
:: test sample
:: set /a s=5, n=108, a=0, r=5
:: set /a s=10, n=3, a=3, r=1
:: set /a s=1212123, n=9999999, a=0, r=1212123
:: set /a s=12, n=4, a=3, r=0
:: echo %s% / %n% = %a%...%r%
set /a j=0, max=1024
:FLACT
if %r% EQU 0 goto :END
set RR=%RR% %r%
set /a r*=10, d=r/n, r%%=n, i=0, j+=1
set f=%f%%d%
for %%a in (%RR%) do (if %%a EQU %r% for /f %%i in ("!i!") do set "f=!f:~0,%%i!(!f:~%%i!)…"&goto :END ) &set /a i+=1
if %j% LSS %max% goto :FLACT
set f=%f%…

:END
if defined f set f=.!f!
echo %s% / %n% = %a%!f!
pause
REM 53 / 24 = 2.208(3)…
75デフォルトの名無しさん
垢版 |
2020/12/13(日) 00:32:32.94ID:qXegsMRS
>>71
Java
https://paiza.io/projects/1DnFNPffNqChsN9nlWmv9g
76デフォルトの名無しさん
垢版 |
2020/12/13(日) 01:10:59.90ID:qXegsMRS
>>51
Java
https://paiza.io/projects/Zlfh3U7vhRXnINzdJyIrXA
2020/12/13(日) 06:04:20.93ID:jPgXPNr/
>>71 C++
https://ideone.com/tsrxUE
2020/12/13(日) 06:45:16.14ID:jPgXPNr/
>>71 C++ ループ無し
https://ideone.com/kxxDn6
2020/12/13(日) 08:24:11.25ID:zFOj0dh9
お題:
符号なし演算ができない言語X2において、2個の32ビットの符号付き整数x, yがあたえられる。x, yを符号なし整数x', y'と見なしたときの比較演算 x' < y' の値を求めよ。
2020/12/13(日) 08:37:28.90ID:LzHmnmLv
回答付いたからってチョーシに乗るな。
2020/12/13(日) 08:38:30.36ID:zFOj0dh9
>>78
素晴らしい回答ですね。少し簡単に解説してくれませんか?
出題者がおバカですみません。
2020/12/13(日) 09:01:54.89ID:LzHmnmLv
えっ??
頭おかしいだけかと思ってたらホントに馬鹿なんだなw
右シフトとマスクでマイナス値は正の値に直す。右シフト1で1/2
更に5で割って1/10。これで10の位から上の値になる
上の割る5で切り捨てられた余りの2倍(左シフト1)と右シフトで捨てられたLSBを足して1の位
2020/12/13(日) 09:18:05.05ID:zFOj0dh9
>>82
ありがとうございます。
84デフォルトの名無しさん
垢版 |
2020/12/13(日) 14:07:02.42ID:qXegsMRS
>>79
Java
https://paiza.io/projects/7iEQmhLeSJs5iPIxnBgHnw
2020/12/13(日) 15:18:39.67ID:zFOj0dh9
>>84
ちょっと動作が遅いね。どちらも正だった場合は普通に比較できるんだから、マイナスありとなしで場合分けできるんじゃね。
2020/12/13(日) 18:34:56.68ID:jPgXPNr/
>>79 C++
https://ideone.com/uZYoA9
2020/12/13(日) 18:39:04.43ID:7dJX4pz2
>>19
lol
88デフォルトの名無しさん
垢版 |
2020/12/14(月) 07:19:49.11ID:nk+3ocmA
>>79 Julia
function f(x , y)
  if (x >= 0) == (y >= 0)
  x > y
  else
  !(x > y)
  end
end
2020/12/14(月) 14:05:29.33ID:y4v5rW/c
今年考えたがボツにした、イマイチ問題より
[お題]
 整数A, B (1 <= A < B <= 20億)が与えられる。
 A以上, B以下の整数が持つ"約数の個数"を合計する。

1) 12 14 → 12
2) 1 100 → 482
3) 98765432 1234567890 → ?
4) 393939393 1772727272 → ?
5) 1 2000000000 → 43141689413

※ 1)の補足、各整数の約数は 12{1,2,3,4,6,12}->6個, 13{1,13}->2個,
  14{1,2,7,14}->4個, 個数合計は 6+2+4=12個
※ 小問実行時間を1秒程度で。
※ "約数の個数"はwikiに準拠
 https://ja.wikipedia.org/wiki/%E7%B4%84%E6%95%B0#%E7%B4%84%E6%95%B0%E3%81%AE%E5%80%8B%E6%95%B0
2020/12/14(月) 15:38:14.40ID:JA72696N
お題:
整数 N,M が与えられます
M 個の1でない正整数をそれぞれ任意に選んだとき、
それらを全て掛け合わせて N を作ることが出来るような選び方が存在するか求めて下さい

制約:
2≦N≦10^9
1≦M≦10^9

例:
入力: N = 1576, M = 3
出力: Yes (例えば 2*2*394 = 1576 です)

入力: N = 1576, M = 5
出力: No

入力: N = 5, M = 1
出力: Yes (5 の1つだけを選んでもいい)
2020/12/14(月) 16:58:04.24ID:JA72696N
>>89
エラトステネスっぽく√Nまでで約数を考えていけばいいかな?
それ以上は対称性から*2すればよくて、二乗数の時だけ注意

それで
B以下の約数の個数の和-A未満の約数の個数の和
をする
9289
垢版 |
2020/12/14(月) 18:20:01.63ID:y4v5rW/c
>>91
前半は想定解と異なるので、何とも言えない。
("*2すればよい"の意味がわからない)
最後の2行は、想定解もその通り。

>>90
by python3 https://paiza.io/projects/RY7_PhZbZz-noBfirgTOHA
2020/12/14(月) 19:27:12.48ID:bqe1tjqc
まあ要するに
Σ[n] ( floor (B/n) - ceiling (A/n) + 1 )
かな
9491
垢版 |
2020/12/14(月) 19:55:38.37ID:I3Y5P+Cj
>>89
C++ https://wandbox.org/permlink/MxHAfa3789hKYqLe

すまん、日本語が下手だった
2020/12/14(月) 20:38:42.92ID:R5T0tffH
>>71,79 bat 組み合わせてmax関数化。変換は>>78さん模倣
:: maxUint32 2つの引数(int32)をunsignedINT32と見做して比較し大きい方をunsignedINT32と同じ数字文字列に変換
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a N=%%A
for /f "usebackq skip=%N% tokens=1,2* delims=, " %%A in ("%~0") do (
set /a "x=%%A, u=y=%%B, m=0x7fffffff, xor=(x^y)&~m, xx=x&m, yy=y&m, msby=y>>31&1"
set z=%%C
if !xor! EQU 0 (if !xx! GTR !yy! set /a u=x ) else if !msby! EQU 0 set /a u=x
set /a "L=u&1, u=u>>1&m, h=u/5, L+=u%%5<<1"
if !h! EQU 0 set h=
if "!h!!L!"=="!z!" (set "z=OK") else set z=NG
echo !h!!L! : !z!
)
pause &exit /b
:: ARGS
0, 0, 0
0, 1, 1
1, 0, 1
1, 1, 1
123, 456, 456
456, 123, 456
0, -1, 4294967295
-1, 0, 4294967295
0x7fffffff, 0x80000000, 2147483648
-1294967296, 0x80000000, 3000000000
-294967296, -2147483647, 4000000000
2020/12/14(月) 22:49:37.32ID:IVz7Drzo
>>89
haskell

div' x y = -1 - ( div ( -x ) y )

f a b = ( g b ) - ( h a )

g a = let
c = truncate $ sqrt $ fromInteger a
v = sum [ ( div a x ) | x <- [1..c] ]
in 2*v - c^2

h b = let
c = truncate $ sqrt $ fromInteger b
d = if c^2 == b then 1 else 0
v = sum [ ( div' b x ) | x <- [1..c] ]
in 2*v - c^2 + d

main = do
print $ f 12 14
print $ f 1 100
print $ f 98765432 1234567890
----
12
482
24201731790
2020/12/15(火) 00:08:49.86ID:SWKOmgAZ
>>90
haskell

import Data.List

pdcmp n = let
mainLoop d m = case () of
_ | d^2 > m -> [ m ]
_ | mod m d /= 0 -> mainLoop ( d + 1 ) m
otherwise -> d : ( mainLoop d $ div m d )
in if n > 1 then mainLoop 2 n else [ ]

sumMult = sum . map length . group . pdcmp

isOk m n = m <= ( sumMult n)

main = do
print $ isOk 3 1576
print $ isOk 5 1576
print $ isOk 1 5
print $ isOk 15 735134400
print $ isOk 29 536870912
print $ isOk 2 1000000007
----
True
False
True
True
True
False
98デフォルトの名無しさん
垢版 |
2020/12/16(水) 11:44:45.67ID:xiQ1h/Hx
お題: テキスト内の指定の文字をタグで囲む関数wrapを作成せよ
wrap関数の引数は(text, target_char, tag_left='<', tag_right='>')とする
wrap関数の返り値は文字列とする
wrap関数はtext内の文字を解析し、文字がtarget_charだった場合にその文字をtag_left, tag_rightで囲むものとする
タグで囲んだテキストは返り値として返却する

以下のテストケースが通過するように実装せよ
assert pad('abc', 'a') == '<a>bc'
assert pad('bac', 'a') == 'b<a>c'
assert pad('bca', 'a') == 'bc<a>'
assert pad('aba', 'a') == '<a>b<a>'
assert pad('abcabc', 'a') == '<a>bc<a>bc'
assert pad('aaa', 'a') == '<a><a><a>'

余力があればtarget_charをtarget_strにした関数wrap2も作成せよ
wrap2関数は指定の文字列target_strをタグで囲む関数である
2020/12/16(水) 16:59:32.76ID:vjalvrwm
この手のやつだな
https://i.imgur.com/cW7zRfO.jpg
2020/12/16(水) 18:16:34.26ID:4lTbtOkg
>>98
haskell
(引数の順はhaskell風に変更)

iimport Text.ParserCombinators.Parsec

pad tgt = insBraket "<" ">" tgt

insBraket op cs tgt = id
. ( \( Right x ) -> x )
. parse ( makeP op cs tgt ) ""

makeP op cs tgt = let
mainP = pzero
<|> ( pzero
<|> ( try $ ( ( op ++ ) . ( ++ cs ) ) <$> ( string tgt )
<|> ( count 1 anyChar ) ) <> mainP )
<|> ( string "" )
in mainP

main = do
putStrLn $ pad "a" "aba"
putStrLn $ pad "a" "abcabc"
putStrLn $ pad "a" "aaa"
putStrLn $ insBraket "🎄" "🎅" "Christmas" "Merry Christmas!"
----
<a>b<a>
<a>bc<a>bc
<a><a><a>
Merry 🎄Christmas🎅!
101デフォルトの名無しさん
垢版 |
2020/12/16(水) 19:58:22.95ID:DkI2bGpO
>>98
この正規表現を関数にするのか?

IFxU2W - Online Perl Interpreter & Debugging Tool - Ideone.com
https://ideone.com/IFxU2W

$c = 'a';
$l="<";
$r=">";

while(<>){
s/$c/$l$c$r/g;
print;
}
2020/12/17(木) 14:22:39.99ID:bL0AsNrc
🎅ワロタ
103デフォルトの名無しさん
垢版 |
2020/12/18(金) 11:06:13.73ID:lt1DqoeP
お題
値のペアが複数入力されます
1列目の値でソートしてユニーク化し、2列目の値を出力してください
1列目の値が同じ時、2列目の値はソート後のインデックスが最も小さいもののみを出力してください

入力
c,e
b,c
c,f
b,d
a,b
c,g

出力
a,b
b,c
c,e
2020/12/18(金) 11:48:54.35ID:2oY35fJZ
> 1列目の値が同じ時、2列目の値はソート後のインデックスが最も小さいもの〜

と書かれてるがそのソート方法は

> 1列目の値でソート

としか書かれてない
これでは例えば
c,e
c,f
は出現順なのか、はたまた2列目の値も使って昇/降順にするのかわからない
2020/12/18(金) 11:55:17.73ID:f5tAtt/1
>>103

haskell 入力パーサなし

import Data.List

pairs = [
('c','e'),
('b','c'),
('c','f'),
('b','d'),
('a','b'),
('c','g')
]

f = id
. map head
. groupBy (\x y -> ( fst x ) == ( fst y ) )
. sort

main = mapM_ print $ f pairs
106デフォルトの名無しさん
垢版 |
2020/12/18(金) 12:09:30.98ID:lt1DqoeP
>>104
逆にどっちだと思います?
2020/12/18(金) 12:52:01.21ID:1RoKReGQ
出現順という言葉が使われていないから、出現順ではない。
2列目もソートすべき

ソートの仕方は書いていないので、文字列でよい
2020/12/18(金) 13:31:08.12ID:agZtfXny
勝手に決めるな
109デフォルトの名無しさん
垢版 |
2020/12/18(金) 14:23:00.18ID:A9pQAhpY
>>103
C++
入力を競プロぽく改変
https://ideone.com/CUTjOy

#include<iostream>
#include<map>
#include<set>
#include<string>
#include<vector>
#include<algorithm>

using namespace std;

int main() {
int N;
cin >> N;

map<string, set<string>> xs;

for(int i=0; i<N; i++){
string k, v;
cin >> k >> v;
xs[k].insert(v);
}

for_each(xs.begin(), xs.end(), [xs](auto& it){
cout << it.first << "," << *(xs.at(it.first).begin()) << endl;
});

return 0;
}
2020/12/18(金) 16:16:25.17ID:P9OguxeC
>>103
# # cat input
c,e
b,c
c,f
b,d
a,b
c,g


# # cat input | sort | perl -F"," -lane 'print unless $LAST eq $F[0]; $LAST = $F[0]'
a,b
b,c
c,e
2020/12/18(金) 18:24:57.63ID:udnU9JLz
>>103 bat
@(for %%a in ("c,e" "b,c" "c,f" "b,d" "a,b" "c,g") do @echo %%~a)|(cmd /v:on /s /c "for /f "tokens=1,2 delims=," %%b in ('sort') do @(if not "%%b"=="!s!" set "s=%%b" &echo %%b,%%c)")&pause
112デフォルトの名無しさん
垢版 |
2020/12/18(金) 19:01:11.88ID:Dh0d5aQR
お題: ランダムに生成されるバイナリツリーがある
ツリーのルートから見て最も左にあるノードと最も右にあるノードの位置を出力せよ
位置はツリーのルートが原点とする
x座標は原点から左に進むとマイナスになり、右に進むとプラスになる
y座標は原点から下に進むとプラスになるものとする
生成されるツリーは原点から下に向かって伸びていくものとする
生成されるツリーの最大の高さは8とする
出力例は↓のようになる

l = -3, 4
r = 5, 7
113デフォルトの名無しさん
垢版 |
2020/12/18(金) 21:17:47.26ID:lt1DqoeP
>>112
座標はこういう感じ?
https://light.dotup.org/uploda/light.dotup.org683510.png
2020/12/18(金) 22:39:29.15ID:Dh0d5aQR
>>113
そういう感じ
2020/12/18(金) 22:55:15.81ID:Dh0d5aQR
>>113
あとツリーの最大の横幅は原点から左右に8ずつで
116デフォルトの名無しさん
垢版 |
2020/12/19(土) 09:08:43.96ID:Hvq3yNww
>>103 J
a =: /:~ ',' & cutopen @ >cutopen stdin ''
f =: >@{. , ','&,@>@{:
smoutput f"1 a #~ ~: {. "1 a
2020/12/19(土) 09:49:26.96ID:x1EY5aRu
Jニキひさびさ
1189
垢版 |
2020/12/19(土) 14:32:22.06ID:gCQF7SSG
>>103 Perl5

@a = qw{c,e b,c c,f b,d a,b c,g};
$h{(/(\w)/)[0]} //= $_ for @a;
print "$_\n" for map{$h{$_}} sort keys %h;

実行結果
~ $ perl 19_103.pl
a,b
b,c
c,e
119デフォルトの名無しさん
垢版 |
2020/12/19(土) 18:39:10.13ID:gcxM+qzh
>>103
Java
https://paiza.io/projects/507wmTuYZu1G36mkuEX5sw
120デフォルトの名無しさん
垢版 |
2020/12/19(土) 20:00:26.12ID:gcxM+qzh
>>112
Java
https://paiza.io/projects/WYRetip28qMC9oZ-PveUyg?language=java
12189
垢版 |
2020/12/20(日) 03:24:48.64ID:zjFPqMXn
>>89

https://ideone.com/lQvahn
投稿があった、O(√)以外の方法もあるみたいなので、両方を載せておこう。
他方は、O(N)解法の最後の方の同じ数をまとめて計算するやり方。
O(√)解法より確実に計算量が多い。
2020/12/20(日) 14:30:37.82ID:ocWFq0h7
>>98
Kotlin 及び Kotlin script

target_char の場合

fun wrap(text: String, target_char: Char, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_char.toString(), "$tag_left$target_char$tag_right")

target_str の場合

fun wrap(text: String, target_str: String, tag_left: Char = '<', tag_right: Char = '>') = text.replace(target_str, "$tag_left$target_str$tag_right")

要するに Java の String クラスの replace() 使ってるので、肝心な部分は何も考えてない。
tag_left, tag_right はデフォルト値として '<', '>' を指定しているので呼び出す側で指定しなければこれになる。

もう少しだけ Kotlin らしくするとしたら拡張関数にするぐらいかな。

fun String.wrap(target_str: String, tag_left: Char = '<', tag_right: Char = '>') = replace(target_str, "$tag_left$target_str$tag_right")

これで String クラスのメソッドになるので "abcabc".wrap("bc") が "a<bc>a<bc>" を返すようになる。
123デフォルトの名無しさん
垢版 |
2020/12/20(日) 17:39:53.62ID:ocWFq0h7
>>98
C
https://paiza.io/projects/bxoqxh2B8It2pvpM7tl1EA

ちゃんと assert() で色々テストするようにした。
2020/12/20(日) 18:33:53.02ID:1LcS4Wc6
>>98 JavaScript
const wrap = (text, target_str, tag_left='<', tag_right='>') => text.replace(RegExp(target_str, 'g'), tag_left + target_str + tag_right);
2020/12/21(月) 19:30:10.34ID:Mnipwtco
>>112 Python
https://paiza.io/projects/pwJH8XQVozwZ5SorTfF0TQ
2020/12/23(水) 21:01:46.74ID:IGuwyxwv
[お題] 和が2021の倍数
 2021000以下の素数を昇順に並べた数列がある。
 [2, 3, 5, ..., 2020979, 2020999] 項目数:150399

 この数列より 空でない連続する部分列を P とする。
 (全てのPの選び方はNCR(150399+1, 2) = 約113億通りある)
 Pの和が2021の倍数となるのは何通りあるか。
 
 [8081,8087] [3361, 3371, 3373] [2011, 2017, 2027, 2029] 等が該当するP

※無駄に素数を乱数代わりに使った、一発正解問題
※実行時間は素数生成を含めて、3秒以内
2020/12/23(水) 23:02:15.25ID:PQyv7tz0
>>126
https://ideone.com/0tWRM5
あってるかどうか分からないけど
2020/12/23(水) 23:12:10.85ID:zWDUqRJW
>>126 C++
https://ideone.com/hIUSf1
2020/12/26(土) 03:16:19.16ID:4qx7gBot
>>127
これ実際配列回す必要ないんだな
https://ideone.com/3Wo9aF
130デフォルトの名無しさん
垢版 |
2020/12/28(月) 03:25:00.14ID:S5vNYbFH
>>71
Kotlin
https://paiza.io/projects/og3llL4-FChIJZQFqR8FRQ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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