X



プログラミングのお題スレ Part15
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/07/28(日) 19:39:57.54ID:832c/ukY
プログラミングのお題スレです。

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

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

※前スレ
プログラミングのお題スレ Part14
http://mevius.5ch.net/test/read.cgi/tech/1558168409/
0799デフォルトの名無しさん
垢版 |
2019/10/17(木) 22:10:55.40ID:lFPJOlZz
5chなんて無駄にマウント取るやつばっかりだから、コテつけてごちゃごちゃ言っても時間の無駄だぞ
袋叩きにあうだけ
0800デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:24:53.30ID:RRRrLQ0r
自演擁護乙。
0801蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/18(金) 23:48:51.61ID:981JMrNY
気を取り直していくぞ。

お題: 現在時刻のアナログ時計のSVG画像を出力せよ。丸い外枠と短針と長針だけでいいが、可能なら秒針と文字盤も表示せよ。
0802デフォルトの名無しさん
垢版 |
2019/10/19(土) 02:49:07.69ID:PZMkyc4n
暇な人向けのお題:なるべく公正な多数決システムを考案せよ。
サンプル:https://ideone.com/Ayr1Az

上記は多数決して、3人サンプルして、じゃんけんする。というプロセスで導き出される。
0803デフォルトの名無しさん
垢版 |
2019/10/19(土) 18:44:38.13ID:PZMkyc4n
暇な人向けのお題II!
9x9のセルが与えられる。そのセルは磁石である。
真空状態での磁気シミュレーションをして量子コンピュータに近似せよ。

一つの万能ではない方針。
1パス目で相互作用を足し込む。
2パス目で相互作用の蓄積を作用素数で割る。

ライフゲームがヒントになるかもしれない。
0805デフォルトの名無しさん
垢版 |
2019/10/21(月) 08:37:49.94ID:HKPBZHRe
お題
入力された正整数を漢数字表記にして出力せよ
10の何乗まで対応するかは任せる

514 -> 五百十四
131072 -> 十三万千七十二
90010 -> 九万十
0806デフォルトの名無しさん
垢版 |
2019/10/21(月) 09:41:08.94ID:5iZNWaQ2
>>805 python

%pip install kanjize
from kanjize import int2kanji, kanji2int
print(int2kanji(123456789))
# 一億二千三百四十五万六千七百八十九
0807デフォルトの名無しさん
垢版 |
2019/10/21(月) 09:45:18.93ID:HKPBZHRe
>>806
そんなのあるのか…
0809デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:31:36.37ID:W7vxtZcq
じゃあunicodeにシュメル文字が収録されたので、それで。
フフフ、ライブラリなんてあるまい
0810デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:35:10.39ID:ZDMJHUdn
>>809 Python

%pip install sumerianize
from fumerianize import int2sumerian, sumerian2int
print(int2sumerian(123456789))
# ????????????????????????
0811デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:39:33.90ID:n9VxwF2L
あんのかよワロタw
0814デフォルトの名無しさん
垢版 |
2019/10/21(月) 13:50:52.74ID:hy8thByE
>>805
それと同じお題を以前出した覚えがある。
まあいいか。スレ見に来てる人も変わってるだろうし。
0815デフォルトの名無しさん
垢版 |
2019/10/21(月) 16:23:33.20ID:5iZNWaQ2
>>813 表示できていないのは見る人がフォントを入れていないからだろ。 不思議でも何でもない。
0816デフォルトの名無しさん
垢版 |
2019/10/21(月) 16:37:23.10ID:lI38JOob
>>812
それと同じお題も過去にあったような。双方向で変換ってやつかな。

まだやったことない人なら頭の体操(またはボケ防止)にはなるからやってみると良いと思う。
0818デフォルトの名無しさん
垢版 |
2019/10/21(月) 20:27:05.91ID:niRnsl0k
実はcpanからお題を決めてるんじゃないかなというのがしばらく続いてたと思う
0821デフォルトの名無しさん
垢版 |
2019/10/21(月) 23:57:16.86ID:PlH6WJHg
適当な整数を入力してそれが円周率の何桁目で出てくるか出力せよ。

何桁まで対応するかは任せる。
0823デフォルトの名無しさん
垢版 |
2019/10/22(火) 12:07:39.33ID:rZX4V0+4
>>821 Perl5、小数点以下10000桁まで一番最初に見つかった桁を出力

$d = 893; # 適当な整数
use Math::BigFloat try => 'GMP,Pari';
$pi = Math::BigFloat->bpi(10000);
#print "$pi\n";
$pi =~ s/\.//; # 小数点「.」を除去
$i = index $pi, $d;
print $i < 0 ? "無し\n" : "小数点以下 $i 桁目\n";


実行結果
~ $ perl 15_821.pl
小数点以下 999 桁目
0825デフォルトの名無しさん
垢版 |
2019/10/22(火) 12:40:06.09ID:E1qN728j
じゃあNP問題だと証明しろよ
0826デフォルトの名無しさん
垢版 |
2019/10/22(火) 13:54:00.39ID:rZX4V0+4
>>823
一度にある桁まで求めておいてから検索するよりも、
ガウス=ルジャンドルのアルゴリズムまたはラマヌジャンの式を使うなどして
下の桁まで収束を進めながら検索してゆく方が面白かったかな
0828デフォルトの名無しさん
垢版 |
2019/10/22(火) 19:15:47.41ID:/ue0mcGS
ぬるぽ問題
0829デフォルトの名無しさん
垢版 |
2019/10/22(火) 19:35:05.18ID:JpCkwFny
じゃあそれにしよう。

適当な文章を入力して縦横斜めにぬるぽの3文字が入っていればガッと出力する。
ひらがなだけにするかそれ以上の対応をするかは任せる。
0832デフォルトの名無しさん
垢版 |
2019/10/23(水) 20:25:56.13ID:LcbXQT4h
お題:整数配列の奇数要素のみをソートした配列を返す処理を書いてください

入力例:[6, 5, 4, 3, 2, 1]
出力例:[6, 1, 4, 3, 2, 5]
0834デフォルトの名無しさん
垢版 |
2019/10/23(水) 20:53:23.91ID:65oBAktI
奇数だけ抜き出した配列作成→ソート→元の配列の奇数の位置にソートした配列の要素を入れてくだけで良さそう
0837デフォルトの名無しさん
垢版 |
2019/10/23(水) 22:37:14.26ID:PSSarBFK
>>832 Perl5

@s = (6, 5, 4, 3, 2, 1);
@ix = grep{$s[$_] & 1} keys @s;
@iy = sort{$s[$a] <=> $s[$b]} @ix;
@s[@ix] = @s[@iy];
use Data::Dump 'dump';
print dump @s;

実行結果
~ $ perl 15_832_sort_odd_elem.pl
(6, 1, 4, 3, 2, 5)
0838デフォルトの名無しさん
垢版 |
2019/10/24(木) 08:28:31.82ID:5RTZY+Zo
>>832 J
f =: 3 : 0
a =. I. 2 | y
b =. /:~ a { y
b (a) } y
)

f 6 5 4 3 2 1
6 1 4 3 2 5
0841デフォルトの名無しさん
垢版 |
2019/10/24(木) 12:04:34.69ID:yRKIAYVV
>>839
[6, 5, 3, 2, 1] とかだと結果が間違っている上、nilとか足されてひどいことになるyo?

p [6, 5, 3, 2, 1].partition.with_index{|_, i| i.even?}.then{|e, o| e.zip(o.sort).flatten}
# => [6, 2, 3, 5, 1, nil]

正しくは => [6, 1, 3, 2, 5]
0843デフォルトの名無しさん
垢版 |
2019/10/24(木) 16:54:57.81ID:ZpMPcQ0n
>>842
配列コピーしない場合奇数が出たらその後の要素を見て一番小さい奇数と要素の交換でもどう?
配列のコピー不要や。
0846デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:26:52.21ID:GgLEjF73
アプリ作成したいのですが、素人なのでどなたか相談に乗ってください。

飲み物が入ったコップを定期的に重量を量り、
そのデータを無線で受信してサーバーで記録し
プロットするアプリを作りたいです。

またRaspiなどのPCはなしで作りたいのですが
組み込みPC?を使わないとできませんか?

またこういったアプリに適した言語などありますでしょうか?
0847デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:32:12.57ID:D+sRag4r
プログラム部分はたいしたことがないとおもうのだが
装置、ハードのほうが大事だろ
そもそもプログラムもハード依存するかもしれないし
特に既成品なら
0848デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:48:27.50ID:GgLEjF73
ありがとうございます。
ハードウェアの知識が全く無いため困っています。
飼い猫のために水の量を管理してあげたいんです。

下記のような組み合わせで出来そうでしょうか?

ADコンバータ
KKHMF HX711モジュール 秤量センサー 24位精度ADモジュール 圧力センサーモジュール

重量センサー
uxcell 計量ロードセル アルミ合金材質 500g計量 電子天秤 有線 計量センサー
0849デフォルトの名無しさん
垢版 |
2019/10/25(金) 03:57:48.67ID:uJcHRouN
やり方わからないんだけど、カメラで撮影して映像解析して量が分かるのであればスマホやタブレット用のアプリでできそうだよね。
(PCに小さいカメラ付けても良いが)。
0853デフォルトの名無しさん
垢版 |
2019/10/25(金) 11:49:06.01ID:C/odSq3f
>>832
Ruby で、

input_ary = [ 6, 5, 4, 3, 2, 1 ]
odd_ary = [ ]; index_ary = [ ]

input_ary.each_with_index do |num, idx|
if num.odd?
odd_ary.push num
index_ary.push idx
end
end

odd_ary.sort! # ソート

# 同時に、複数の配列をループする
index_ary.zip( odd_ary ).each { |idx, num| input_ary[ idx ] = num }
p input_ary
0854デフォルトの名無しさん
垢版 |
2019/10/25(金) 12:30:51.02ID:GgLEjF73
>> 849 , 850, 851, 852
情報ありがとうございます。

スレチだったみたいで申し訳ないです。
センサーありきなので、Raspiは使わないと思うのですが
板覗いてみます。
0856デフォルトの名無しさん
垢版 |
2019/10/26(土) 01:38:30.03ID:o5w2ifn2
お題: 端末上で(´・ω・`)を端から端まで移動し、往復させよ
ただし、端についたら(´・ω・`)は増幅し(´・ω・`)(´・ω・`)になる
同様に再び端についたら(´・ω・`)(´・ω・`)は増幅し(´・ω・`)(´・ω・`)(´・ω・`)になる
左右に移動できなくなる又ははみ出す場合は逆に(´・ω・`)を減らしていき、最終的に(´・ω・`)を消滅させよ
0857デフォルトの名無しさん
垢版 |
2019/10/26(土) 06:24:17.44ID:2eoY+VbT
お題: Unicode 1 文字を与えると East Asian Width に従った属性値を返す関数を作成し、その関数に対して任意の文字を与えてテストするプログラムを作れ。
返す属性値の F, H, W, Na, A, N は文字列でも良いし対応する数値でも良いし enum のような(またはCなら #define されている)名前でも良い。
East Asian Width の一覧は下記URLのテキストの内容を使用する。これを最初に読んで初期化するように作っても良いし、最初からプログラムに適した形式で埋め込まれていても良い。
http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt
参考: 東アジアの文字幅
https://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85
0858デフォルトの名無しさん
垢版 |
2019/10/26(土) 07:11:59.41ID:I0XoRu/q
お題:>>832 に「偶数要素は2で割って降順ソート」という要件を追加してください
すでに回答済みの場合は最少限の変更でのご対応で腕(もしくは言語のポテンシャル)を見せてください
0860デフォルトの名無しさん
垢版 |
2019/10/26(土) 11:01:29.07ID:/Rj6VhaF
>>832 Pharo/Squeak Smalltalk

| fn |
fn := [:arr |
| sortedOdds |
sortedOdds := (arr select: #odd) sort readStream.
arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [x]]
].

fn value: #(6 5 4 3 2 1) "=> #(6 1 4 3 2 5) "


>>835

| fn |
fn := [:arr |
| sortedOdds sortedHalfEvens |
sortedOdds := (arr select: #odd) sort readStream.
sortedHalfEvens := ((arr select: #even) sort reversed / 2) readStream.
arr collect: [:x | x odd ifTrue: [sortedOdds next] ifFalse: [sortedHalfEvens next]]
].

fn value: #(0 9 8 4 6 5 1 2 7 3) "=> #(4 1 3 2 1 3 5 0 7 9) "
0862デフォルトの名無しさん
垢版 |
2019/10/26(土) 11:45:52.80ID:4aRwI3hq
>>859 Perl5、最小限でか…

@s = (0, 9, 8, 4, 6, 5, 1, 2, 7, 3);
@ix = grep{$s[$_] & 1} keys @s;
@iy = sort{$s[$a] <=> $s[$b]} @ix;
@s[@ix] = @s[@iy];
@iz = grep{~$s[$_] & 1} keys @s;
@s[@iz] = map{$_ / 2} reverse sort{$a <=> $b} @s[@iz];
use Data::Dump 'dump';
print dump @s;

実行結果
~ $ perl 15_859.pl
(4, 1, 3, 2, 1, 3, 5, 0, 7, 9)
0864デフォルトの名無しさん
垢版 |
2019/10/26(土) 12:22:15.14ID:GFiKSQ9h
>>856
Porwershell。バージョンによってはプロンプト画面に直接貼り付けると$sの文字列が
化けるので、その場合はファイルに保存して実行。

$s = "('・ω・``)"
$w = $Host.UI.RawUI.WindowSize.Width - 1
$m = [Math]::Floor($w / 10)

foreach ($n in 1..$m + ($m - 1)..0) {
  $d = $w - 10 * $n
  foreach ($x in (($d..1), (1..$d))[$n % 2]) {
    $l = "`r" + " " * $x + $s * $n + " " * ($d - $x)
    Write-Host $l -NoNewline
    if (!$n) {Write-Host; break}
    Sleep -m 20
  }
}
0865デフォルトの名無しさん
垢版 |
2019/10/26(土) 13:49:47.32ID:f6JeNzn+
Mathematica12

定義
f1[a_]:=SubsetMap[Sort,a,Position[a,_?OddQ,1]]
f2[a_]:=SubsetMap[ReverseSort[#]/2&,f1[a],Position[a,_?EvenQ,1]]

実行結果
f1[{6,5,4,3,2,1}]
{6,1,4,3,2,5}

f2[{0,9,8,4,6,5,1,2,7,3}]
{4,1,3,2,1,3,5,0,7,9}
0866デフォルトの名無しさん
垢版 |
2019/10/26(土) 17:08:24.41ID:kYj2w42l
>>832, >>858 Ruby

f = -> ary {
  e, o = ary.partition(&:even?).map(&:sort)
  ary.map{|v| v.even? ? v : o.shift}
}
g = -> ary {
  e, o = ary.partition(&:even?).map(&:sort)
  ary.map{|v| v.even? ? e.pop >> 1 : o.shift}
}

p f[[6, 5, 4, 3, 2, 1]] # => [6, 1, 4, 3, 2, 5]
p g[[0, 9, 8, 4, 6, 5, 1, 2, 7, 3]] # => [4, 1, 3, 2, 1, 3, 5, 0, 7, 9]
0868デフォルトの名無しさん
垢版 |
2019/10/26(土) 22:02:49.24ID:+YWUVQNg
>>856
https://ideone.com/lw7uIj
C++。なんか表示位置ずれるなーと思ったら、「()」これ半角じゃねーか。
そのせいで、プログラムが持ってる長さと表示の長さが合わなかった。

しかし、汚くなった無し、思ったより時間がかかってしまった。
0871蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/26(土) 22:38:02.04ID:Q5f3+aYX
お題: あるフォルダ(例えばC:\Windows)についてフォルダの階層構造を木構造(tree)を表すテキストとして出力せよ。

インデントでもいい。罫線を使ってもいい。
0872デフォルトの名無しさん
垢版 |
2019/10/26(土) 22:38:38.76ID:T/HAOzs9
tree
0875デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:36:46.58ID:Up+ppHZL
0876デフォルトの名無しさん
垢版 |
2019/10/26(土) 23:56:14.95ID:mT+r0MIT
0878デフォルトの名無しさん
垢版 |
2019/10/27(日) 01:48:49.90ID:hTxWtEZY
0879デフォルトの名無しさん
垢版 |
2019/10/27(日) 02:14:55.86ID:qZK0Jir5
0880デフォルトの名無しさん
垢版 |
2019/10/27(日) 12:00:30.73ID:czi1K5eV
>>858-859
PowerShell

$a = 0, 9, 8, 4, 6, 5, 1, 2, 7, 3
$b = 0, 0
$i = 0, 0
$odd = {$_ % 2}
$b[0] = @($a |? {!(&$odd)} |% {$_ / 2} | sort -descending)
$b[1] = @($a |? {&$odd} | sort)
$c = $a |% {$b[(&$odd)][$i[(&$odd)]++]}

"入力: [" + ($a -join ", ") + "]"
"出力: [" + ($c -join ", ") + "]"
0883デフォルトの名無しさん
垢版 |
2019/10/28(月) 21:54:57.80ID:UPe4TNxT
Common Lisp
>>832
(let* ((l '(6 5 4 3 2 1))
    (odds (sort (remove-if-not #'oddp l) #'<)))
 (mapcar (lambda (x) (if (oddp x) (pop odds) x)) l))

>>858-859
(let* ((l '(0 9 8 4 6 5 1 2 7 3))
    (odds (sort (remove-if-not #'oddp l) #'<))
    (evens (sort (remove-if-not #'evenp l) #'>)))
 (mapcar (lambda (x) (if (oddp x) (pop odds) (/ (pop evens) 2))) l))
0885デフォルトの名無しさん
垢版 |
2019/10/28(月) 22:33:53.27ID:cHOU2eIF
>>871
Powershell。標準のtreeコマンドと違い、システム/隠しフォルダも表示する。
バージョンによってはプロンプト画面に貼り付けると罫線文字が消えてしまうので、
その場合はps1ファイルに保存して実行するか、PowerShell ISEに貼り付ける。

function MyTree($path, $branch)
{
 if (!$branch) {$path}
 $dir = @(ls -Force -PSPath $path -EV e -EA SilentlyContinue |? {$_.PSIsContainer})
 if ($e) {$branch + "::アクセス不可"}
 if (!$dir) {return}
 0..($last = $dir.Count - 1) |% {
  $branch + ("├─", "└─")[$_ -eq $last] + $dir[$_].Name
  MyTree $dir[$_].FullName ($branch + ("│ ", "  ")[$_ -eq $last])
 }
}

MyTree "C:\Windows"
0888蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/29(火) 01:01:17.43ID:CdNgVa0z
お題: 平面(0, 0)-(100,100)上に点を100個、配置する。k-means法を用いて点の集合を3つのグループに分け、それらを図示せよ。
0889デフォルトの名無しさん
垢版 |
2019/10/29(火) 08:42:30.06ID:CowX2GWO
>>858-859
Ruby で、

input_ary = [ 0, 9, 8, 4, 6, 5, 1, 2, 7, 3 ]

even_ary, odd_ary = input_ary.partition( &:even? ) # 偶数・奇数配列

odd_ary.sort! # 奇数要素をソート

# 偶数要素は、2で割って降順ソート
even_ary.map! { |num| num / 2 }
even_ary.sort!
even_ary.reverse!

p results = input_ary.map { |num| num.even? ? even_ary.shift : odd_ary.shift } # 偶数・奇数
0893デフォルトの名無しさん
垢版 |
2019/10/29(火) 21:04:32.22ID:OodB9NB8
日本標準時2100に起動し、Web上から文字列「惣流・アスカ・ラングレー」を含む.jpgファイルもしくは.jpegあるいは.pingファイルをC:秘蔵に1GB分保存するコードを教えてください
0894デフォルトの名無しさん
垢版 |
2019/10/29(火) 21:19:03.11ID:zdS42c06
式波だろオッサン
0896デフォルトの名無しさん
垢版 |
2019/10/29(火) 22:18:10.10ID:VtVeF5OO
>>893
firebird -t0:21:0:0 --everyday --query 惣流・アスカ・ラングレー --suffix "jpg|jpeg|ping" --dst "C:\secret" --limit 1GB
0899デフォルトの名無しさん
垢版 |
2019/11/01(金) 22:31:20.50ID:5BPqTvCN
お題: 3^3^3^... のような反復指数を10の反復指数に近似するプログラムを作成しなさい。
入力されるそれぞれの指数は1より大きい実数とします。
計算後の最も右の指数xは 1<x≦10 としてください。

例:
3^3^3^3^3^3 = 10^10^10^10^10^1.099
2.718^2.718^2.718^2.718^7.705 = 10^10^10^10^2.983
(5.0e+50)^(6.0e+60)^(7.0e+70)^(8.0e+80)^(9.0e+90) = 10^10^10^10^10^10^1.968
1.1^1.1^1.1^1.1^1.1 = 1.112
■ このスレッドは過去ログ倉庫に格納されています

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