プログラミングのお題スレ 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/
2019/10/05(土) 21:56:27.55ID:Lt/DoxvR
>>690
辞書データぷりーず
2019/10/05(土) 22:00:12.06ID:4K3q4mZL
このソルバーに辞書データっているか?
2019/10/05(土) 22:27:44.93ID:NXndjuW4
>>691
出題者ではないが、まず、完成図面を作って、そこから問題を作ったほうが早そうだ。
ヘックスの扱い方わからねーんだ俺。
昔聞いたことあるけど、そのうち・・・と思ってたら曖昧になってしまった。
2019/10/05(土) 23:11:05.60ID:6iFRuM3K
>>667 Perl5

$in = '<div><p><a></a></p></div><span><p></p></span>';
use XML::Simple;
$xml = new XML::Simple->XMLin('<document>'.$in.'</document>');
use Data::Dumper;
$Data::Dumper::Terse = 1;
print Dumper $xml;


実行結果
~ $ perl 15_667_Simple.pl
{
 'div' => {
  'p' => {
   'a' => {}
  }
 },
 'span' => {
  'p' => {}
 }
}
2019/10/06(日) 00:03:34.99ID:tnh9RMO0
とりあえず>>690を手動で解くのに2時間かかったw
お題は思いついたらやる
696デフォルトの名無しさん
垢版 |
2019/10/06(日) 05:37:10.28ID:oevqPO9x
お題: L形図形を表示する
[入力]
1
[出力]
a
bc

[入力]
2
[出力]
ba
ca
abcc
bcab

[入力]
3
[出力]
bacb
cbaa
acba
bcca
bcabcccb
cabcabca
abccaabc
bcabbcab
697デフォルトの名無しさん
垢版 |
2019/10/06(日) 05:55:18.89ID:vrVeYjyl
>>696
最後のやつが4ではなく3?
それと文字はabc使っているが、どういう規則で並べるのか?
2019/10/06(日) 05:58:05.67ID:lJB/egMg
カオス
699675
垢版 |
2019/10/06(日) 09:02:51.40ID:O+kT1S2P
最後は4だろ
2019/10/06(日) 09:24:22.51ID:+7MXB6fE
>>697
おそらく1のパターンのL字を4つで向きを変えてくっつけて大きなL字にしたものが2のパターン。2を4つ使って同じことをやって3を作ってるということだと思う。愚直に再帰的にやれば簡単そう。
2019/10/06(日) 10:20:09.68ID:tnh9RMO0
>>696
入力3の出力、一か所間違えとるよな?w
2019/10/06(日) 10:43:36.50ID:tnh9RMO0
>>696 Java
https://ideone.com/31a8Ky
2019/10/06(日) 17:34:25.93ID:kRqXlweR
お題: プログラム実行後にプログラム自身を削除するプログラムを作れ
実行内容は以下のメッセージを出力する
「このプログラムが起動するのは一度きりである。実行ののち、消去される。」
2019/10/06(日) 17:53:36.15ID:VH97tuta
>>703
echo このプログラムが起動するのは一度きりである。実行ののち、消去される。
rm -rf /
705675
垢版 |
2019/10/06(日) 18:05:59.73ID:m+CayYCA
>>703 そんな問題は却下。 
どんな問題でもファイルを削除する様な問題は出してはいけない。
ど素人もいるんだからそんな問題は出すべきではない。
2019/10/06(日) 20:06:09.43ID:+aq+gJyQ
>>704
大抵の環境でコマンド通らないんじゃないかそれ
2019/10/06(日) 20:12:57.33ID:XBuBF2Rc
#!/bin/sh
echo このプログラムが起動するのは一度きりである。実行ののち、消去される。
\rm -f $0
2019/10/06(日) 20:16:32.32ID:lJB/egMg
lol $0 じゃなくて / にしてるのかwww
2019/10/06(日) 20:19:37.81ID:bPt7YQEe
>>707みて、できなくはないが、やりたくない気分になった。
http://www.t-net.ne.jp/~cyfis/c/stdlib/system.html
上記を使えば、PGからコマンドラインに干渉できる。が!ねぇ・・・。
場所もargc[0]に書いてあるんだけどねぇ・・・。

WA.
710デフォルトの名無しさん
垢版 |
2019/10/06(日) 21:19:08.41ID:QZjIPE+j
シェルスクリプト総合 その31
https://mevius.5ch.net/test/read.cgi/tech/1565446670/
711デフォルトの名無しさん
垢版 |
2019/10/07(月) 13:22:48.77ID:lSqRbxbA
>>703
Linux等のUNIX系OS

at now +1 min

などとやって at job が一分後に動くようにして次の1行を入力してから Ctrl+D で終了させる。

echo 'このプログラムが起動するのは一度きりである。実行ののち、消去される。'

その後1分待つと上記文言の出力後 at job は削除される。

ただし通常の出力先である標準出力はないことになっているのでatによって拾われてメールでエラーメッセージと共に送られてくる。
それを見たい場合はmailコマンドで送られてきたメールの内容を見る等する。
2019/10/07(月) 18:38:53.78ID:tyyduGK2
>>703 C++/Win32

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv)
{
printf("このプログラムが起動するのは一度きりである。実行ののち、消去される。\n");
FILE *fp = fopen("delete-me.bat", "w");
fprintf(fp, "@echo off\n");
fprintf(fp, ":retry\n");
fprintf(fp, "del \"%s\"\n", argv[0]);
fprintf(fp, "if exist \"%s\" goto retry\n", argv[0]);
fprintf(fp, "del delete-me.bat\n");
fclose(fp);
ShellExecuteA(NULL, NULL, "cmd", "/c delete-me.bat", NULL, SW_HIDE);
return 0;
}
2019/10/07(月) 22:21:05.16ID:aU+ghkHH
>>703 Perl5

print "このプログラムが起動するのは一度きりである。実行ののち、消去される。\n";
unlink $0;


実行結果
~ $ perl 15_703.pl
このプログラムが起動するのは一度きりである。実行ののち、消去される。
~ $ ls -o 15_703.pl
/usr/bin/ls: cannot access 15_703.pl: No such file or directory


嫌なプログラミンッグだな、一歩書き間違がや大参事。
こういうお題はご遠慮願いたいものだ…
2019/10/07(月) 22:32:50.62ID:aU+ghkHH
すまぬ >>713 は題意とは違うな。
プログラムの実行が終了してから削除されるわけか…

>>703 bash

(sleep 4; rm -f $0)&
echo このプログラムが起動するのは一度きりである。実行ののち、消去される。

実行結果
$ bash 15_703.sh
… 数秒後
$ ls -o 15_703.sh
ls: 15_703.sh にアクセスできません: No such file or directory
2019/10/07(月) 22:35:14.10ID:aU+ghkHH
>>714 実行結果貼りそこなったorz

$ bash 15_703.sh
このプログラムが起動するのは一度きりである。実行ののち、消去される。
$ ls -o 15_703.sh
-rw-r--r-- 1 ******** 98 10月 7 22:29 15_703.sh
… 数秒後
$ ls -o 15_703.sh
ls: 15_703.sh にアクセスできません: No such file or directory
2019/10/07(月) 23:18:10.62ID:Hq5Oz5C1
MSX BASIC
10 print"オハヨウフェルペスクン,コンカイノキミノニンムダガイカリャクナオコノテープハジドウテキニショウメツスル"
20 new
2019/10/07(月) 23:48:42.06ID:ti3U/Qjr
>>703
https://ideone.com/B5bVTK
C++。自分ができるのはここま・・・で・・・だ。。。

うぼぁあああああああ。
2019/10/07(月) 23:54:31.61ID:9cpaLYwd
実行時にexeにロックがかかるから、実行終了を待つsystem関数では消せないんだ、これが。
2019/10/08(火) 00:32:11.48ID:LPLIE15X
拡張子.batはコマンドプロンプトのバッチファイルを表す。
2019/10/08(火) 01:09:42.27ID:LQA6uDl1
https://ideone.com/ABzMBS
C++&.
2019/10/08(火) 01:10:33.04ID:LQA6uDl1
>>720
C++&Windows.
おかしなキーコンビネーションで投稿してしまったが、それは置いといて。
結構な沼だったわ。
2019/10/08(火) 01:14:29.28ID:LQA6uDl1
あ、数秒後にタスクを実行したかったが、分単位にしかならないようだ。
2019/10/08(火) 01:31:36.46ID:YlPtBjRn
どM乙。
2019/10/08(火) 02:43:45.63ID:LQA6uDl1
https://ideone.com/s1OxbV
C++&Windows. 結局バッチ作ってバッチを削除するようにした。
2019/10/08(火) 02:45:57.47ID:LQA6uDl1
C++で書いている意味があまりないなぁ。
頭がこんがらがってくるわ。
2019/10/08(火) 03:07:50.37ID:LQA6uDl1
タスクスケジューラには一個のタスクしか持たせることができません。
タスクスケジューラの健康のために削除タスクと削除タスクをkillするタスクを入れたという欲が出ました。
さて、どうすればよかったのでしょうか・・・。
2019/10/08(火) 03:25:53.77ID:LQA6uDl1
https://ideone.com/8DBn1u
チョットシンプルになった。
けど、ただスケジュールしてバッチファイル作るだけになっちゃった・・・。Orz

ううううううぼぉぉぉおあぁぁぁあああ。。。
2019/10/08(火) 18:18:17.33ID:9WsdIwSr
おしい
2019/10/08(火) 22:43:05.75ID:8UaWwWzr
「インターネットには戦力外通告とかが無いから頭の悪い人がいつまでも打席に立って三振し続ける」
2019/10/09(水) 01:57:50.31ID:vwSn6CxZ
お題: TCPデータグラムが流れてくるのでFINフラグが立っていたら「切断します」と出力せよ
2019/10/10(木) 00:51:51.46ID:P0sO6qGI
>>729
IT分野の実社会では、単価にそれほど差がないのをいいことに
パーフォマンダウンによる差額で利ざやを稼ごうという
商売が横行して、結果としてIT分野が廃れている

だから。こまけーこたー いいんだよ
2019/10/10(木) 19:10:08.63ID:Tobvh7XK
>>703
Windows10で、普通に↓で消せた。
https://ideone.com/j1Glc5
733デフォルトの名無しさん
垢版 |
2019/10/10(木) 19:12:56.39ID:AtKsFWU7
>>690 解けた人いない?
2019/10/10(木) 19:14:39.08ID:0pYFH17C
>>733
手では解いた
総当たり以外に思い浮かばん
735デフォルトの名無しさん
垢版 |
2019/10/10(木) 20:46:59.80ID:78OW/ryc
いやお題はパズルを解けじゃなくてパズルのソルバーの実装だからwww
2019/10/10(木) 21:25:17.60ID:VnnXeZwz
古典的な人工知能の探索アルゴリズムを研究すれば、この程度のソルバーは作れる。
737デフォルトの名無しさん
垢版 |
2019/10/10(木) 21:48:13.15ID:PZRS9XbT
つまり研究しないと作れないってことか。
2019/10/10(木) 23:09:22.63ID:gSAdFsTs
>>735
だから総当たり以外思い浮かばなかったって言ってるだろ
2019/10/11(金) 00:08:49.38ID:1+VMU1fD
>>690
ここの↓にすごい悩んだ。
https://regexcrossword.com/playerpuzzles/5d705a4fbf679
Ambiguousの意味を知らずに・・・・・
740デフォルトの名無しさん
垢版 |
2019/10/11(金) 01:56:11.32ID:H4pwkZny
いや総当たりでも出来たなら貼ってくれや。
別に総当たりでも恥ずかしくもなんともないと思うが…
2019/10/11(金) 08:53:45.55ID:MNDgolhS
貼りたくねえ
総当たり出できたものを他人のために見せる必要性もないし
742デフォルトの名無しさん
垢版 |
2019/10/11(金) 09:03:11.12ID:Cra8acMD
できた!
みせて。
見せたくない!

うーん…
2019/10/11(金) 09:08:21.86ID:pcktkYLP
;フェルマーの最終定理
2019/10/11(金) 21:55:54.61ID:zKaC3xv0
お題:0〜9999の整数について数字和を求め、数字和の頻度を集計せよ

ocaml
https://ideone.com/AjcGgp

c
https://ideone.com/38nYGS

octave
https://ideone.com/g7FrVu

ruby
https://ideone.com/YyFXWh
2019/10/11(金) 22:38:20.98ID:hqLUiXPo
>>744
https://ideone.com/pEdgoA
C++。最初サンプルと違う答えになってビビったけど、俺のコードがバグっていた・・・。Orz
2019/10/11(金) 22:44:43.53ID:poa9EnRO
すんごく二項定理っぽい数字の並び方をしてる
2019/10/11(金) 23:16:02.90ID:GtQsvrI7
>>744 Java
https://ideone.com/U99ZM3

プログラミングのお題スレ Part9 [無断転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1480579110/134-136
昔書いたこれ(上の136)を流用
2019/10/11(金) 23:53:28.54ID:jSXBX1w1
>>744
これって0~9999じゃなくて任意の2つの数字入力させてとかだと愚直に計算するしかない?
2019/10/12(土) 00:32:58.46ID:Cxdg6QkN
>>748
うまくやれば出来そうだがまだ思いつかん
2019/10/12(土) 11:04:47.64ID:ewC1g8Dg
>>744 Pharo/Squeak Smalltalk

| bag |
bag := Bag new.
(0 to: 9) asDigitsToPower: 4 do: [:digits | bag add: digits sum].
^ bag sortedElements

"=> {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(土) 11:07:06.97ID:ewC1g8Dg
いかん。すまん。出力が安価になってしまった。
2019/10/12(土) 11:31:04.69ID:zNYc1jm8
lol
2019/10/12(土) 11:52:28.41ID:msiQ/n9S
>>750
@Mathematica

Range[0, 9999] //
 Map[IntegerDigits, #] & //
 Map[Total, #] & //
 Tally

{{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(土) 13:09:50.35ID:Nq/Z/R6A
>>744 perl

use List::Util qw(sum);
$h{sum(split"")}++ for(0..9999);
map{print"$_ $h{$_}\n"}sort{$a<=>$b}keys%h;
2019/10/12(土) 13:25:43.66ID:VvSWBOR5
>>748 言われた通りの改定問題

X,Yが与えられる。
X以上Y以下の連続する整数で、数字和の頻度。
もっとも大きい頻度はいくつか。
制約 0 <= X < Y <= 5000億

1) 0 9999 --> 670
  合計18が、670ある。>>744の入力値
2) 1234567 9876543 --> 459034
3) 1 500000000000 --> 20406732610
4) 12345678909 498765432123 --> 20000965162

※Y-Xが MAX5000億なので愚直(力技)はきつい。
※頻度表は"桁数*9"程度あるので、最高値出力のみに変更
2019/10/12(土) 17:47:36.17ID:Nq/Z/R6A
頻度の階差を取った
0~9999だと三角数
0~99999だと三角錐数
になる
2019/10/12(土) 18:44:18.00ID:I5ZWyiFj
>>740
>>741じゃねーけど総当りもどきで解いてみた
https://ideone.com/nZqnpN
https://i.imgur.com/3esPPr0.jpg
さすがにフルに総当りするととても終わりそうにないのでちょっとズルして各マスに入る文字を正規表現に使われている"ABCDEFGHMNORXYZ"に限定した
(ソースの217行目)
Celeron 1005M 1.9GHzのしょぼいノートPCで1,386秒(23分)程度だった
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
どういうところが「頭がおかしい」と思ったのですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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