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

■ このスレッドは過去ログ倉庫に格納されています
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/
758デフォルトの名無しさん
垢版 |
2019/10/12(土) 19:36:00.00ID:vBnCHMzu
>>757
すんごい
実行時間もすんごい…
2019/10/12(土) 19:59:28.15ID:hTj/2FIT
>>754 Perl5、計算量を減らしたアルゴリズム

sub f {
 @s = @_;
 for $l (1..9) {
  $s[$_ + $l] += $_[$_] for 0..$#_;
 } @s }
@b = f f f f 1;
print "$_,$b[$_] " for 0..$#b;

実行結果
~ $ perl 15_774_digit_sum_1.pl
0,1 1,4 2,10 3,20 4,35 5,56 6,84 7,120 8,165 9,220 10,282 11,348 12,415 13,480 14,540 15,592 16,633 17,660 18,670 19,660 20,633 21,592 22,540 23,480 24,415 25,348 26,282 27,220 28,165 29,120 30,84 31,56 32,35 33,20 34,10 35,4 36,1

もっと減らしたアルゴリズムを考えたい気もするけど、
これで一回投稿
2019/10/12(土) 20:06:37.21ID:hTj/2FIT
>>759
アンカーしくった、>>744 だった…ゴメンね
761744
垢版 |
2019/10/12(土) 20:24:43.33ID:1DgZSjUc
白状すると単にrubyで書きたいだけのお題だったんだけど
(Array#repeated_permutationを使いたいだけ)
みんな色々面白いこと考えるもんだね
2019/10/13(日) 14:56:19.23ID:w8oKE2gz
お題: ストップウォッチを作れ。

最初にEnterキーを押すとスタート。
次にEnterキーを押すとストップ。
経過した時間を表示する。
763675
垢版 |
2019/10/13(日) 15:28:31.50ID:XFDKT5kN
>>744 Python
https://ideone.com/v1nrdn
―――-

import pandas as pd

array = []
for i in range(0,10000):
array.append(sum(list(map(int,str(i)))))

srv =pd.Series(array).value_counts().sort_index()

print(srv)
2019/10/13(日) 17:38:11.00ID:qg/TNtNV
>>762
https://ideone.com/B1ShSB
C++。ストップウオッチ自体は大分前にC#をパクって作ってあったありあわせだ。
765デフォルトの名無しさん
垢版 |
2019/10/13(日) 21:07:01.46ID:w512EwKm
>>755 C
http://ideone.com/qdx79j
一応Y = LLONG_MAXまでできる、あってるか知らんが
ただのスパゲッティになってしもた
766デフォルトの名無しさん
垢版 |
2019/10/14(月) 01:02:32.87ID:Ws6GlsT+
>>744
Kotlin
https://paiza.io/projects/ci9PwSmxQWwMM4iWRolsyw
767デフォルトの名無しさん
垢版 |
2019/10/14(月) 02:00:45.97ID:Ws6GlsT+
>>762
Kotlin
まずは仕様通りのもの。

fun main() {
 val br = System.`in`.bufferedReader()
 br.readLine()
 val t0 = System.nanoTime()
 br.readLine()
 val t1 = System.nanoTime()
 val t = t1 - t0
 println("%d.%09d".format(t / 1000000000L, t % 1000000000))
}

しかしこれでは途中経過が出てこなくてつまらない。ということでこれ。

fun main() {
 val br = System.`in`.bufferedReader()
 br.readLine()
 val t0 = System.nanoTime()
 while (true) {
  if (br.ready()) {
   val c = br.read()
   if (c == '\n'.toInt())
    break
  }
  val t1 = System.nanoTime()
  val t = t1 - t0
  print("%d.%09d\r".format(t / 1000000000L, t % 1000000000))
 }
 println()
}
2019/10/14(月) 07:53:19.70ID:kizbcx2j
お題
2^511-1の真約数をひとつ求める
https://mainichi.jp/articles/20191013/k00/00m/040/245000c
2019/10/14(月) 08:39:26.54ID:6P2fe30E
>>768
そのニュース関係なくね?
2019/10/14(月) 08:53:29.04ID:z/6QW2Tk
実は素数でした
とかいう形?
2019/10/14(月) 09:34:48.23ID:6P2fe30E
>>770
511 = 7 * 73 だから 2^511 - 1 は素数ではない
2019/10/14(月) 09:38:05.24ID:6P2fe30E
というか2^73-1で割り切れる
2019/10/14(月) 15:57:50.03ID:eo8SsHS2
>>771-772
それは 2^511-1 は 2^7-1 でも割り切れることを主張しているのですか?
2019/10/14(月) 16:21:24.99ID:CCU+9UFO
>>773
それ以外にどう読めるんだよアホか
2019/10/14(月) 20:26:24.40ID:ead7I0ur
>>773
2^511-1 = 2進数で1が511個 = 2進数で1111111が73個並んだ形
2^511-1を2^7-1で割ったら2進数で0000001が73個並んだ形
ってことじゃろ
2019/10/14(月) 20:53:54.75ID:O0QR+doO
プログラミングから一気に整数論へダイブ
2019/10/14(月) 21:23:44.39ID:eo8SsHS2
>>774-775
2^{ab}-1 = (2^a-1)(1 + 2a + 2^2a + 2^3a + ... + 2^(b-1)a)
と因数分解できるんですね…
thx a lot.
2019/10/14(月) 22:14:18.19ID:hXRtCJE+
必死に5時間検索しまくったのか・・・
779675
垢版 |
2019/10/15(火) 01:03:22.38ID:LXkkA+L3
もう何処かのチャレンジ問題を議論するスレでも良いのでは?
2019/10/15(火) 01:28:25.21ID:4KtvCQDg
お題: お題スレの過去スレからお題をランダムに選択し出力するプログラムを作成せよ
2019/10/15(火) 15:09:04.02ID:WmSwVXlW
QZの醜態を全部晒すプログラムを作成せよ
2019/10/15(火) 15:25:10.73ID:YTs2ZIZB
>>781
w3m https://mevius.5ch.net/test/read.cgi/tech/1564310397/ | ~/bin/select_word_and_ancher.pl QZaw55cn4c
https://pastebin.com/MPWNXYG5
https://i.imgur.com/fJi3S6W.png
2019/10/15(火) 16:06:38.33ID:Ogt2CAsV
>>782
くそわろた
2019/10/16(水) 01:16:39.26ID:bAHdrVWX
>>755 python
http://ideone.com/caxm7I

ほぼ典型っぽいので、桁DPで解く。

遊びで (X,Y)=(0, 10^100)を実行してみる
2019/10/16(水) 01:58:29.60ID:OEkTBx4G
あらら仕事にかまけてほったらかしていたら
先こされちゃったな感
2019/10/16(水) 02:04:49.25ID:5tDJE0Z9
QZは自分がキチガイということは全然自覚してないんだろうな
2019/10/16(水) 08:36:01.98ID:Mi1dGaVf
>>786 自覚はあるらしいよ。
2019/10/16(水) 16:11:48.25ID:EcYqpM5S
QZが自身をキチガイだと認識しているのならば、QZはキチガイという言葉の正しい意味を理解していない
2019/10/16(水) 16:58:30.92ID:NsS1/fO1
誰が見てもQZは頭がおかしいよ
2019/10/16(水) 20:10:11.38ID:JF94p0Fe
>>789
どういうところが「頭がおかしい」と思ったのですか?
2019/10/17(木) 01:44:31.12ID:QhHbr34y
>>790
周囲が迷惑している行為や的外れで頓珍漢な言動をした際にそれを指摘しても、分からないから具体的に言えという。普通の人からすれば明らかな場合であろうと。
そして具体的に説明しても、自分はそう感じないから理解しない、納得しないと言い、言動を改めない。

本人の中では論理的整合性がとれた言動なのかも知れないが、周囲からすれば会話ができない困った奴に見える。
2019/10/17(木) 02:01:41.77ID:Wp46MCu9
朝鮮人に特有な行為だね
2019/10/17(木) 02:18:55.29ID:E+5qu981
他人の迷惑考えずこんなの貼っちゃう奴だしな

848 ◆QZaw55cn4c  sage 2019/07/20(土) 08:18:17.29 ID:jbjCUWIF
お題と回答
5 : 6 10 32 36 44
9 : 15 34 35 79

まんま>>791に該当するわ
2019/10/17(木) 09:29:19.87ID:yTQXhZUg
複素数の多価関数を何度説明しても理解してなかったし脳に欠陥があるのだろう
2019/10/17(木) 12:35:29.92ID:MLKesy/P
多価関数を理解できなかったのかwww
じゃあリーマン面も分からないだろうな
そんな状態で一丁前に「留数定理」とのたまうから頭おかしい
796デフォルトの名無しさん
垢版 |
2019/10/17(木) 16:53:38.74ID:H8l94EK2
>>744
Kotlin
>>766をほんのちょっと改造
https://paiza.io/projects/K_ZOTIieO38ysksk8P8-sw
2019/10/17(木) 19:46:20.65ID:LNHzPSkK
>>795
>そんな状態で一丁前に「留数定理」とのたまう
多分、それは「留数定理は忘れた」という文脈以外ではいったことがないと思いますよ

>>794
「何度も」説明を受けた覚えはありませんよ、むしろ意図的に答えを隠されたような隔靴掻痒的なほのめかししかなかったと記憶しています

>>793
問題を明確に指摘された後は、その貼り付けは実施していないのですが

>>794
今はすべてを実数に限定した線形微分方程式ですらとても苦しんでいるので、複素解析/j関数論とかは当分無理だと思います、関数論のいい教科書があれば教えてください
2019/10/17(木) 20:10:25.04ID:Fo0iAhjp
>>797
あれだけ明瞭な説明を受けて理解できないどころかはぐらかされたと感じるならばお前は脳の病気だな
2019/10/17(木) 22:10:55.40ID:lFPJOlZz
5chなんて無駄にマウント取るやつばっかりだから、コテつけてごちゃごちゃ言っても時間の無駄だぞ
袋叩きにあうだけ
800デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:24:53.30ID:RRRrLQ0r
自演擁護乙。
2019/10/18(金) 23:48:51.61ID:981JMrNY
気を取り直していくぞ。

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

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

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

ライフゲームがヒントになるかもしれない。
2019/10/19(土) 18:45:19.24ID:PZMkyc4n
>>803
なお、自分は物理学も数学も素人である。。。Orz
805デフォルトの名無しさん
垢版 |
2019/10/21(月) 08:37:49.94ID:HKPBZHRe
お題
入力された正整数を漢数字表記にして出力せよ
10の何乗まで対応するかは任せる

514 -> 五百十四
131072 -> 十三万千七十二
90010 -> 九万十
2019/10/21(月) 09:41:08.94ID:5iZNWaQ2
>>805 python

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

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

まだやったことない人なら頭の体操(またはボケ防止)にはなるからやってみると良いと思う。
2019/10/21(月) 17:22:20.45ID:Yxovtd3S
>>812
漢数字変換 - Perl表技集
http://www2u.biglobe.ne.jp/~MAS/perl/waza/kansuji.html

これですな
2019/10/21(月) 20:27:05.91ID:niRnsl0k
実はcpanからお題を決めてるんじゃないかなというのがしばらく続いてたと思う
2019/10/21(月) 22:35:38.51ID:9OcWZn69
ローマ数字との変換、は簡単か
2019/10/21(月) 22:41:08.96ID:tcnN+Hr+
何回か出てる。
2019/10/21(月) 23:57:16.86ID:PlH6WJHg
適当な整数を入力してそれが円周率の何桁目で出てくるか出力せよ。

何桁まで対応するかは任せる。
2019/10/22(火) 00:08:15.75ID:TSqT/b7n
perl だと m/digit/p からの $^{prematch} とかだな
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 桁目
2019/10/22(火) 12:11:07.49ID:wZUXcjF6
あきらかにNP問題だから解く気がしねえ
825デフォルトの名無しさん
垢版 |
2019/10/22(火) 12:40:06.09ID:E1qN728j
じゃあNP問題だと証明しろよ
2019/10/22(火) 13:54:00.39ID:rZX4V0+4
>>823
一度にある桁まで求めておいてから検索するよりも、
ガウス=ルジャンドルのアルゴリズムまたはラマヌジャンの式を使うなどして
下の桁まで収束を進めながら検索してゆく方が面白かったかな
2019/10/22(火) 16:09:06.09ID:0ZM3PvBa
>>825
キチガイすぎて草
828デフォルトの名無しさん
垢版 |
2019/10/22(火) 19:15:47.41ID:/ue0mcGS
ぬるぽ問題
2019/10/22(火) 19:35:05.18ID:JpCkwFny
じゃあそれにしよう。

適当な文章を入力して縦横斜めにぬるぽの3文字が入っていればガッと出力する。
ひらがなだけにするかそれ以上の対応をするかは任せる。
2019/10/22(火) 23:37:52.31ID:0ZM3PvBa
>>829 Python

%pip install nurupo
from nurupo import nurupofield
if nurupofield("ぬるぽ")
print("ガッ")
# ガッ
2019/10/23(水) 00:32:58.65ID:65oBAktI
pythonなんでも揃ってんな・・・
2019/10/23(水) 20:25:56.13ID:LcbXQT4h
お題:整数配列の奇数要素のみをソートした配列を返す処理を書いてください

入力例:[6, 5, 4, 3, 2, 1]
出力例:[6, 1, 4, 3, 2, 5]
2019/10/23(水) 20:53:09.53ID:oBmkNBH8
>>832 octave
https://ideone.com/W2Q4NP
2019/10/23(水) 20:53:23.91ID:65oBAktI
奇数だけ抜き出した配列作成→ソート→元の配列の奇数の位置にソートした配列の要素を入れてくだけで良さそう
2019/10/23(水) 20:54:52.29ID:oBmkNBH8
あ、ダメだこれw
失礼しました
836833
垢版 |
2019/10/23(水) 21:05:23.34ID:oBmkNBH8
>>832 octave
https://ideone.com/F0JmMT
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)
838デフォルトの名無しさん
垢版 |
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
2019/10/24(木) 09:51:33.40ID:76TAYxNw
>>832
p [6, 5, 4, 3, 2, 1].partition.with_index{|_, i| i.even?}.then{|e, o| e.zip(o.sort).flatten}
# => [6, 1, 4, 3, 2, 5]
2019/10/24(木) 09:51:53.30ID:76TAYxNw
>>839 Ruby 2.6.0
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]
842デフォルトの名無しさん
垢版 |
2019/10/24(木) 15:41:34.92ID:gElHX+jG
>>832
Kotlin
https://paiza.io/projects/RXWCx9-WsZvakBKGgIo1UA

やり方は >>834 に書かれている通り。

しかし、もっとスマートな方法はないものか?
ありそうだが思い浮かばない。
2019/10/24(木) 16:54:57.81ID:ZpMPcQ0n
>>842
配列コピーしない場合奇数が出たらその後の要素を見て一番小さい奇数と要素の交換でもどう?
配列のコピー不要や。
2019/10/24(木) 21:24:20.41ID:YtgvOVKx
>>832 ruby
https://ideone.com/EUWgwy

>>832 ocaml
https://ideone.com/6SktpO
2019/10/24(木) 23:20:25.74ID:33G0+sWg
>>838
さすがJニキ、さっぱりわからん…
846デフォルトの名無しさん
垢版 |
2019/10/25(金) 00:26:52.21ID:GgLEjF73
アプリ作成したいのですが、素人なのでどなたか相談に乗ってください。

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

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

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

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

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

重量センサー
uxcell 計量ロードセル アルミ合金材質 500g計量 電子天秤 有線 計量センサー
849デフォルトの名無しさん
垢版 |
2019/10/25(金) 03:57:48.67ID:uJcHRouN
やり方わからないんだけど、カメラで撮影して映像解析して量が分かるのであればスマホやタブレット用のアプリでできそうだよね。
(PCに小さいカメラ付けても良いが)。
2019/10/25(金) 04:08:18.02ID:rztx2iSz
>>848
適切なスレに移動した方がいいぞ
2019/10/25(金) 09:43:45.15ID:C/odSq3f
センサーの話題などは、Linux 板のラズパイのスレで聞けば?
2019/10/25(金) 09:56:31.28ID:VVjeWd6A
>>848
適当なIoTの計り買えば解決
実装はCだろうな
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
854デフォルトの名無しさん
垢版 |
2019/10/25(金) 12:30:51.02ID:GgLEjF73
>> 849 , 850, 851, 852
情報ありがとうございます。

スレチだったみたいで申し訳ないです。
センサーありきなので、Raspiは使わないと思うのですが
板覗いてみます。
2019/10/25(金) 14:59:52.83ID:ylwTeYJx
>>832
https://ideone.com/FKifBY
C++。クイックソート書けないので謎のソートでお茶を濁す。
2019/10/26(土) 01:38:30.03ID:o5w2ifn2
お題: 端末上で(´・ω・`)を端から端まで移動し、往復させよ
ただし、端についたら(´・ω・`)は増幅し(´・ω・`)(´・ω・`)になる
同様に再び端についたら(´・ω・`)(´・ω・`)は増幅し(´・ω・`)(´・ω・`)(´・ω・`)になる
左右に移動できなくなる又ははみ出す場合は逆に(´・ω・`)を減らしていき、最終的に(´・ω・`)を消滅させよ
857デフォルトの名無しさん
垢版 |
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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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