プログラミングのお題スレです。
【出題と回答例】
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/
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/
プログラミングのお題スレ Part20
■ このスレッドは過去ログ倉庫に格納されています
2021/06/19(土) 00:02:57.84ID:MQWrKSb7
705デフォルトの名無しさん
2022/08/17(水) 23:34:27.13ID:yTY/OYLu >>701
(><)
(><)
706デフォルトの名無しさん
2022/08/18(木) 02:15:12.90ID:KCyiWPRI707デフォルトの名無しさん
2022/08/18(木) 03:07:13.35ID:dBOjwuYR >>701 JavaScript
> ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r))
[ '(^^)', '(--)(^^)(vv)', '(><)' ]
> ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r))
[ '(^^)', '(--)(^^)(vv)', '(><)' ]
708デフォルトの名無しさん
2022/08/18(木) 10:19:41.72ID:KriVCD9m >>701 Ruby
f = -> str do
loop do
str.sub!(/(.)\)(.*)\(\1/, '(\1\1)\2') ||
str.sub!(/\((.)(.+)\1\)/, '(\1\1)\2') ||
(break str)
end
end
%w[ ^)(^ ^)(-(^-)(vv) (-(^-)^)].each do |s|
puts '%s -> %s' % [s, f[s.b]]
end
# =>
^)(^ -> (^^)
^)(-(^-)(vv) -> (^^)(--)(vv)
(-(^-)^) -> (--)(^^)
f = -> str do
loop do
str.sub!(/(.)\)(.*)\(\1/, '(\1\1)\2') ||
str.sub!(/\((.)(.+)\1\)/, '(\1\1)\2') ||
(break str)
end
end
%w[ ^)(^ ^)(-(^-)(vv) (-(^-)^)].each do |s|
puts '%s -> %s' % [s, f[s.b]]
end
# =>
^)(^ -> (^^)
^)(-(^-)(vv) -> (^^)(--)(vv)
(-(^-)^) -> (--)(^^)
709デフォルトの名無しさん
2022/08/18(木) 10:20:40.39ID:KriVCD9m >>703 Ruby
PLACEHOLDER = [*0..80]
field = 9.times.reduce([]) do |s, y|
s << 9.times.map do |x|
PLACEHOLDER[9 * y + x]
end
end
puts field.map{|r| r.map{'%02d' % _1}.join}
# =>
000102030405060708
091011121314151617
181920212223242526
272829303132333435
363738394041424344
454647484950515253
545556575859606162
636465666768697071
727374757677787980
PLACEHOLDER = [*0..80]
field = 9.times.reduce([]) do |s, y|
s << 9.times.map do |x|
PLACEHOLDER[9 * y + x]
end
end
puts field.map{|r| r.map{'%02d' % _1}.join}
# =>
000102030405060708
091011121314151617
181920212223242526
272829303132333435
363738394041424344
454647484950515253
545556575859606162
636465666768697071
727374757677787980
710デフォルトの名無しさん
2022/08/18(木) 10:42:28.41ID:KriVCD9m >>703 お題をよく読んでいなかった >>709の続き
row = -> (n, field) {field[n]}
column = -> (n, field) {field.map{_1[n]}}
block = -> (n, field) {9.times.map{n * 3 + n / 3 * 18 + _1 + _1 / 3 * 6}.map{field.flatten[_1]}}
puts row[7, field].join(?,)
# => 63,64,65,66,67,68,69,70,71
puts column[7, field].join($/)
# =>
7
16
25
34
43
52
61
70
79
puts block[7, field].each_slice(3).map{_1.join(?,)}.join($/)
# =>
57,58,59
66,67,68
75,76,77
row = -> (n, field) {field[n]}
column = -> (n, field) {field.map{_1[n]}}
block = -> (n, field) {9.times.map{n * 3 + n / 3 * 18 + _1 + _1 / 3 * 6}.map{field.flatten[_1]}}
puts row[7, field].join(?,)
# => 63,64,65,66,67,68,69,70,71
puts column[7, field].join($/)
# =>
7
16
25
34
43
52
61
70
79
puts block[7, field].each_slice(3).map{_1.join(?,)}.join($/)
# =>
57,58,59
66,67,68
75,76,77
711704
2022/08/18(木) 23:38:15.48ID:YBxy/c4L712デフォルトの名無しさん
2022/08/19(金) 23:42:01.44ID:GkIv/1vJ お題
<user>:<group>の数
<user>:<group>
<user>:<point>の数
<user>:<point>
が入力されます
<group>ごとに<point>を集計して<group>順に
<group>:<point>を出力してください
例)
// 入力
6
UserE:GroupC
UserD:GroupA
UserB:GroupC
UserA:GroupC
UserC:GroupB
UserF:GroupB
6
UserB:3
UserF:2
UserD:5
UserC:13
UserE:11
UserA:7
// 出力
GroupA:5
GroupB:15
GroupC:21
<user>:<group>の数
<user>:<group>
<user>:<point>の数
<user>:<point>
が入力されます
<group>ごとに<point>を集計して<group>順に
<group>:<point>を出力してください
例)
// 入力
6
UserE:GroupC
UserD:GroupA
UserB:GroupC
UserA:GroupC
UserC:GroupB
UserF:GroupB
6
UserB:3
UserF:2
UserD:5
UserC:13
UserE:11
UserA:7
// 出力
GroupA:5
GroupB:15
GroupC:21
713デフォルトの名無しさん
2022/08/19(金) 23:58:05.14ID:zRvvDV0W なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?
714デフォルトの名無しさん
2022/08/20(土) 00:02:54.24ID:xIohwuBb >>712 Ruby
g, p = str.split(/^\d+$/)[1, 2].map{_1.strip.each_line.map{|s| s.chomp.split(?:)}.to_h}
puts g.reduce(Hash.new(0)){|h, (k, v)| h[v] += p[k].to_i; h}.sort.map{_1.join(?:)}
# =>
GroupA:5
GroupB:15
GroupC:21
g, p = str.split(/^\d+$/)[1, 2].map{_1.strip.each_line.map{|s| s.chomp.split(?:)}.to_h}
puts g.reduce(Hash.new(0)){|h, (k, v)| h[v] += p[k].to_i; h}.sort.map{_1.join(?:)}
# =>
GroupA:5
GroupB:15
GroupC:21
715デフォルトの名無しさん
2022/08/20(土) 07:49:15.49ID:/HXUcxOA // >>712 Node.js
import readline from 'node:readline';
const rl = readline.createInterface({input: process.stdin, output: process.stdout});
const all = [/* {user, group, point}, ... */];
let usergroup = false;
rl.on('line', line => {
line = line.trim();
if (line) {
if (/^\d+$/.test(line)) {
usergroup = !usergroup;
} else if (usergroup) {
const {groups} = line.match(/^(?<user>[^:]+):(?<group>[^:]+)$/);
all.push(groups);
} else {
const {groups: {user, point}} = line.match(/^(?<user>[^:]+):(?<point>\d+)$/);
Object.defineProperty(all.find(_ => _.user == user), 'point', {value: Number(point), enumerable: true});
}
} else {
rl.close();
}
});
rl.on('close', () => {
for (const [group, point] of Object.entries(all.reduce((gp, {group, point}) => {gp[group] = (gp[group] ?? 0) + point; return gp;}, {})).sort(([a], [b]) => a < b ? -1 : 1)) {
console.log(`${group}:${point}`);
}
});
import readline from 'node:readline';
const rl = readline.createInterface({input: process.stdin, output: process.stdout});
const all = [/* {user, group, point}, ... */];
let usergroup = false;
rl.on('line', line => {
line = line.trim();
if (line) {
if (/^\d+$/.test(line)) {
usergroup = !usergroup;
} else if (usergroup) {
const {groups} = line.match(/^(?<user>[^:]+):(?<group>[^:]+)$/);
all.push(groups);
} else {
const {groups: {user, point}} = line.match(/^(?<user>[^:]+):(?<point>\d+)$/);
Object.defineProperty(all.find(_ => _.user == user), 'point', {value: Number(point), enumerable: true});
}
} else {
rl.close();
}
});
rl.on('close', () => {
for (const [group, point] of Object.entries(all.reduce((gp, {group, point}) => {gp[group] = (gp[group] ?? 0) + point; return gp;}, {})).sort(([a], [b]) => a < b ? -1 : 1)) {
console.log(`${group}:${point}`);
}
});
716デフォルトの名無しさん
2022/08/20(土) 17:09:35.31ID:tvd+mgyM717デフォルトの名無しさん
2022/08/20(土) 21:26:59.76ID:myFbjTal718デフォルトの名無しさん
2022/08/20(土) 22:24:09.90ID:5JSGWnVi71996
2022/08/21(日) 02:42:00.00ID:P6BPpVvp >>712 Perl5
use feature qw{say signatures}; no warnings "experimental::signatures";
sub ($n, @a) {
$h{$$_[0]} = $$_[1] for map{[/(\w+)/g]} @_[1..$n];
sub ($m, @) {
$g{$h{$$_[0]}} += $$_[1] for map{[/(\w+)/g]} @_[1..$m];
}->(@a[$n..$#a]);
say "$_:$g{$_}" for sort keys %g;
}->(<>);
※見易くするためインデントを全角スペースに置換してあります。
実行結果:
https://ideone.com/GxsRSY
use feature qw{say signatures}; no warnings "experimental::signatures";
sub ($n, @a) {
$h{$$_[0]} = $$_[1] for map{[/(\w+)/g]} @_[1..$n];
sub ($m, @) {
$g{$h{$$_[0]}} += $$_[1] for map{[/(\w+)/g]} @_[1..$m];
}->(@a[$n..$#a]);
say "$_:$g{$_}" for sort keys %g;
}->(<>);
※見易くするためインデントを全角スペースに置換してあります。
実行結果:
https://ideone.com/GxsRSY
720デフォルトの名無しさん
2022/08/21(日) 06:03:07.44ID:V5T4kdVo >>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?
721デフォルトの名無しさん
2022/08/21(日) 07:03:57.35ID:3JIuIXQv <group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし
722デフォルトの名無しさん
2022/08/21(日) 08:49:24.60ID:0ZMA3aWJ723デフォルトの名無しさん
2022/08/21(日) 18:07:19.66ID:ecIOs+Jg724デフォルトの名無しさん
2022/08/21(日) 18:28:38.88ID:Y2TZP89X お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする
Hello, World!が完全に出力されたらGAME OVERとする
725デフォルトの名無しさん
2022/08/21(日) 18:45:13.28ID:ui07Fbeq >>724 Ruby
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit}
# =>
Hello, World!
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit}
# =>
Hello, World!
726デフォルトの名無しさん
2022/08/21(日) 18:49:48.17ID:ecIOs+Jg727デフォルトの名無しさん
2022/08/21(日) 18:51:27.42ID:ui07Fbeq >>725 訂正
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit!}
# => H
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit!}
# => H
728デフォルトの名無しさん
2022/08/21(日) 19:50:47.18ID:ecIOs+Jg729デフォルトの名無しさん
2022/08/21(日) 20:19:09.38ID:/7u80ZfN730デフォルトの名無しさん
2022/08/21(日) 21:11:05.94ID:ecIOs+Jg731729
2022/08/22(月) 19:20:01.17ID:7CA3B9Dd732デフォルトの名無しさん
2022/08/25(木) 15:38:14.81ID:bJn+zm7R733デフォルトの名無しさん
2022/08/25(木) 15:52:23.73ID:BfuXla1W734デフォルトの名無しさん
2022/08/25(木) 16:09:53.36ID:6j74uL6b 54.144.0.0/12といったどこかで見たことあるような形式の文字列を入力すると
^(?!(54.144.|54.145.|54.146.|54.147.|54.148.|54.149.|54.150.|54.151.|54.152.|54.153.|54.154.|54.155.|54.156.|54.157.|54.158.|54.159.))
といったいい感じの文字列が標準出力に出力されるやつ、誰か作れますか?
例の他にも54.208.0.0/13 54.216.0.0/14 54.192.0.0/12 54.160.0.0/11 54.220.0.0/15といった似た感じの文字列が入力され
やはりいい感じに処理された別の文字列が出力されます
できればライセンスはゼロ条項BSDライセンスでお願いします
^(?!(54.144.|54.145.|54.146.|54.147.|54.148.|54.149.|54.150.|54.151.|54.152.|54.153.|54.154.|54.155.|54.156.|54.157.|54.158.|54.159.))
といったいい感じの文字列が標準出力に出力されるやつ、誰か作れますか?
例の他にも54.208.0.0/13 54.216.0.0/14 54.192.0.0/12 54.160.0.0/11 54.220.0.0/15といった似た感じの文字列が入力され
やはりいい感じに処理された別の文字列が出力されます
できればライセンスはゼロ条項BSDライセンスでお願いします
735デフォルトの名無しさん
2022/08/25(木) 16:22:36.77ID:0z7AphVM ま、まあ、作れなくはないかな…
736デフォルトの名無しさん
2022/08/25(木) 18:48:07.98ID:0xws5w3m フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ
本人以外は
本人以外は
737デフォルトの名無しさん
2022/08/25(木) 20:40:48.98ID:0z7AphVM738デフォルトの名無しさん
2022/08/25(木) 21:10:16.35ID:/BGaqBqg >>734 JavaScript
function _734(ip_range) {
const result = [];
const as = ip_range.split(/\D/).map(_ => Number(_));
const m = as.at(-1);
const q = Math.floor(m / 8);
const r = m % 8;
const e = 8 - r;
const l = as[q].toString(2).padStart(8, '0').slice(0, r);
for (let i = 0, sup = 2 ** e; i < sup; i++) {
as.splice(q, 1, Number.parseInt(l + i.toString(2).padStart(e, '0'), 2));
result.push(as.slice(0, q + 1));
}
return '^(?!(' + result.map(_ => `${_.join('\\.')}${q < 3 ? '\\.' : ''}`).join('|') + '))';
}
function _734(ip_range) {
const result = [];
const as = ip_range.split(/\D/).map(_ => Number(_));
const m = as.at(-1);
const q = Math.floor(m / 8);
const r = m % 8;
const e = 8 - r;
const l = as[q].toString(2).padStart(8, '0').slice(0, r);
for (let i = 0, sup = 2 ** e; i < sup; i++) {
as.splice(q, 1, Number.parseInt(l + i.toString(2).padStart(e, '0'), 2));
result.push(as.slice(0, q + 1));
}
return '^(?!(' + result.map(_ => `${_.join('\\.')}${q < 3 ? '\\.' : ''}`).join('|') + '))';
}
739デフォルトの名無しさん
2022/08/25(木) 22:00:47.00ID:JPPVgQ9Y beer licenseでよければ書くが
740デフォルトの名無しさん
2022/08/26(金) 04:09:37.08ID:NIKxWs5c 割とすぐに出来るもんなんですね
どちらも実用上問題なさそうな、いい感じの実行結果です
>738は最新の実行環境に心当たりがなかったので確認に手間どりましたが
Chromeのコンソールから実行して確認できました
(cscriptで実行しようとしたらat()に対応してなかったので)
いやー勉強になります、ありがとう
どちらも実用上問題なさそうな、いい感じの実行結果です
>738は最新の実行環境に心当たりがなかったので確認に手間どりましたが
Chromeのコンソールから実行して確認できました
(cscriptで実行しようとしたらat()に対応してなかったので)
いやー勉強になります、ありがとう
741デフォルトの名無しさん
2022/08/26(金) 04:49:22.52ID:0rX9u4fb >>740
スレタイも読めないアホは消えろ
スレタイも読めないアホは消えろ
743デフォルトの名無しさん
2022/08/26(金) 11:51:47.61ID:d54FvNjc >>733
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。
744デフォルトの名無しさん
2022/08/26(金) 14:32:15.45ID:71YXfdUw745デフォルトの名無しさん
2022/08/26(金) 18:44:07.03ID:NQ4mbOjq >>733
#!/usr/bin/env sh
cat <<"EOL" | perl -ne '/(Hello, World)(?:[!])/ ? die " $1 got failed." : print'
> foo
> bar
> baz
> Hello, World
> Hello, World
> Hello, World!
> you can't see me, right?
> EOL
foo
bar
baz
Hello, World
Hello, World
Hello, World got failed. at -e line 1, <> line 6.
#!/usr/bin/env sh
cat <<"EOL" | perl -ne '/(Hello, World)(?:[!])/ ? die " $1 got failed." : print'
> foo
> bar
> baz
> Hello, World
> Hello, World
> Hello, World!
> you can't see me, right?
> EOL
foo
bar
baz
Hello, World
Hello, World
Hello, World got failed. at -e line 1, <> line 6.
746デフォルトの名無しさん
2022/08/26(金) 21:28:18.28ID:NIKxWs5c はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが
もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが
もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます
747デフォルトの名無しさん
2022/08/26(金) 21:31:39.94ID:NIKxWs5c ついでというかなんというか>734の自分のお題に対する自己回答です(色々と手抜きしてありますが)
#!/usr/bin/ksh
function proc {
typeset A B C D E F N M L I
IFS='.','/' read A B C D E <<XYZ
$1
XYZ
let N="(${E}+8)/8" let M="8-(${E}%8)"
if [ $N -eq 5 ]; then echo -n "${A}.${B}.${C}.${D}"; return; fi
set -A BASE dummy "" "${A}." "${A}.${B}." "${A}.${B}.${C}."
set dummy $A $B $C $D; shift $N; F=$1; let L="$F-1+(1<<$M)"
for I in `seq $F $L`; do echo -n "|${BASE[$N]}${I}."; done; }
if [ $# -eq 0 ]; then echo "need CIDR/s"; exit 65; fi
set -A CIDR dummy $@;
echo -n "^(?!dummy"; for I in `seq 1 $#`; do proc ${CIDR[$I]}; done; echo ")"
exit 0
#!/usr/bin/ksh
function proc {
typeset A B C D E F N M L I
IFS='.','/' read A B C D E <<XYZ
$1
XYZ
let N="(${E}+8)/8" let M="8-(${E}%8)"
if [ $N -eq 5 ]; then echo -n "${A}.${B}.${C}.${D}"; return; fi
set -A BASE dummy "" "${A}." "${A}.${B}." "${A}.${B}.${C}."
set dummy $A $B $C $D; shift $N; F=$1; let L="$F-1+(1<<$M)"
for I in `seq $F $L`; do echo -n "|${BASE[$N]}${I}."; done; }
if [ $# -eq 0 ]; then echo "need CIDR/s"; exit 65; fi
set -A CIDR dummy $@;
echo -n "^(?!dummy"; for I in `seq 1 $#`; do proc ${CIDR[$I]}; done; echo ")"
exit 0
74896
2022/08/29(月) 02:30:43.54ID:QAZMtAov >>734 Perl5
for (<>) {
print;
@a = /(\d+)/g;
$w = pop @a;
$o = ($w - 1) >> 3;
$m = $w - $o * 8;
$n = 2**(8 - $m);
$l = join '.', @a[0..$o-1];
$l .= '.' if '' ne $l;
$h = $a[$o] & (255 << (8 - $m));
$r = $o < 3 ? '.' : '';
@b = map{$l . ($h + $_) . $r} 0..($n - 1);
print '^(?!(' . join('|', @b) . "))\n";
print "\n";
}
※見易くするためインデントを全角スペースに置換しています。
実行例:
https://ideone.com/VBJMMo
for (<>) {
print;
@a = /(\d+)/g;
$w = pop @a;
$o = ($w - 1) >> 3;
$m = $w - $o * 8;
$n = 2**(8 - $m);
$l = join '.', @a[0..$o-1];
$l .= '.' if '' ne $l;
$h = $a[$o] & (255 << (8 - $m));
$r = $o < 3 ? '.' : '';
@b = map{$l . ($h + $_) . $r} 0..($n - 1);
print '^(?!(' . join('|', @b) . "))\n";
print "\n";
}
※見易くするためインデントを全角スペースに置換しています。
実行例:
https://ideone.com/VBJMMo
75096
2022/08/29(月) 03:01:45.22ID:QAZMtAov あれ?いいのかな?
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ
751デフォルトの名無しさん
2022/09/09(金) 22:29:09.28ID:zwPgoVui お題
長方形の1辺の長さのリストと正方形の面積のリストが入力されます
それぞれの正方形の面積について
長方形の1辺の長さのリストから2つを選んで掛け合わせ長方形の面積を計算します
長方形の面積が正方形の面積以上でかつ最小の面積となる組み合わせを探して出力してください
見つからなかった場合はerrorを出力してください
(例)
// 1辺の長さのリスト
[17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
// 正方形の面積のリスト
[390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
// 出力
390:error
240:16,17
37:3,13
396:error
198:11,18
99:6,17
242:16,17
53:3,18
329:error
202:13,16
長方形の1辺の長さのリストと正方形の面積のリストが入力されます
それぞれの正方形の面積について
長方形の1辺の長さのリストから2つを選んで掛け合わせ長方形の面積を計算します
長方形の面積が正方形の面積以上でかつ最小の面積となる組み合わせを探して出力してください
見つからなかった場合はerrorを出力してください
(例)
// 1辺の長さのリスト
[17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
// 正方形の面積のリスト
[390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
// 出力
390:error
240:16,17
37:3,13
396:error
198:11,18
99:6,17
242:16,17
53:3,18
329:error
202:13,16
752デフォルトの名無しさん
2022/09/09(金) 23:02:00.41ID:Un8DgV3E >>751
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
c = a.group_by(&:itself).values.map{_1.size > 2 ? _1[0, 2] : _1}.flatten.permutation(2).map{[_1 * _2, [_1, _2].sort]}.uniq.sort.to_h
b.each{|s| puts '%d: %s' % [s, c.find{_1[0] >= s}&.[](1)&.join(?,) || :error]}
# =>
390: error
240: 16,17
37: 3,13
396: error
198: 11,18
99: 6,17
242: 16,17
53: 3,18
329: error
202: 13,16
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
c = a.group_by(&:itself).values.map{_1.size > 2 ? _1[0, 2] : _1}.flatten.permutation(2).map{[_1 * _2, [_1, _2].sort]}.uniq.sort.to_h
b.each{|s| puts '%d: %s' % [s, c.find{_1[0] >= s}&.[](1)&.join(?,) || :error]}
# =>
390: error
240: 16,17
37: 3,13
396: error
198: 11,18
99: 6,17
242: 16,17
53: 3,18
329: error
202: 13,16
753デフォルトの名無しさん
2022/09/09(金) 23:46:43.88ID:3788iROh >>751 ruby
https://ideone.com/hBHe51
def f(as, bs)
c = as.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort_by(&:first).each_cons(2)
bs.map do |b|
d = c.find {|e, f| e[0] < b && b <= f[0]}
"#{b}:#{d ? d[1][1..2].join(',') : 'error'}"
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)
https://ideone.com/hBHe51
def f(as, bs)
c = as.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort_by(&:first).each_cons(2)
bs.map do |b|
d = c.find {|e, f| e[0] < b && b <= f[0]}
"#{b}:#{d ? d[1][1..2].join(',') : 'error'}"
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)
754753
2022/09/10(土) 00:24:11.29ID:4GiNoMjQ >>751
https://ideone.com/2UDrLT
・>>753を若干の整理
・>>752さんのを見て&.を勉強
def f(a, b)
c = a.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort
b.map {|b| "#{b}:#{c.find {|e| b <= e[0]}&.[](1..2)&.join(',') || 'error'}"}
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)
https://ideone.com/2UDrLT
・>>753を若干の整理
・>>752さんのを見て&.を勉強
def f(a, b)
c = a.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort
b.map {|b| "#{b}:#{c.find {|e| b <= e[0]}&.[](1..2)&.join(',') || 'error'}"}
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)
755デフォルトの名無しさん
2022/09/10(土) 00:34:04.51ID:sDbT/M8A みんな解くのはえーなぁ
75696
2022/09/10(土) 02:29:07.85ID:7pWsuKpo >>751 Perl5
$ls = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
$ss = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
sub f {2 < @_ ? (f(@_[1..$#_]), map{[$_[0] * $_, $_[0], $_]} @_[1..$#_]) : ()}
@rs = sort{$$a[0] <=> $$b[0]} f @$ls;
for $aa (@$ss) {
@b = grep{$aa <= $$_[0]} @rs;
print @b ? "$aa:$b[0][1],$b[0][2]\n" : "$aa:error\n";
}
実行結果
$ perl 20_751.pl
390:error
240:17,16
37:3,13
396:error
198:18,11
99:17,6
242:17,16
53:3,18
329:error
202:13,16
$ls = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
$ss = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
sub f {2 < @_ ? (f(@_[1..$#_]), map{[$_[0] * $_, $_[0], $_]} @_[1..$#_]) : ()}
@rs = sort{$$a[0] <=> $$b[0]} f @$ls;
for $aa (@$ss) {
@b = grep{$aa <= $$_[0]} @rs;
print @b ? "$aa:$b[0][1],$b[0][2]\n" : "$aa:error\n";
}
実行結果
$ perl 20_751.pl
390:error
240:17,16
37:3,13
396:error
198:18,11
99:17,6
242:17,16
53:3,18
329:error
202:13,16
757デフォルトの名無しさん
2022/09/10(土) 11:29:46.54ID:q8enYz1J >>751 octave
https://ideone.com/WGkm27
function c = f(a, b)
u = unique(sort(nchoosek(a, 2), 2), 'rows');
p = prod(u, 2);
c = cell(size(b));
for i = 1:numel(b)
d = min(p(b(i) <= p));
if isempty(d)
c{i} = sprintf('%d:error', b(i));
else
s = strjoin(arrayfun(@(n) {num2str(n)}, u(p == d, :)), ',');
c{i} = sprintf('%d:%s', b(i), s);
end
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
cellfun(@disp, f(a, b))
https://ideone.com/WGkm27
function c = f(a, b)
u = unique(sort(nchoosek(a, 2), 2), 'rows');
p = prod(u, 2);
c = cell(size(b));
for i = 1:numel(b)
d = min(p(b(i) <= p));
if isempty(d)
c{i} = sprintf('%d:error', b(i));
else
s = strjoin(arrayfun(@(n) {num2str(n)}, u(p == d, :)), ',');
c{i} = sprintf('%d:%s', b(i), s);
end
end
end
a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1];
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202];
cellfun(@disp, f(a, b))
758デフォルトの名無しさん
2022/09/10(土) 13:32:08.25ID:q8enYz1J >>751 c
https://ideone.com/Cqx8M3
#include <stdio.h>
void f(int *a, int *b, int na, int nb) {
int i, j, k, found, min, x, y;
for (i = 0; i < nb; i++) {
found = 0;
for (j = 0; j < na; j++)
for (k = 0; k < na; k++)
if (j != k && b[i] <= a[j] * a[k] && (!found || a[j] * a[k] < min))
found = 1, min = a[j] * a[k], x = a[j], y = a[k];
if (!found) printf("%d:error\n", b[i]);
else printf("%d:%d,%d\n", b[i], x, y);
}
}
int main() {
int a[] = {17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1};
int b[] = {390, 240, 37, 396, 198, 99, 242, 53, 329, 202};
f(a, b, sizeof a / sizeof *a, sizeof b / sizeof *b);
return 0;
}
https://ideone.com/Cqx8M3
#include <stdio.h>
void f(int *a, int *b, int na, int nb) {
int i, j, k, found, min, x, y;
for (i = 0; i < nb; i++) {
found = 0;
for (j = 0; j < na; j++)
for (k = 0; k < na; k++)
if (j != k && b[i] <= a[j] * a[k] && (!found || a[j] * a[k] < min))
found = 1, min = a[j] * a[k], x = a[j], y = a[k];
if (!found) printf("%d:error\n", b[i]);
else printf("%d:%d,%d\n", b[i], x, y);
}
}
int main() {
int a[] = {17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1};
int b[] = {390, 240, 37, 396, 198, 99, 242, 53, 329, 202};
f(a, b, sizeof a / sizeof *a, sizeof b / sizeof *b);
return 0;
}
759デフォルトの名無しさん
2022/09/10(土) 19:18:11.93ID:PLqR4TKQ >>751
Kotlin
可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな?
https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A
240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。
Kotlin
可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな?
https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A
240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。
760デフォルトの名無しさん
2022/09/10(土) 22:25:19.23ID:7X0yi8nW お題
>>751の問題について
長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします
https://downloadx.getuploader.com/g/angel556/90/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95.png
この図は50を探すところを描いています
青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします
長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります
右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします
>>751の問題をしゃくとり法で解いてください
>>751の問題について
長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします
https://downloadx.getuploader.com/g/angel556/90/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95.png
この図は50を探すところを描いています
青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします
長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります
右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします
>>751の問題をしゃくとり法で解いてください
761デフォルトの名無しさん
2022/09/10(土) 22:51:25.27ID:7X0yi8nW > 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
762デフォルトの名無しさん
2022/09/10(土) 22:52:41.16ID:7X0yi8nW いや、いいのか!? ダメだ混乱してきたもうパニックですわ
763デフォルトの名無しさん
2022/09/10(土) 22:57:53.10ID:sDbT/M8A おちつけ
764デフォルトの名無しさん
2022/09/10(土) 23:12:42.56ID:7X0yi8nW >>760
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね
50を探す場合、56,55,51が候補です
https://downloadx.getuploader.com/g/angel556/91/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95_%E8%A8%82%E6%AD%A3.png
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね
50を探す場合、56,55,51が候補です
https://downloadx.getuploader.com/g/angel556/91/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95_%E8%A8%82%E6%AD%A3.png
765素数を数えるんだ
2022/09/10(土) 23:25:22.59ID:22kPJ9rf 2, 3, 5, 7, 11, 13, 17, 19......
766デフォルトの名無しさん
2022/09/11(日) 01:04:25.98ID:/LH0BDzE お題
2~19までの素数を生成し掛け算の表を出力してください
2~19までの素数を生成し掛け算の表を出力してください
767デフォルトの名無しさん
2022/09/12(月) 01:50:52.46ID:xawmAmgS768デフォルトの名無しさん
2022/09/12(月) 10:44:10.79ID:VxR6iqOp >>764
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q
出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q
出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
769デフォルトの名無しさん
2022/09/12(月) 18:32:56.65ID:eGlSQ2pk770デフォルトの名無しさん
2022/09/13(火) 22:22:38.95ID:B0VHMNYc771デフォルトの名無しさん
2022/09/13(火) 22:25:19.07ID:V4Kz63G0 お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
772デフォルトの名無しさん
2022/09/14(水) 12:47:57.36ID:LkrioAg+ お題
フェアフィールドの公式は、西暦1年1月1日から指定した日付までの日数を求めるもので次の式です
日数 = (365 * Y) + (Y / 4) - (Y / 100) + (Y / 400) + (306 * (M + 1) / 10) + D - 428
UNIX時間は、西暦1970年1月1日午前0時0分0秒からの経過秒数です
フェアフィールドの公式を用いてUNIX時間から年月日を求めて出力してください
(例)
1000000000 → 2001-09-09T01:46:40
1234567890 → 2009-02-13T23:31:30
フェアフィールドの公式は、西暦1年1月1日から指定した日付までの日数を求めるもので次の式です
日数 = (365 * Y) + (Y / 4) - (Y / 100) + (Y / 400) + (306 * (M + 1) / 10) + D - 428
UNIX時間は、西暦1970年1月1日午前0時0分0秒からの経過秒数です
フェアフィールドの公式を用いてUNIX時間から年月日を求めて出力してください
(例)
1000000000 → 2001-09-09T01:46:40
1234567890 → 2009-02-13T23:31:30
773デフォルトの名無しさん
2022/09/14(水) 15:20:59.73ID:s+3MjQLV >>772 bat
@echo off &setlocal
call :Conv_uTime2iso 1000000000
call :Conv_uTime2iso 1234567890
pause&exit /b
:Conv_uTime2iso
set /a "GD=(UT=%~1)/86400+719468, h=100+(R=UT%%86400)/3600, n=100+(R%%=3600)/60, s=100+R%%60, y=400*(GD/146097), y+=100*(i=(R=GD%%146097)/36524), y+=(R%%=36524)/1461*4, y+=j=(R%%=1461)/365, R=R%%365+365*(L=(i|j)/4), f=(k=(R*5+2)/153)/10, d=R+101-(306*k+4)/10, m=k+103-f*12, y+=f-L"
echo %y%-%m:~-2%-%d:~-2%T%h:~-2%:%n:~-2%:%s:~-2%
@echo off &setlocal
call :Conv_uTime2iso 1000000000
call :Conv_uTime2iso 1234567890
pause&exit /b
:Conv_uTime2iso
set /a "GD=(UT=%~1)/86400+719468, h=100+(R=UT%%86400)/3600, n=100+(R%%=3600)/60, s=100+R%%60, y=400*(GD/146097), y+=100*(i=(R=GD%%146097)/36524), y+=(R%%=36524)/1461*4, y+=j=(R%%=1461)/365, R=R%%365+365*(L=(i|j)/4), f=(k=(R*5+2)/153)/10, d=R+101-(306*k+4)/10, m=k+103-f*12, y+=f-L"
echo %y%-%m:~-2%-%d:~-2%T%h:~-2%:%n:~-2%:%s:~-2%
774デフォルトの名無しさん
2022/09/15(木) 05:31:46.38ID:LgD4XKTt //>>772 JavaScript
function _772(epoch) {
/**/epoch = BigInt(epoch);if (epoch < 0n) {throw new RangeError('');}
/**/const lastDateOfMonth = (_ => Object.fromEntries(Array.from([, , , ..._.slice(2), _[0], _[1]].entries()).filter(([, v]) => v)))(Array.from(new Array(12).keys()).map(m => BigInt(new Date(2_022, m + 1, 0, 0, 0 - new Date().getTimezoneOffset()).getDate())));
/**/const FAIRFIELD = fairfield(1_969n, 12n, 31n) + epoch / 86_400n + 1n;
/**/let [Y, M, D] = [1_969n, 13n, 1n];
/**/for (; D <= 58n; D++) {if (FAIRFIELD == fairfield(Y, M, D)) {return {Y: 1_970n, M: 1n + D / 31n, D: D % 31n};}}
/**/for (Y = 1_970n; Y <= Number.MAX_SAFE_INTEGER; Y++) {
/**//**/for (M = 3n, D = 1n; D <= 366n; D++) {
/**//**//**/if (FAIRFIELD == fairfield(Y, M, D)) {
/**//**//**//**/if (D == 366n) {
/**//**//**//**//**/if (isLeapFullYear(Y + 1n)) {
/**//**//**//**//**//**/return {Y: Y + 1n, M: 2n, D: 29n};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: 3n, D: 1n};
/**//**//**//**//**/}
/**//**//**//**/} else {
/**//**//**//**//**/for (; lastDateOfMonth[M] <= D; D -= lastDateOfMonth[M++]);
/**//**//**//**//**/if (M <=12n) {
/**//**//**//**//**//**/return {Y, M, D};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: M % 12n, D};
/**/}}}}}
/**/function isLeapFullYear(Y) {return Y % 4n == 0n && Y % 100n != 0n || Y % 400n == 0;}
/**/function fairfield(Y, M, D) {return Y * 365n + Y / 4n - Y / 100n + Y / 400n + 306n * (M + 1n) / 10n + D - 428n;}
}
function _772(epoch) {
/**/epoch = BigInt(epoch);if (epoch < 0n) {throw new RangeError('');}
/**/const lastDateOfMonth = (_ => Object.fromEntries(Array.from([, , , ..._.slice(2), _[0], _[1]].entries()).filter(([, v]) => v)))(Array.from(new Array(12).keys()).map(m => BigInt(new Date(2_022, m + 1, 0, 0, 0 - new Date().getTimezoneOffset()).getDate())));
/**/const FAIRFIELD = fairfield(1_969n, 12n, 31n) + epoch / 86_400n + 1n;
/**/let [Y, M, D] = [1_969n, 13n, 1n];
/**/for (; D <= 58n; D++) {if (FAIRFIELD == fairfield(Y, M, D)) {return {Y: 1_970n, M: 1n + D / 31n, D: D % 31n};}}
/**/for (Y = 1_970n; Y <= Number.MAX_SAFE_INTEGER; Y++) {
/**//**/for (M = 3n, D = 1n; D <= 366n; D++) {
/**//**//**/if (FAIRFIELD == fairfield(Y, M, D)) {
/**//**//**//**/if (D == 366n) {
/**//**//**//**//**/if (isLeapFullYear(Y + 1n)) {
/**//**//**//**//**//**/return {Y: Y + 1n, M: 2n, D: 29n};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: 3n, D: 1n};
/**//**//**//**//**/}
/**//**//**//**/} else {
/**//**//**//**//**/for (; lastDateOfMonth[M] <= D; D -= lastDateOfMonth[M++]);
/**//**//**//**//**/if (M <=12n) {
/**//**//**//**//**//**/return {Y, M, D};
/**//**//**//**//**/} else {
/**//**//**//**//**//**/return {Y: Y + 1n, M: M % 12n, D};
/**/}}}}}
/**/function isLeapFullYear(Y) {return Y % 4n == 0n && Y % 100n != 0n || Y % 400n == 0;}
/**/function fairfield(Y, M, D) {return Y * 365n + Y / 4n - Y / 100n + Y / 400n + 306n * (M + 1n) / 10n + D - 428n;}
}
775デフォルトの名無しさん
2022/09/15(木) 22:07:10.52ID:AaudQZzp うるう秒のテーブルがないと求められなくない?
776デフォルトの名無しさん
2022/09/16(金) 00:34:31.77ID:ETiYX3D6 400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感
777デフォルトの名無しさん
2022/09/16(金) 00:35:51.49ID:ETiYX3D6 違う
適当にバイアス付けて÷365.2425だ
適当にバイアス付けて÷365.2425だ
778デフォルトの名無しさん
2022/09/16(金) 01:05:26.42ID:/mniU0r8 フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
779デフォルトの名無しさん
2022/09/16(金) 01:13:35.77ID:mMDmJ4/Z780デフォルトの名無しさん
2022/09/16(金) 21:18:24.66ID:k/2PI65L781デフォルトの名無しさん
2022/09/17(土) 17:48:30.91ID:fw6a0lZo お題
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。
例
[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。
例
[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)
782デフォルトの名無しさん
2022/09/17(土) 18:42:03.76ID:ZMguHADz >>781
零因子の発掘ですか、濃ゆいお題ですね…
零因子の発掘ですか、濃ゆいお題ですね…
783デフォルトの名無しさん
2022/09/18(日) 11:34:42.07ID:qZaavGGf784デフォルトの名無しさん
2022/09/18(日) 12:52:34.73ID:BMeW7wRv785デフォルトの名無しさん
2022/09/18(日) 16:37:27.93ID:BMeW7wRv786デフォルトの名無しさん
2022/09/19(月) 02:47:41.37ID:/08McGz8 >>783
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng
Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng
Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
787デフォルトの名無しさん
2022/09/24(土) 01:13:05.90ID:uYRJl5GL >>772
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
788デフォルトの名無しさん
2022/09/24(土) 04:40:38.82ID:6vPOYH6k >>772
だめ。その式に当てはめると必ずずれる。
だめ。その式に当てはめると必ずずれる。
789デフォルトの名無しさん
2022/09/24(土) 07:42:29.88ID:aunrhsr3 うるう秒を考慮しないとずれる
790デフォルトの名無しさん
2022/09/24(土) 09:42:29.34ID:v3rIJe0P791デフォルトの名無しさん
2022/09/24(土) 11:33:11.17ID:aunrhsr3 >>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう
日付に変換する過程でうるう秒考慮しないとずれるでしょう
792デフォルトの名無しさん
2022/09/24(土) 12:13:55.28ID:v3rIJe0P >>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
793デフォルトの名無しさん
2022/09/24(土) 12:34:24.41ID:aunrhsr3 >>792
レスありがとう。不勉強だったわ。
レスありがとう。不勉強だったわ。
794デフォルトの名無しさん
2022/09/24(土) 16:57:05.53ID:6vPOYH6k795デフォルトの名無しさん
2022/09/24(土) 22:38:52.94ID:Fvr5cAu6 wikiにはそこまで詳しい解説はなかったけど式みたらわかったけどな
⌊(m+1)/30.6⌋
という項
⌊x/30.6⌋という関数は0,1,2,3,4となる値が
31,30,31,30,31,31,(繰り返し)‥①
と変化してコレを周期153で繰り返す
月の長さは3月から見ると
31,30,31,30,31,31,30,31,30,31,31,28(29)
となってるから①を一月分左に平行移動すれば良いとわかる
からの⌊(m+1)/30.6⌋
⌊(m+1)/30.6⌋
という項
⌊x/30.6⌋という関数は0,1,2,3,4となる値が
31,30,31,30,31,31,(繰り返し)‥①
と変化してコレを周期153で繰り返す
月の長さは3月から見ると
31,30,31,30,31,31,30,31,30,31,31,28(29)
となってるから①を一月分左に平行移動すれば良いとわかる
からの⌊(m+1)/30.6⌋
796デフォルトの名無しさん
2022/09/24(土) 22:45:27.51ID:Fvr5cAu6797デフォルトの名無しさん
2022/09/28(水) 02:17:31.98ID:UDkh+W3M お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
798デフォルトの名無しさん
2022/09/28(水) 09:47:46.29ID:+QlM3L0o seed変数はパラメータ渡しで良いですか
799デフォルトの名無しさん
2022/09/28(水) 19:05:59.31ID:WptV1D3q >>797 c
https://ideone.com/PIpRmD
void f() {
static int i = 0, j, k = 4;
if (i == 0) j = rand() % k;
puts(i == j ? "failed" : "ok");
i = (i + 1) % k;
}
https://ideone.com/PIpRmD
void f() {
static int i = 0, j, k = 4;
if (i == 0) j = rand() % k;
puts(i == j ? "failed" : "ok");
i = (i + 1) % k;
}
800デフォルトの名無しさん
2022/09/28(水) 22:51:23.95ID:7XofIB3A801デフォルトの名無しさん
2022/09/30(金) 04:16:06.13ID:F2zw9Wj+ >>797
Kotlin
https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w
Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。
引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
Kotlin
https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w
Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。
引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
802デフォルトの名無しさん
2022/10/01(土) 01:23:09.73ID:I5nFps2z803デフォルトの名無しさん
2022/10/09(日) 17:49:59.08ID:tsulmG4c お題: あみだ https://imgur.com/6XtTF0E.png
画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。
N: 縦線の本数(列数)
M: 橋が架けられている行数
B: M行N-1列の二次元配列で、橋が架けられていたら1、そうでない場合は0が格納されています。
あらかじめ、あみだの入力には左から0〜N-1までの整数が割り振られていることにします。また、同じ行に橋が二つ連続で隣り合うことは禁止されています。
一応の制約: 2 <= N <= 100, 1 <= M <= 100
あみだに橋が1つも存在しない場合、M=1となり、Bは1行N-1列の大きさで、すべての要素が0の2次元配列になることにします。
お題1: N, M, Bが与えられるので、あみだの出力を求めてください。(入出力のフォーマットは各自で適宜変更してもいいです。)
入力例(画像のもの):
4
4
1 0 1
0 1 0
1 0 0
0 1 0
出力例:
3 0 1 2
お題2: Nとあみだの出力が与えられるので、Mをできるだけ小さくしたあみだを求め、Mと Bの一例 を表示してください。
入力例:
5
2 4 0 1 3
出力例:
3
0 1 0 1
1 0 1 0
0 1 0 0
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。
画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。
N: 縦線の本数(列数)
M: 橋が架けられている行数
B: M行N-1列の二次元配列で、橋が架けられていたら1、そうでない場合は0が格納されています。
あらかじめ、あみだの入力には左から0〜N-1までの整数が割り振られていることにします。また、同じ行に橋が二つ連続で隣り合うことは禁止されています。
一応の制約: 2 <= N <= 100, 1 <= M <= 100
あみだに橋が1つも存在しない場合、M=1となり、Bは1行N-1列の大きさで、すべての要素が0の2次元配列になることにします。
お題1: N, M, Bが与えられるので、あみだの出力を求めてください。(入出力のフォーマットは各自で適宜変更してもいいです。)
入力例(画像のもの):
4
4
1 0 1
0 1 0
1 0 0
0 1 0
出力例:
3 0 1 2
お題2: Nとあみだの出力が与えられるので、Mをできるだけ小さくしたあみだを求め、Mと Bの一例 を表示してください。
入力例:
5
2 4 0 1 3
出力例:
3
0 1 0 1
1 0 1 0
0 1 0 0
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。
804デフォルトの名無しさん
2022/10/10(月) 00:03:47.74ID:Em47unOv reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
