[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/06 02:40 / Filesize : 313 KB / Number-of Response : 1026
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:45:14.49 ID:ZY7R7Sru.net]
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

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

730 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 18:40:53.56 ID:splKqZqj.net]
>>707
bash (かぶった)
https://paiza.io/projects/ESODDaszatdKxnhAzHsFWA

731 名前:709 [2018/08/10(金) 19:22:50.97 ID:q2LOavXt.net]
>>712
あ、そうか。その方が簡単だな。

732 名前: mailto:sage [2018/08/10(金) 23:01:27.70 ID:H9lF8aPc.net]
お題:10兆までの素数のリストを作ってみませんか?
https://tech.nikkeibp.co.jp/it/article/Watcher/20100519/348242/

条件:既存のライブラリ、モジュール、外部コマンド等を利用するのは不可
すべて自分で記述すること
int64_t, uint64_t の使用は許可する

733 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 00:01:26.30 ID:DgZEeL87.net]
Ruby では百万までで、処理に数秒掛かって、78,498個の素数があった

class PrimeNumber # 素数
def initialize (to = 20)
@to = to
@prime_numbers = []
end

def add_table (n)
limit = Math.sqrt(n).ceil

@prime_numbers.each do |prime_num|
# 割り切れたら、素数ではない
return if n % prime_num == 0
# sqrt より大きいなら、確かめずとも素数である
break if limit < prime_num
end
@prime_numbers.push n # 割り切れない
end

def print
(2..@to).each do |n|
add_table n
end
puts @prime_numbers.length
end
end

734 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 02:38:16.74 ID:7kLiHGgf.net]
>>714
perl

一応これで理屈の上ではできるとは思うんだが、477577まで行ったところでアホらしくなって止めたw

#!/usr/bin/perl

use strict;
use warnings;

my @pn = (2);

my $n = 1;

print "$n: $pn[0]\n";

$n++;

LOOP:
for (my $i = 3; $i <= 10000000000000; $i += 2) {
 for (@pn) {
  next LOOP unless ($i % $_);
 }
 push(@pn, $i);
 print "$n: $i\n";
 $n++;
}

735 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 03:54:44.08 ID:QfTJwHhj.net]
>>714 Ruby
10兆なら改良されたAtkinの篩を使ってガシガシやるしかないだろう
citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.192.4926&rep=rep1&type=pdf

sup = 10**7
primes = [2, 3]
5.step(sup, 6){|i|
2.times{
primes << i if primes.none?{|pr| break true if pr*pr > i; i % pr == 0}
i += 2
}
}
primes.pop if primes[-1] > sup
p primes.size #=> 664579

736 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 07:04:06.66 ID:N9ICkOCi.net]
>>714
昔やった
アセンブラ & AVX & マルチスレッド
探してみる

737 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 07:37:04.51 ID:N9ICkOCi.net]
みつかりました
そんなに昔じゃなかった
2年半前
41兆くらいまで求めてます

マルチスレッドではありませんでした
処理内容はよく覚えていません

素数表作成
ビットパターン作成
ふるい

のようなコメントがあります

105単位でなにかやってます

738 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 09:37:18.90 ID:y6G1YdWM.net]
だんだん思い出してきました
6n+1, 6n+5 に対応するビット列を保持
小さな素数の倍数はマスクを作ってAVX命令でANDしていって
大きな素数の倍数はp(210n+48個の値) にしぼって
ビット命令でひたすらふるう感じ

キャッシュサイズを考えて小さなバッファでやってます



739 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 16:27:34.72 ID:VD7zYIqC.net]
いいからコード貼れや

740 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 13:15:41.49 ID:DNU8qmV7.net]
お題:
ロト6で申込数字のいずれかが必ず5等以上に当選する
最小の申込数字の組み合わせを作ってください

ロト6は01〜43の数字から異なる数字6個を順番不問で選び
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります

741 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 14:21:49.33 ID:ZHEExUj+.net]
>>722
・5等の当選条件を満たしている
・5等以上のいずれかの当選条件を満たしている
この2つは同値なの?

742 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 14:57:56.60 ID:1gNSypiF.net]
>>723
それを聞いてどうするの?

743 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:09:35.79 ID:ZHEExUj+.net]
>>724
1〜5等に該当するならば必ず当選番号と同じ数字が少なくとも3つ入っているということがはっきりしない限り解けないでしょ

744 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:11:11.96 ID:ZHEExUj+.net]
ごめん
申込数字6個のうち3個以上が本数字と一致すれば5等以上に当選となります

申込数字6個のうち3個以上が本数字と一致すれば5等に当選となります
と読み間違えてたわ

745 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:14:32.85 ID:1gNSypiF.net]
>>723>>725の質問内容が違う件

746 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:17:25.19 ID:ZHEExUj+.net]
>>727
同値だよ

747 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:22:10.21 ID:O4fOyJLk.net]
15万個くらいの数字を吐き出して終わり?

748 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:26:16.88 ID:1gNSypiF.net]
>>728
>>723>>722とは無関係だが
>>725は(>>722の解釈次第では)無関係ではない



749 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:29:22.68 ID:1gNSypiF.net]
>>725
3個以上一致 <===> 5等以上に当選
3個以上一致 ====> 5等以上に当選
のどちらかをたずねたのかと思った

750 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 15:39:13.61 ID:ZHEExUj+.net]
>>731
そもそもこっちが>>723>>725で「申込数字6個のうち3個ちょうど本数字と一致すれば5等に当選」って誤解してたのが始まりなんだ
わけわかんないこと言ってごめんね

751 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 17:47:14.42 ID:9O3GHV+n.net]
>>707 Squeak Smalltalk

('01:23:45' subStrings: ':') reversed polynomialEval: 60 "=> 5025 "
('333:33:33' subStrings: ':') reversed polynomialEval: 60 "=> 1200813 "


Pharo Smalltalk

(('01:23:45' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 5025 "
(('333:33:33' substrings: ':') collect: #asInteger) reversed polynomialEval: 60 "=> 1200813 "

752 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 18:43:07.08 ID:9O3GHV+n.net]
>>714 Squeak/Pharo Smalltalk で 100億まで

| count |
count := 0.
Integer primesUpTo: 1e10 do: [:prime | count := count + 1].
count '=> 455052511 '

組み込みだけど、書くとしても同じアルゴリズムで書くと思うので…

https://ideone.com/zKMZYx

753 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:48:09.01 ID:cX8lnXZC.net]
>>722 C++
https://ideone.com/gCsPec

コンビネーション使う方法と、確率DPの二通りでやってみた。

(ちなみに5個当り222本は 6本が2等で、216本が3等)

※確率、期待値系は苦手だ

754 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:51:28.06 ID:AkqOEQdA.net]
お題:ローカルホストの一覧を出力しなさい

755 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:20:11.13 ID:YPN3vVTA.net]
>>735
>>722って、
・抽選される6個の数字が43C6通りのどの組み合わせでも5等以上が当たるようにくじを買う。
・くじの購入数はできるだけ少なくなるようにする。
ってことじゃないのん?

756 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:45:52.09 ID:3JJNsMDc.net]
それ以外にどんな解釈が?

757 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:22:36.49 ID:yY3qu6sZ.net]
>>737
完全に恥ずかしい誤読しました。

758 名前:デフォルトの名無しさん [2018/08/13(月) 04:38:57.55 ID:z6+TJcGX.net]
>>736
いいのかこんなんで?

cd /etc
grep localhost hosts



759 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 09:43:58.01 ID:ux+ef9t8.net]
>> 699 Ruby
実数、逆関数
https://ideone.com/lflSc0

760 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:57:52.91 ID:LVcLEl+f.net]
>>736
訂正
お題:LANに繋がっているホストの一覧を出力しなさい

761 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:34:44.91 ID:z6+TJcGX.net]
>>742
Linux 等の UNIX 系OSで

ping -b ブロードキャストアドレス

とやると同じセグメントに繋がっているやつは ICMP ECHO を返して来て IP アドレスが分かるかも知れない。
但しファイヤーウォールの設定で返さないかも知れない。また他のセグメントにはパケット送らないのでわからない。

762 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:35:44.08 ID:z6+TJcGX.net]
あ、ごめん。これは IPv4 限定の話かも知れない。

763 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:41:32.33 ID:N93NyTwd.net]
身長と体重がいくつか与えられるのでBMIを求めなさい
なお身長と体重は1以上1000未満の整数とする
出力精度は小数第三位を四捨五入
各言語で一番短くかけた人が勝ち

例 ruby
while gets

end

# input
150 50
160 55
180 120

# output

764 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 15:47:03.36 ID:N93NyTwd.net]
ミスった。

単位は身長cm, 体重kg

例 ruby
while gets
 h, w = $_.split.map &:to_i
 puts '%.2f' % (1e4 * w / h**2)
end

# input
150 50
160 55
180 120
150 225

# output
22.22
21.48
37.04
100.00

765 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 17:20:36.25 ID:6wrElEJt.net]
https://ideone.com/lsWdqo

766 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 19:23:09.62 ID:N93NyTwd.net]
>>747
67Bまで縮めてみた
C
https://ideone.com/ivxfS2

767 名前:デフォルトの名無しさん [2018/08/17(金) 21:08:30.56 ID:7hC1UKUq.net]
>>745
Perl
https://paiza.io/projects/4DM4_8fx_EiOXO4D3aOV4A

普通ならダブルクォーテーション使いそうな箇所で qq() 使ってクォートしている理由は今Androidのタブレット使っててうまく入力出来なかったため。

768 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 23:22:41.44 ID:eWaVkn5S.net]
>>746
Python3で66バイト
https://ideone.com/qWiKey



769 名前:デフォルトの名無しさん [2018/08/18(土) 02:50:37.57 ID:K3y6E3T8.net]
鈴木貫太郎
灘中
https://youtu.be/BnS7vMsVV2s

6桁の整数、ABCDEF の一番上の位のAを、
一の位へ移動した数、BCDEFA が、元の数の3倍になるとき、
この条件を満たす、元の数をすべて(2つ)答えよ

ヒント。x = BCDEF とおいて考える

答え、142857, 285714

770 名前: mailto:sage [2018/08/18(土) 07:04:47.65 ID:/9y7PjMS.net]
>>751
n/7 循環列問題ですか…

771 名前:デフォルトの名無しさん mailto:sage [2018/08/18(土) 15:32:13.56 ID:h7OdrOPI.net]
>>745
Ruby 43 bytes
#!ruby -pa
$_='%.2f'%eval('1e4/'+$F*'**2*')

>>751
3 * ABCDEF = BCDEFA ∧ A != 0
<=> 42857 * A = BCDEF ∧ A != 0
<=> 42857 * A = BCDEF ∧ A = 1, 2
<=> ABCDEF = 142857, 285714

772 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 01:16:27.70 ID:tX8wxXbT.net]
>>751 C(ただの力技)
https://ideone.com/MljBH1

773 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 01:18:54.67 ID:tX8wxXbT.net]
お題:
1.BINGOカードを作る
2.BINGO抽選機を作る

ここで使われるビンゴカードは5x5のマス目に1から75までの数字が
ランダムに配置されており、数字が見つけやすいように左の列から
B列(1〜15), I列(16〜30), N列(31〜45), G列(46〜60), O列(61〜75)が
配置された一般的によく使われるタイプ。
5x5のマスの中央はFree(すでに開いた状態)。

出力例:https://ideone.com/R6eADP
(この形に従う必要はないです)

回答例(C言語):
 カード作成 https://ideone.com/aJBJ9v
 抽選機 https://ideone.com/NuIRYm

774 名前:デフォルトの名無しさん [2018/08/19(日) 03:52:23.20 ID:FQWxbBlW.net]
>>751
Kotlin
https://paiza.io/projects/BFd9v2qeKaNcdssTQuj5Jw

これも力業だな。ただループして調べているだけ。
尚、最上位桁が0の場合も含めると0も該当する値になる。

775 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 04:55:18.29 ID:FQWxbBlW.net]
>>755
Kotlin
カード作成 https://paiza.io/projects/YeZEal6Ke6l3goeaDt9JuQ
抽選機 https://paiza.io/projects/j-F4qhKHa_nNTCBEtFbk_w

776 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 02:30:06.13 ID:V9a8ZDkH.net]
>>755
Perl
カード生成 https://ideone.com/82oHLD
抽選機 https://ideone.com/ZICMOi

777 名前:UNIXプログラミング質問スレより mailto:sage [2018/08/21(火) 03:04:43.91 ID:34Jmks75.net]
お題:【構造のあるテキストの処理】各項目の内容をそれぞれソートして元のテキストに埋め込め。
====== 標準入力 ==========
* Fruit
apple
banana
orange
banana

* Animal
dog
cat
penguin

====== 標準出力 ==========
* Fruit
apple
banana
orange

* Animal
cat
dog
penguin

条件:ソートには外部コマンドを用いること。

778 名前:758 mailto:sage [2018/08/21(火) 03:11:53.68 ID:34Jmks75.net]
ソートに外部コマンドを使うのは、テキストの処理を取り替える拡張を想定しています。
例えば sort -u コマンドを tr '[a-z]' '[A-Z]' に置き換えて
* Fruit
APPLE
のようにできるようにしたい。

UNIXプログラミング質問スレにて、
このような処理はシェルスクリプトには荷が重く Powershell や Ruby が向いている、みたいなことを伺いました。
ぜひ回答を参考にしたいです。



779 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 14:35:58.26 ID:2YpoFUMY.net]
>>759 Ruby

ext_cmd = 'sort -u'

ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
  temp_fname = "temp#{i}"
  File.write(temp_fname, s[/\n\K.*/m])
  heading = s[/\A.*/]
  execed = `#{ext_cmd} #{temp_fname}`
  File.delete(temp_fname)
  [heading, execed] * $/
end

puts str * $/

780 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 14:40:47.02 ID:2YpoFUMY.net]
catを使うように修正
catのヒアドキュメントさえ使えれば一時ファイル作らなくて済むんだけど

ext_cmd = 'tr a-z A-Z'

ary = $<.read.scan(/\*.*?\n(?:(?=\n)|\z)/m)
str = ary.map.with_index do |s, i|
  temp_fname = "temp#{i}"
  File.write(temp_fname, s[/\n\K.*/m])
  heading = s[/\A.*/]
  execed = `cat #{temp_fname}|#{ext_cmd}`
  File.delete(temp_fname)
  [heading, execed] * $/
end

puts str * $/

781 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 01:46:46.02 ID:wb9Zg9xS.net]
>>759
Perl
https://paiza.io/projects/8vYRslCsu29ZvqFXGkZC7A

項目の区切りは連続した2つの改行になってます。

782 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 01:56:27.69 ID:PmiUKg2L.net]
>>759 zsh
setopt rcquotes; sed -n '/^*/h; /^*/!{x;p;x;p;}' | paste - - \
| awk -F' ' -v OFS=' ' '$2 { print $1,$2 } ! $2 { printf "%c",0 }' \
| xargs -0 -n 1 -I@ -- zsh -c 'echo ''@'' | tee >(read -e | cut -f 1) | sed ''$d;'' | cut -f 2 | sort -u ;echo'

null区切りでチャンク分け。構造がもっと複雑になるとこの方針では対応できない。

783 名前:デフォルトの名無しさん [2018/08/22(水) 03:09:32.13 ID:wb9Zg9xS.net]
>>759
bash
https://paiza.io/projects/Xq6KyZBO0dqynoJNUYhlEg

784 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 04:46:03.18 ID:h82tfzI1.net]
単純に、別々のファイルに、分割すれば良いのでは?

* Fruit のファイル
* Animal のファイル

各ファイルを、sort, unique する

785 名前:765 mailto:sage [2018/08/22(水) 05:05:39.72 ID:h82tfzI1.net]
一旦、別々のファイルにしたなら、PowerShell で、

cat .\test.txt | sort | gu

gu は、Get-Unique のエイリアス。
漏れのPowerShell では、uniq のエイリアスは使えない

786 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 08:57:59.02 ID:AfGRGNs6.net]
このスレでbashが多いのは何故?

787 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 09:06:48.94 ID:AfGRGNs6.net]
今見返したらそんなに多くなかった‥

788 名前:デフォルトの名無しさん [2018/08/22(水) 09:44:37.32 ID:zudhoHB+.net]
>>768
Linuxのディストリビューションでは最初からインストールされてるのがよくあってある程度有名で、sh互換でshしか知らなくても書けるからではないかな。
それとWebの実行環境があるというのも理由かも。こういう所で公開するのには都合が良い。



789 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 12:27:54.30 ID:AfGRGNs6.net]
>>770
そうなんですね!
みんなの回答見てると正規表現や少ないコードや難しい表現でコーディングできてて関心します‥
自分にはとても到達出来ない‥

790 名前:泣gの名無しさん mailto:sage [2018/08/22(水) 15:46:06.44 ID:PmiUKg2L.net]
>>759 zsh
setopt rcquotes; sed -E -e 's:^(\* .*):{ echo ''\1''; sort -u; echo } << *:' -e 's:^$:*:' | zsh
xargsの区切り文字の辛さからは開放されたが、echo ''\1'' がイマイチだ。

なるほど、構造のあるデータはむしろファイル階層として表現したほうが自然か…

791 名前:デフォルトの名無しさん [2018/08/22(水) 23:06:19.28 ID:YlEU3d3x.net]
>>759 Vim
$ cat odai-pt11-758.input | vim -es '+:g /\%(^\*.*\n\)\@<=/,/[ \t\n]*\%(\n\*.*\|\%$\)/ !sort | tr a-z A-Z | nl' '+%p' '+:q!' /dev/stdin
* Fruit
1 APPLE
2 BANANA
3 BANANA
4 ORANGE

* Animal
1 CAT
2 DOG
3 PENGUIN
$

792 名前:デフォルトの名無しさん mailto:sage [2018/08/22(水) 23:55:42.77 ID:h82tfzI1.net]
64ビットWindows10 なら、WSL で、Ubuntu を入れると、
bash, vim, Python は最初から入っている

WindowsのExplorer では、BOMなしUTF-8 のファイルは検索できないから、
WSL でLinux側から、grep で検索している

シェルスクリプトの欠点は、パイプラインがテキスト渡しになる。
オブジェクトの型が無くなって、すべて文字列になる

一方、PowerShell ではオブジェクト渡しだから、オブジェクトの構造・型が維持できる

>>759-760
外部コマンドを切り替えるという抽象的な処理を、処理間にはさむのは難しい。
すべての処理の冒頭か最後で、一括でフィルターする方がバグらない

793 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 00:19:08.54 ID:FMBOl46f.net]
>>774
なるほど…
Powershellでの完全な回答例を見せていただけませんか?
標準入力からファイルに落として出力に吐くまで。オブジェクト渡しの雰囲気を感じたいです。

794 名前:765 mailto:sage [2018/08/23(木) 09:28:38.07 ID:qUZ5eK5Q.net]
Set-PSDebug -Strict # 変数宣言を強制する

$file = ( cat in.txt ) # 入力ファイル
$dat_basenames = @() # 拡張子なしのファイル名の配列

foreach ( $line in $file ) { # 各行
if( $line.Length -eq 0 ){ continue } # 空行は処理しない

if ( $line.Substring( 0, 1 ) -eq '*' ) { # 1文字目が、* なら
$fname = $line.Substring( 2 )
$dat_basenames += $fname # 追加
$fname += '.dat' # 拡張子つき
} else {
Add-Content $fname $line # 追記
}
}

foreach ( $dbname in $dat_basenames ) { # 各 .dat ファイル
$fname = $dbname + '.dat' # 拡張子つき
$str = "* ${dbname}`r`n"
$tmp = cat $fname | sort | gu # sort, unique
$str += ( $tmp -join "`r`n" ) # 改行区切り
echo $str
}

PowerShell で作った。
cd で、作業フォルダへ移動してから実行して

入力ファイル、in.txt から、各ファイルへ分割する。
分割後のファイル名を、Fruit.dat, Animal.dat として、各ファイルを処理した

795 名前:デフォルトの名無しさん [2018/08/24(金) 05:00:24.02 ID:QxK4Y8yu.net]
点が10個一直線に並んでおり、各点が他の点との右方向の距離をいくつか知っている時、最も左にある点を求めよ

最も左にある点が求められない時はあと何の情報があれば求められるのかを最低個数で列挙すること

例1
a,b,cの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない。
c点はb点が-40右にあることをしっている。
結果
最も左にある点はa点

例2
a,b,c,dの点がある。
a点はb点が30右にあることを知っている。
b点は何も知らない
c点はd点が20右にあることを知っている。
d点は何も知らない。
結果
求められない。必要な情報は
a点からc点までの距離

796 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 05:58:44.74 ID:rBPgXHvS.net]
>>777
実際に自分で書いてみて、求められたら解答例を提示できる?

797 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:02:12.41 ID:ZkSPfVdV.net]
「知っている」の主語が点に見えるけど
そうじゃないよね?

なんでそういう文にしたの?

798 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:33:50.94 ID:phPhGhWW.net]
連結リストを使って、出来上がったグラフが連結なら求められる
つまり、出来上がったグラフが二つ三つそれ以上に分かれている非連結グラフになってると、距離は分からない

……直感的には多分こうだが、何かしらの証明は必要
「連結グラフだが距離が分からない」反例があればいい



799 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 11:28:11.41 ID:qtSNV1ih.net]
>>777
点が10個あるなら例1,2両方とも判断不能。どっちもあと最低7個必要
しかも直線がRなのかR∪∞∪-∞なのかで解が変わるから提示しろ
あと出力はともかくデータの与えられ方くらい提示しろ

800 名前:765 mailto:sage [2018/08/24(金) 12:34:38.87 ID:ZgK6e0Tb.net]
text = File.read 'in.txt' # 入力ファイル

header = ""
str_hash = { }
result = [ ]

def sort_string ( head, hash, res )
res.push head
Hash[ hash.sort ].each_key { |key| res.push key } # sort
hash.clear # 空にする
end

text.each_line do |line| # 各行
line.chomp! # 末尾の改行を削除する
next if line.empty? # 空文字は処理しない

if line.start_with? '*' # 先頭文字が、* なら
sort_string( header, str_hash, result ) unless str_hash.empty? # 空でなければ
header = line
else
str_hash[ line ] = true
end
end

sort_string( header, str_hash, result )
puts result

Ruby で作った。
PowerShell よりは断然、作りやすい。
ただ、sort_string( ) を2か所で呼ぶのが、ダサイ

801 名前:デフォルトの名無しさん [2018/08/25(土) 17:43:06.40 ID:nE7N9dPk.net]
お題
将棋の初期状態の駒40枚を
利き筋に他の駒がないように配置する

802 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:05:04.08 ID:486ljwsa.net]
1000垓通り表示しろとでも?

803 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:45:34.12 ID:WT6GNhg9.net]
明記されてない条件は好きにしていいのがこのスレのルールですよ

804 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 20:55:52.54 ID:N/q1MSK+.net]
お題を出す前に出題者は自分の解答を(解くことが可能かの確認も兼ね)作っておくのもルールだ
適切な入出力例や問題文にあるべき条件が抜けてるっていうのはそれをやってない証拠

805 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 22:57:36.63 ID:yggGxXGy.net]
>>783
有名な作品がいくつかあるね
全て同じ方向を向いたヤツも

>>784
全ての組み合わせを数えた人がいるの?

806 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 08:39:25.15 ID:8NHhsyIb.net]
トランプの配置についてのアルゴリズムを考えてます。
トランプの横幅をX
トランプの高さをYとし
並べるトランプは偶数枚
全てのトランプを配置した時の全体を、トランプ配置と呼ぶとして
トランプ配置の横幅と縦幅の割合を、おおよそX:Yとしたい

この場合、アルゴリズムはどう考えたらいいでしょうか?

807 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:35:40.65 ID:/JFPzkHn.net]
ゴリ押しの総当たり

並べる枚数横にx縦にyが無尽蔵に大きくなれば比率に近づく
並べるトランプの上限が決まって無くて偶数枚だけが条件なら延々と並べる枚数を増やせばいい
一兆枚くらい並べれば比率はX/Yに近づく
1000000000億兆枚くらいのトランプを使えば横幅X高さYなんて充分に蟲出来るから全体の割合を調整するのは枚数が多ければ多いほどラク
10那由多ほど並べれば、本当にカードは点くらいなもので、縦横比率はx、yの枚数だけで決まる

808 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:52:42.49 ID:O9adGcKd.net]
>>788
おおよそとかいまいちよくわからん
例を示して



809 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 09:59:10.89 ID:O9adGcKd.net]
>>789
バカなの?
> 並べるトランプの上限が決まって無くて偶数枚だけが条件
なら、縦横2枚ずつ(計4枚)並べればいいだけ

810 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 11:08:57.34 ID:MXsSoN4T.net]
n枚をnX nYの長方形の対角線上に斜めにならべれば
X:Yになるけど

問題あってる?

811 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:16:22.70 ID:HHP/3bjy.net]
>>788
┌─┐
│ ?│
└─┘
これを偶数枚並べて縦横比同じにするなら
こうだよね

┌─┬─┐
│ ?│ ?│
├─┼─┤
│ ?│ ?│
└─┴─┘
アルゴリズムもクソもないように思うのだが?
問題の書き方間違ってない?

812 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 13:22:25.82 ID:6zIp6UvA.net]
さすがに、
枚数は外から与えられるのでは?

813 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 16:57:45.44 ID:2xrJOS4Z.net]
枚数nに対して p * q = n を満たす正の整数 p, q の内 |p - q| / |p^2 + q^2| が最小になる組み合わせを求めるだけでしょ?

814 名前: mailto:sage [2018/08/26(日) 23:44:29.53 ID:TLwXHnMN.net]
https://mevius.5ch.net/test/read.cgi/tech/1480579110/981
に引き続いて、現に困ってしまった問題を出題

windows コマンドラインの xcopy コマンドを実装せよ
コマンドラインから「xcopy パス1 パス2」 と入力すると
パス1 以下にあるファイルをすべてパス2以下にコピーするようにせよ
ディレクトリについては、再帰的にコピーせよ

・現実の xcopy コマンドには色々なオプションがあるが、それは実装しなくてもよい
・読み込み対象のファイルの属性については考慮しなくてよい、読み込めるファイルのみ所定のパスにコピーできればそれでよい
・その他、コピーに問題のある状態が発生したときには、標準エラー出力にエラー内容を表示すればそれでいい

Windows Update の度にPCが激遅になるのに堪えかねて、C ドライブを SSD に換えることにしました。OS は再度インストールしなおすつもりです。
現在の C ドライブの内容は別途コピーしておいて、困ったときには参照できるようにしたいと思いました。
ところが、「xcopy c: x:/tmp」とすると、「メモリーが足りなくなった」といって途中で止まるのです…困りました…

815 名前: mailto:sage [2018/08/26(日) 23:57:13.93 ID:TLwXHnMN.net]
>>796
条件を追加します
ハードリンクやシンボリックリンクは考えなくともよい
xcopy パス1 パス2
のパス2 がパス1 の下にある場合、実装がまずいと永遠にコピーし続ける困ったことになるが、それも考慮しなくてもよい
(今回やりたいことは、「xcopy c: x:/tmp」であるので、これが問題なく動けばそれでよい…)

816 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 00:30:49.02 ID:FMLlc3nv.net]
お金くれたら書くよ

817 名前: mailto:sage [2018/08/27(月) 00:37:15.85 ID:W4qvSHyH.net]
>>798
ビットコインではいかがでしょう?

818 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 03:58:54.01 ID:EFFRlxLO.net]
>>796
https://qiita.com/himrox/items/3dc7dec2c0e584a78e3d
xcopy メモリで検索したらこんなページ出たがこれじゃあかんと?



819 名前:デフォルトの名無しさん [2018/08/27(月) 10:42:11.16 ID:ywsjsNTA.net]
>>796
Windowsならエクスプローラ使ってただコピーするのでは何か不都合があるのか?

まあ、お題としてそういうのなしで作れというのはアリだが、なんとなくWindowsの場合はエクスプローラが使っているのと同じライブラリ関数を一回呼び出すだけで終わってしまいそうな気がしてならない。

820 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 11:41:58.10 ID:ba8BcfX3.net]
xcopy ではなく、robocopy を使えば?

821 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:06:25.46 ID:wliJqEsP.net]
>>793
他の人も勘違いしてるけど、横縦比をx:yにする問題だよ。おおよそらしいけど。

822 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:25:27.41 ID:C1HpzEi0.net]
>>803
問題を読んでみな

823 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 21:34:12.17 ID:wliJqEsP.net]
失礼しました…

824 名前:デフォルトの名無しさん [2018/08/27(月) 21:37:25.51 ID:l2rfNjjd.net]
>>803
トランプの横幅がYで高さがXでしょ?
で、偶数枚並べてX:Yにするんでしょ?
4枚でなるじゃん。およそどころかぴったりX:Yに。

825 名前:デフォルトの名無しさん [2018/08/27(月) 21:41:44.66 ID:l2rfNjjd.net]
ごめん。逆か。まあしかしわかるよね。

826 名前: mailto:sage [2018/08/28(火) 00:09:17.09 ID:mZeP8xuo.net]
>>796-797
https://mevius.5ch.net/test/read.cgi/tech/1434079972/52

>>800
有用な情報ありがとうございます
なるほど、256バイト以上のパスは受け付けない、ですか…
MSDN https://msdn.microsoft.com/ja-jp/library/cc429198.aspx
なんかをみると、「この関数の Unicode 版を呼び出し、パスの前に "\\?\" という接頭辞を追加してください。」と書いてありますね
でも、C++ でユニコードバージョンに対応させるってどうするのだろう?#define UNICODE だけではダメみたいだし…

827 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:22:03.08 ID:LPHHle1d.net]
>>808
https://qiita.com/jugemjugemu/items/4db1dfd3d2737d3979df
CreateFileW

828 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 00:26:01.26 ID:04IHxsB7.net]
>>808
そろそろ適切なスレに移動したら?



829 名前: mailto:sage [2018/08/28(火) 00:29:32.20 ID:mZeP8xuo.net]
>>810
>適切なスレ
って、あなたはどこを想定しているのですか?

830 名前:デフォルトの名無しさん mailto:sage [2018/08/28(火) 02:44:52.27 ID:Z7hOIgIF.net]
スレタイも読めないのかこいつは・・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<313KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef