プログラミングのお題スレ 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/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
131デフォルトの名無しさん
垢版 |
2020/12/29(火) 19:09:26.95ID:v9CXwjD7
>>103
Kotlin script

pair.csv にその入力を入れておいてから実行する。

以下は kotlinc コマンドで REPL にして直接入力して実行した時のコピー

>>> java.io.File("pair.csv").bufferedReader().lineSequence().map { it.split(',') }.sortedBy { it[0] }.fold(mutableListOf<List<String>>()) { a, c -> if (a.size == 0 || a[a.lastIndex][0] != c[0]) a.add(c); a }.forEach { println(it) }
[a, b]
[b, c]
[c, e]
>>>

2列目については考慮していないので sortBy が中でやっているソートのアルゴリズムが変われば変わるかも知れない。
132デフォルトの名無しさん
垢版 |
2020/12/29(火) 19:20:00.18ID:v9CXwjD7
a[a.lastIndex][0] の部分は a.last().first() と書いても同じだった。
この方が a.lastIndex 呼ばない分だけ無駄が少ないかも知れない。
(でもコンパイラが中で適当に最適化して同じになるかも知れないのでどうでも良いかな?)
2020/12/29(火) 19:38:06.80ID:akpvTOL3
お題: 半径dの円にぴったり内接する正n角形を描画せよ。
2020/12/29(火) 20:28:59.04ID:0LWFOCUq
ぴったり内接とは?
ぴったりじゃない内接を教えてください
2020/12/29(火) 20:34:46.26ID:bi9fPEgs
ぴったり内接ってなんだよって言おうとしたらすでに言われててくっそワロタ
136デフォルトの名無しさん
垢版 |
2020/12/29(火) 20:53:58.41ID:2gsaGKLd
量子化誤差を最小化した演算を求めているのでは?
我々は実数を扱えないので。
137デフォルトの名無しさん
垢版 |
2020/12/29(火) 21:00:08.04ID:2gsaGKLd
n角形をなす線分が円の外側に飛び出さないよう注意を与えているのかもしれない。

実数を扱えない以上、注意する必要が有る。
ということを示唆するのかも。
138デフォルトの名無しさん
垢版 |
2020/12/29(火) 21:24:43.03ID:0mXsQANw
>>133
processing

void setup(){
size(400, 400);
float d=200;
float r=d/2;
int n=7;
PVector c = new PVector(width/2, height/2);
ArrayList<PVector> p = new ArrayList<PVector>();
for(int i=0; i<n+1; i++){
float theta = (TWO_PI*i)/n;
PVector t = new PVector(r*cos(theta),r*sin(theta));
t.add(c);
p.add(new PVector(t.x, t.y));
}

ellipse(c.x, c.y, d, d);
for(int i=0, j=1; i<n+1; i++, j++, j%=n){
line(p.get(i).x, p.get(i).y, p.get(j).x, p.get(j).y);
}
}
139デフォルトの名無しさん
垢版 |
2020/12/29(火) 21:27:39.14ID:0mXsQANw
画像
https://dotup.org/uploda/dotup.org2345854.png
2020/12/30(水) 13:44:24.04ID:tmlECeYE
[お題] MarkdownのParagraph/BlockQuoteをパースしHTMLを生成してください

入出力例(1)
paragraph
> block quoted paragraph
↑入力 / ↓出力
<p>paragraph</p>
<blockquote>
<p>block quoted paragraph</p>
</blockquote>

入出力例(2)
> hoge
> > nested piyo1
> > nested piyo2
> fuga
↑入力 / ↓出力
<blockquote>
<p>hoge</p>
<blockquote>
<p>nested piyo1</p>
<p>nested piyo2</p>
</blockquote>
<p>fuga</p>
</blockquote>
2020/12/30(水) 17:24:14.94ID:yfdsF4Me
quote に入れるのは"> "の繰り返しのみで桶?
2020/12/30(水) 20:26:27.99ID:nFum3l+K
>>141
はい、blockquoteは
"> > "のように"> "の繰り返しで始まる行としてください。
簡単のために">>"のような入力は考慮不要として下さい。
143デフォルトの名無しさん
垢版 |
2020/12/30(水) 21:20:22.80ID:YQYWYr/5
お題
文字列を数値文字参照に変換してください

入力: 𝚙𝚛𝚘𝚐𝚛𝚊𝚖𝚖𝚒𝚗𝚐 𝚌𝚑𝚊𝚕𝚕𝚎𝚗𝚐𝚎𝚜
出力: &#120473&#120475&#120472&#120464&#120475&#120458&#120470&#120470&#120466&#120471&#120464&#32&#120460&#120465&#120458&#120469&#120469&#120462&#120471&#120464&#120462&#120476
2020/12/30(水) 21:32:08.73ID:EIqnK2Zk
呪いか?
145デフォルトの名無しさん
垢版 |
2020/12/30(水) 21:48:07.53ID:YQYWYr/5
>>140
Java
https://paiza.io/projects/oEOq7Z5F5-6RgNcodNYX-w
146デフォルトの名無しさん
垢版 |
2020/12/30(水) 21:49:19.71ID:p/cFtMuj
>>143 Java
https://ideone.com/9V8dyv
147デフォルトの名無しさん
垢版 |
2020/12/30(水) 21:58:00.23ID:p/cFtMuj
>>143 JavaScript
https://ideone.com/d62aQ9
148デフォルトの名無しさん
垢版 |
2020/12/30(水) 22:36:28.16ID:p/cFtMuj
>>146は不正なUnicode文字列の入力を考慮していませんでした
高位サロゲートが低位サロゲートを伴わず単独で現れていると、その直後の文字が抜け落ちます
つまり
"<\ud83c>" → "&#60;&#55356;&#62;" ではなく
"<\ud83c>" → "&#60;&#55356;" になってしまう

修正版: https://ideone.com/bz8cMe
2020/12/31(木) 01:13:45.28ID:pjMyqahK
すごいどうでもいいことなんだけど、
ArrayListってどういうデータ構造なの?
ArrayなのそれともListなの?
おじさんわからないよ。。
150デフォルトの名無しさん
垢版 |
2020/12/31(木) 12:16:39.07ID:RvVxXqDc
>>149
お題
array listを実装してください

次の要項を満たしてください
・add, removeができること
・サイズが可変であること
・序数で要素にアクセスできること
・要素へのアクセスの計算量はO(1)もしくはO(log n)であること
2020/12/31(木) 15:29:53.91ID:wqjSMEXG
>>150
add, remove は任意箇所の挿入と一要素削除で桶?
2020/12/31(木) 19:05:54.91ID:aMBMdmtQ
>>140
haskell
https://ideone.com/OfqVap
2020/12/31(木) 21:07:25.40ID:pjMyqahK
>>150
それがArrayListの要件? ありがとう
154デフォルトの名無しさん
垢版 |
2020/12/31(木) 21:26:18.83ID:RvVxXqDc
>>153
実装して
2021/01/01(金) 13:09:20.23ID:8TPOGttB
>>154
>>150ってただの可変長配列じゃないの?
2021/01/01(金) 13:38:10.37ID:8TPOGttB
>>150 Python
https://paiza.io/projects/lZESfj2Dqo1crUXKIb_48w

いまいち合ってるか自信がない
2021/01/01(金) 14:38:54.78ID:8TPOGttB
>>150 C++
https://paiza.io/projects/vn9r5dit-omrT_uOuvIC2A
158デフォルトの名無しさん
垢版 |
2021/01/02(土) 03:34:41.82ID:1MFl5wrQ
>>143
Kotlin

https://paiza.io/projects/T9yJGxVuxj1Tg0tWh383SQ
2021/01/02(土) 15:11:50.57ID:gpIsEKdn
>>150
この問題の要件は

>・要素へのアクセスの計算量はO(1)もしくはO(log n)であること

だけでいいのかな?
コレだけでいいならデータの更新時に常に深さが±1の二分木に納直せば必ず参照の計算量はO(log(n))になるし、毎回ソートして格納し直せば参照の(indexによる)計算量はO(1)になる希ガス
データの更新時の制限は全くないでいいのかな?
2021/01/02(土) 21:54:03.91ID:YfZD//vW
メモリが安くなったとはいえ
やはりメモリの制限は必要では?
無尽蔵にあるわけではないので
2021/01/04(月) 22:40:39.15ID:RRkyDjZk
お題: 四方に広がる無限のサイズの方眼紙があって、1マス1マスに一個のアラビア数字を一度だけ記入できる。
方眼紙に記録したデータの一部は「仮想画面」に出力できる。
マス(x, y)に数字dを記入することを「P(x, y, d)」と表すことにする(x, yは任意の整数)。
(a) 3桁の自然数が2つ与えられる。その足し算の筆算を実演するアルゴリズムを出力するプログラムを書け。
(b) 任意の自然数が2つ与えられる。(以下略)
2021/01/04(月) 22:51:58.92ID:RRkyDjZk
補記。

マス(x, y)にある数字を「P(x, y)」と表すことにする。マス(x, y)に数字がなければP(x, y)==0とする。

また、マス(x, y)に数字がなければE(x, y)==1とし、数字があればE(x, y)==0とする。
2021/01/05(火) 22:28:39.68ID:JVpboZJX
お題: ランダムな数列を生成せよ
数列の長さは4 <= len <= 20とし、これもランダムとする
2021/01/05(火) 22:36:13.47ID:3bhht3A2
>>163 Ruby 3.0

p Array.new(rand(17) + 4){rand * 1e32}
2021/01/06(水) 10:45:40.05ID:0+tWp1dI
>>163 js
const rand = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a
const range = (n) => [...Array(n).keys()]
range(rand(4, 20)).map(Math.random)
2021/01/06(水) 10:46:52.82ID:0+tWp1dI
ruby 3 はどのくらい変わったの
167デフォルトの名無しさん
垢版 |
2021/01/06(水) 14:12:34.77ID:0ypUbOKE
>>163
Kotlin または Kotlin script

以下は kotlinc コマンドで REPL で実行した時のコピー。
(先頭の >>> はプロンプト)

>>> (1..(4..20).random()).map { kotlin.random.Random.nextInt() }
res0: kotlin.collections.List<kotlin.Int> = [1712097059, 2034192723, -1232228362, 634194098, 1788814029, -1878195330, -2043751487, 933285281, 1116738696, -934057871, -1657983454, -1761832713, -1836302098, -902578867, -1306790359, 1824207694, 386095401, -389307033, 380242891, -2028767653]
>>>

実行結果は何処にも出力しようとしてしていないが REPL なので自動で出力されている。
2021/01/06(水) 19:38:44.63ID:ySlgJWsk
>>163 Ruby
# こんな意味だと解釈した
puts ( '%020b' % rand(1<<20) )[ 0, 4+rand(17) ] # ( 2進) '0000'-'00000000000000000000'..'1111'-'11111111111111111111'
puts ( '%020d' % rand(1e20) )[ 0, 4+rand(17) ] # (10進) '0000'-'00000000000000000000'..'9999'-'99999999999999999999'
169デフォルトの名無しさん
垢版 |
2021/01/06(水) 23:58:46.35ID:N14y+/j1
お題
アルファベットの開始の文字、アルファベットの終了の文字を
入力としてうけとり下記のように文字列を出力してください

入力: a,k
出力:
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
2021/01/07(木) 00:11:25.06ID:bv7Qweso
意味不明な途中省く
sh & perl5
echo "a,k" | perl -lane 'm/(\w),(\w)/; print ($1..$2)'
abcdefghijk
171デフォルトの名無しさん
垢版 |
2021/01/07(木) 00:20:29.22ID:iqGL0Mlk
省いちゃダメなの!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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