X



プログラミングのお題スレ Part19
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0004デフォルトの名無しさん
垢版 |
2020/11/30(月) 01:19:09.34ID:7QMEfWyp
>>1
>>http://mevius.2ch.net/test/read.cgi/tech/1594702426/995
bat
:: 配列中の小計の最大値を取る区間A-Bを出力。0を閾値にしているので正の最大値限定
@echo off &setlocal enabledelayedexpansion
set args=-2,1,-3,4,-1,2,1,-5,4
set /a S=N=i=0
for %%a in (%args%) do (
set /a i+=1
set /a N+=a[!i!]=%%a
if !N! GTR !S! set /a S=N, B=i &if not defined A set /a A=i
if !N! LSS 0 set /a N=0 &set A=
)
for /L %%i in (%A%,1,%B%) do set R=!R!,!a[%%i]!
set R=[%R:~1%]
echo %R%
pause&exit /b
0008デフォルトの名無しさん
垢版 |
2020/11/30(月) 03:40:18.85ID:r8rQ87Qr
サブ配列とは、連続している領域の事か?
どこかで、こういう問題を見た事があるような気がする

これで、配列の前後がつながっている、循環バージョンもやってみれば?
0009デフォルトの名無しさん
垢版 |
2020/11/30(月) 11:41:04.85ID:6DeIDSHb
前スレ>>995 Perl5

@a = qw[-2 1 -3 4 -1 2 1 -5 4];
sub f {
 my ($i, $j) = @_;
 return $t[$i][$j] if defined $t[$i][$j];
 $t[$i][$j] = $a[$i] + ($i < $j ? f($i+1, $j) : 0);
}
for $i (0..$#a) {
 for $j (reverse 0..$#a) {
  my $v = f($i, $j);
  if (!defined($max) or $max < $v) {
   $max = $v;
   ($s, $e) = ($i, $j);
  }
 }
}
print "@a[$s..$e]\n"


~ $ perl 18_995_sumsubarry_dp.pl
4 -1 2 1
00109
垢版 |
2020/11/30(月) 21:53:55.46ID:Nq7K7NhK
>>9 Bugってんじゃん、解は変わらないけど無駄なとこ計算する

× for $j (reverse 0..$#a) {
   ↓
○ for $j (reverse $i..$#a) {


ついでっちゅうわけじゃないけどnaive版 Perl5

@a = qw[-2 1 -3 4 -1 2 1 -5 4];
use List::Util 'sum';
for $i (0..$#a) {
 for $j (reverse $i..$#a) {
  my $v = sum(@a[$i...$j]);
  if (!defined $max or $max < $v) {
   $max = $v;
   ($s, $e) = ($i, $j);
  }
 }
}
print "@a[$s..$e]\n";

実行
~ $ perl 18_995_sumsubarry_naive.pl
4 -1 2 1
0011デフォルトの名無しさん
垢版 |
2020/12/01(火) 03:38:48.56ID:G7RpB3vG
前スレ>>971

前スレ 994 の Java のやつを見て Kotlin script に変換。

java.time.DayOfWeek.values().map { it.name.toLowerCase().capitalize() }.forEach(::println)

991 は java.text.DateFormatSymbols 使ったから順序を変える必要があったが
java.time.DayOfWeek 使えばその必要なかったんだな。
0012デフォルトの名無しさん
垢版 |
2020/12/01(火) 04:25:32.84ID:sHsQRN1l
前スレ971 Go言語
package main

import "fmt"
import "time"

func main() {
for i := 1; i < 8; i++ {
t, _ := time.Parse("2006/01/02" , fmt.Sprintf("0001/01/%02d", i))
fmt.Println(t.Weekday())
}
}
0015デフォルトの名無しさん
垢版 |
2020/12/03(木) 08:11:48.55ID:fc8MC3E0
大半のお題がどっかで既出だろう。
0019デフォルトの名無しさん
垢版 |
2020/12/04(金) 02:56:19.58ID:2+VKdPy1
蟻人間
クソスレ立てて
一人芝居
即効バレて
自演失敗

作ろう!ウェブアプリ開発コンテスト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:???
トリップそのままとか斬新な自演ですね(笑)


一人ママゴト楽しい?
0023蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/12/04(金) 03:31:18.74ID:iyroy572
この番組は、殺伐とした5ちゃんねるにネタとうるおいをお届けする蟻人間とご覧のスポンサーの提供でお送り致します。


___提_供___


__蟻_人_間__
0024デフォルトの名無しさん
垢版 |
2020/12/04(金) 19:37:28.84ID:5zEeUUrS
お題
格子点上にH×Wの矩形がある。
この矩形の辺上の格子点から3点を選んで三角形を作る。
三角形の作り方は何通りあるか?

[例]
H=1, W=1 => 4
H=2, W=3 => 110
H=987, W=654 => ?
0029デフォルトの名無しさん
垢版 |
2020/12/05(土) 00:45:26.18ID:xmmvLeAb
H=2,W=3だと200じゃないの

0≦x≦3, 0≦y≦2内の格子点として
格子点から3点選ぶ選び方は12C3=220組
同一直線上に並ぶものは
x=0,1,2,3上に並ぶものが1組ずつで4組
y=0,1,2上に並ぶものが4組ずつで12組
x+y=3,4, x-y=0,1上に1組ずつで4組
よって同一直線上に並ばない3点の組みは200組

な気がする
0031デフォルトの名無しさん
垢版 |
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
じゃないの?
0035デフォルトの名無しさん
垢版 |
2020/12/05(土) 09:15:41.52ID:9/0cDzrv
コンビネーションって高校じゃなかったっけ?
まあ、31は24と30の反論になってないから(むしろ論を補強してる)、
意味がよく分からない指摘だというのは同意。
0036デフォルトの名無しさん
垢版 |
2020/12/05(土) 09:26:57.24ID:e3dDslST
イヤ、だってH=987, W=654の時どうしますか?
がお題だけど
こコレ
「まともに3282C3=5,886,638,960通りから直線に並ぶ場合を抜くとどえらい計算になります。どうしますか?」
という意味にしか見えないんけど
コレが辺上だけじゃなくて内点も走るならともかく、辺上しか走らないならどうしますかもへったくれもない
0037デフォルトの名無しさん
垢版 |
2020/12/05(土) 09:32:49.97ID:wyyz8Yxy
>>36
ああ、そういう文脈で言ってたのね
ただ問題文で辺上って言われてるし、しかも2x3の例からもそれは明らかなんで
ぱぱぱっと計算して終わりで良いんじゃないの
0039デフォルトの名無しさん
垢版 |
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
0042デフォルトの名無しさん
垢版 |
2020/12/06(日) 04:56:07.06ID:KfTg6Pxo
マウンティングのとりあい、カッコ悪い
0045デフォルトの名無しさん
垢版 |
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 -> ???
0048デフォルトの名無しさん
垢版 |
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
0051デフォルトの名無しさん
垢版 |
2020/12/07(月) 14:21:20.37ID:8Ddysj0U
お題
表が連続する長さの平均を求めてください

入力: 裏裏表裏裏表裏裏裏表裏裏裏表表裏表裏裏表裏裏裏裏表表表表表裏表表裏裏表裏表表裏表表表表表裏裏裏裏裏表表表表裏表表表表裏表表表裏表表表裏裏表裏裏表表裏裏表裏表表表裏裏裏裏裏表表表表表裏表表裏表裏裏表裏表
0052デフォルトの名無しさん
垢版 |
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
0053デフォルトの名無しさん
垢版 |
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
0054デフォルトの名無しさん
垢版 |
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
いわゆるスクレイピングって言う技術だけど、それ以上のことがしたいんだ。

ホームページの構成要素を破壊するような動画を作りたい。まあ、実際に破壊する訳じゃないけど、ハッカーになりたい子どもたちの娯楽として役に立つらしい。
0059デフォルトの名無しさん
垢版 |
2020/12/08(火) 15:44:35.89ID:jRmhdWmE
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13212452128
なぜですか?

質問者からのお礼コメント
小学生でもわかるような回答ではなく、なぜそうなのかも回答できないと社会人として微妙ですよ。
わかる箇所だけ答えるのはニワカです。
0061デフォルトの名無しさん
垢版 |
2020/12/08(火) 22:48:35.65ID:pGXopNTt
ヤフー知恵袋スマホで見たらどこがサイト本体なのかわからねえなゴミ袋かよ
0062デフォルトの名無しさん
垢版 |
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行にする方法が思いつかなかった
0063デフォルトの名無しさん
垢版 |
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)
0065デフォルトの名無しさん
垢版 |
2020/12/10(木) 18:41:01.74ID:WBenXu2r
書き込みミスったすまん
print((lambda a: sum(a) / len(a))([len(x) for x in input().split("裏") if x != ""]))
0068デフォルトの名無しさん
垢版 |
2020/12/11(金) 12:19:49.95ID:OZejrzeq
>>51 Python
print((lambda a: a.count("表")/(a+"裏").count("表裏"))(input()))
0071蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/12/12(土) 21:23:14.60ID:Tjq2nQZU
お題:
プログラム言語X1では32ビットの符号なし整数と32ビットの符号付き整数が使える。
しかし、プログラム言語X2では32ビットの符号なし整数が使えず、32ビットの符号付き整数が使える。
このままではX1からX2への移植が困難である。
そこで、X2において与えられた32ビットの整数を符号なしと見なした値を10進数文字列化せよ。
0072デフォルトの名無しさん
垢版 |
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:???
トリップそのままとか斬新な自演ですね(笑)


一人ママゴト楽しい?
0073デフォルトの名無しさん
垢版 |
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
いわゆるスクレイピングって言う技術だけど、それ以上のことがしたいんだ。

ホームページの構成要素を破壊するような動画を作りたい。まあ、実際に破壊する訳じゃないけど、ハッカーになりたい子どもたちの娯楽として役に立つらしい。
0074デフォルトの名無しさん
垢版 |
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)…
0079蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/12/13(日) 08:24:11.25ID:zFOj0dh9
お題:
符号なし演算ができない言語X2において、2個の32ビットの符号付き整数x, yがあたえられる。x, yを符号なし整数x', y'と見なしたときの比較演算 x' < y' の値を求めよ。
0081蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/12/13(日) 08:38:30.36ID:zFOj0dh9
>>78
素晴らしい回答ですね。少し簡単に解説してくれませんか?
出題者がおバカですみません。
0082デフォルトの名無しさん
垢版 |
2020/12/13(日) 09:01:54.89ID:LzHmnmLv
えっ??
頭おかしいだけかと思ってたらホントに馬鹿なんだなw
右シフトとマスクでマイナス値は正の値に直す。右シフト1で1/2
更に5で割って1/10。これで10の位から上の値になる
上の割る5で切り捨てられた余りの2倍(左シフト1)と右シフトで捨てられたLSBを足して1の位
0085蟻人間 ◆T6xkBnTXz7B0
垢版 |
2020/12/13(日) 15:18:39.67ID:zFOj0dh9
>>84
ちょっと動作が遅いね。どちらも正だった場合は普通に比較できるんだから、マイナスありとなしで場合分けできるんじゃね。
0088デフォルトの名無しさん
垢版 |
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
0089デフォルトの名無しさん
垢版 |
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
0090デフォルトの名無しさん
垢版 |
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つだけを選んでもいい)
0091デフォルトの名無しさん
垢版 |
2020/12/14(月) 16:58:04.24ID:JA72696N
>>89
エラトステネスっぽく√Nまでで約数を考えていけばいいかな?
それ以上は対称性から*2すればよくて、二乗数の時だけ注意

それで
B以下の約数の個数の和-A未満の約数の個数の和
をする
0095デフォルトの名無しさん
垢版 |
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
0096デフォルトの名無しさん
垢版 |
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
0097デフォルトの名無しさん
垢版 |
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
0098デフォルトの名無しさん
垢版 |
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をタグで囲む関数である
0100デフォルトの名無しさん
垢版 |
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🎅!
0101デフォルトの名無しさん
垢版 |
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;
}
■ このスレッドは過去ログ倉庫に格納されています

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