[過去ログ] プログラミングのお題スレ Part20 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
703
(7): 2022/08/17(水)15:10 ID:2ZT38iyw(2/2) AAS
途中送信してしまった

お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」のマスをそれぞれ表示する方法を示してください
※便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。

0 1 2 3 4 5 6 7 8
...
...............80

例えば左から1列目の9マスは
[0 9 18 27 36 45 54 63 72]
となります。
等差を利用して数字だけを表示するものは不可です。
省1
704
(1): 2022/08/17(水)21:47 ID:GkJOOerG(1) AAS
>>703 c
外部リンク:ideone.com
705: 2022/08/17(水)23:34 ID:yTY/OYLu(1) AAS
>>701
(><)
706: 2022/08/18(木)02:15 ID:KCyiWPRI(1) AAS
>>703
perl5
外部リンク:paiza.io
707: 2022/08/18(木)03:07 ID:dBOjwuYR(1) AAS
>>701 JavaScript
> ['^)(^', '^)(-(^-)(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 ID:KriVCD9m(1/3) AAS
>>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]]
省5
709
(1): 2022/08/18(木)10:20 ID:KriVCD9m(2/3) AAS
>>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
省8
710: 2022/08/18(木)10:42 ID:KriVCD9m(3/3) AAS
>>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
省12
711: 704 2022/08/18(木)23:38 ID:YBxy/c4L(1) AAS
>>703 c
外部リンク:ideone.com
>>704から若干の整理
712
(6): 2022/08/19(金)23:42 ID:GkIv/1vJ(1) AAS
お題
<user>:<group>の数
<user>:<group>
<user>:<point>の数
<user>:<point>
が入力されます

<group>ごとに<point>を集計して<group>順に
<group>:<point>を出力してください

例)
// 入力
省18
713
(1): 2022/08/19(金)23:58 ID:zRvvDV0W(1) AAS
なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?
714: 2022/08/20(土)00:02 ID:xIohwuBb(1) AAS
>>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
715: 2022/08/20(土)07:49 ID:/HXUcxOA(1) AAS
// >>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;
省16
716: 2022/08/20(土)17:09 ID:tvd+mgyM(1) AAS
>>712 c
外部リンク:ideone.com
717: 2022/08/20(土)21:26 ID:myFbjTal(1) AAS
>>712
C#
外部リンク:paiza.io
718: 2022/08/20(土)22:24 ID:5JSGWnVi(1) AAS
>>703ってこれじゃだめなのかな
7行で書ける
外部リンク:ideone.com
719: 96 2022/08/21(日)02:42 ID:P6BPpVvp(1) AAS
>>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;
}->(<>);

※見易くするためインデントを全角スペースに置換してあります。
省2
720: 2022/08/21(日)06:03 ID:V5T4kdVo(1) AAS
>>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?
721: 2022/08/21(日)07:03 ID:3JIuIXQv(1) AAS
<group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし
722: 2022/08/21(日)08:49 ID:0ZMA3aWJ(1) AAS
>>713
実際にここでも数字を使っている例が出て来てるからわかると思うけど
競プロなんかではよくあるフォーマットだよ
723: 2022/08/21(日)18:07 ID:ecIOs+Jg(1/4) AAS
>>666
C#
外部リンク:paiza.io
724
(4): 2022/08/21(日)18:28 ID:Y2TZP89X(1) AAS
お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする
725
(1): 2022/08/21(日)18:45 ID:ui07Fbeq(1/2) AAS
>>724 Ruby
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 ID:ecIOs+Jg(2/4) AAS
>>701
C#
外部リンク:paiza.io
727: 2022/08/21(日)18:51 ID:ui07Fbeq(2/2) AAS
>>725 訂正
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 ID:ecIOs+Jg(3/4) AAS
>>703
C#
外部リンク:paiza.io
729
(1): 2022/08/21(日)20:19 ID:/7u80ZfN(1) AAS
>>724 c
外部リンク:ideone.com
730: 2022/08/21(日)21:11 ID:ecIOs+Jg(4/4) AAS
>>648
C#
外部リンク:paiza.io
731: 729 2022/08/22(月)19:20 ID:7CA3B9Dd(1) AAS
>>724 c
外部リンク:ideone.com
>>729 どう見ても正常終了です。本当にありがとうございました。
・子プロセスの強制終了を見届けてから自分自身も強制終了
732
(1): 2022/08/25(木)15:38 ID:bJn+zm7R(1) AAS
>>724
その強制終了って人間が Ctrl + C を押すなどしてやるという意味?
間に合わずに全部出力し切った場合は GAME OVER 出すということ?
733
(2): 2022/08/25(木)15:52 ID:BfuXla1W(1) AAS
>>732
強制終了→exit(0)などでプログラム的に終了させる
GAME OVER→お題の達成失敗
734
(4): 2022/08/25(木)16:09 ID:6j74uL6b(1) AAS
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ライセンスでお願いします
735: 2022/08/25(木)16:22 ID:0z7AphVM(1/2) AAS
ま、まあ、作れなくはないかな…
736: 2022/08/25(木)18:48 ID:0xws5w3m(1) AAS
フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ
本人以外は
737: 2022/08/25(木)20:40 ID:0z7AphVM(2/2) AAS
>>734
Java
外部リンク:paiza.io
738
(1): 2022/08/25(木)21:10 ID:/BGaqBqg(1) AAS
>>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++) {
省5
739: 2022/08/25(木)22:00 ID:JPPVgQ9Y(1) AAS
beer licenseでよければ書くが
740
(2): 2022/08/26(金)04:09 ID:NIKxWs5c(1/3) AAS
割とすぐに出来るもんなんですね
どちらも実用上問題なさそうな、いい感じの実行結果です

>738は最新の実行環境に心当たりがなかったので確認に手間どりましたが
Chromeのコンソールから実行して確認できました
(cscriptで実行しようとしたらat()に対応してなかったので)

いやー勉強になります、ありがとう
741: 2022/08/26(金)04:49 ID:0rX9u4fb(1) AAS
>>740
スレタイも読めないアホは消えろ
742: 96 2022/08/26(金)05:19 ID:GgZblxs6(1) AAS
>>740
人をタダで利用してない?
743
(1): 2022/08/26(金)11:51 ID:d54FvNjc(1) AAS
>>733
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。
744: 2022/08/26(金)14:32 ID:71YXfdUw(1) AAS
>>743
その実装でもいいよ
題意はいかにHello, World!出力中にプログラムを終了させるかだから
sleep挟んでもいい
745: 2022/08/26(金)18:44 ID:NQ4mbOjq(1) AAS
>>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?
省7
746: 2022/08/26(金)21:28 ID:NIKxWs5c(2/3) AAS
はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが

もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます
747: 2022/08/26(金)21:31 ID:NIKxWs5c(3/3) AAS
ついでというかなんというか>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}."
省6
748
(1): 96 2022/08/29(月)02:30 ID:QAZMtAov(1/3) AAS
>>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;
省9
749: 96 2022/08/29(月)02:55 ID:QAZMtAov(2/3) AAS
>>748
128.0.0.0/1 の結果が変
バグ入りだ、ゴメンチャイ
750: 96 2022/08/29(月)03:01 ID:QAZMtAov(3/3) AAS
あれ?いいのかな?
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ
751
(10): 2022/09/09(金)22:29 ID:zwPgoVui(1) AAS
お題
長方形の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]

// 正方形の面積のリスト
省12
752
(1): 2022/09/09(金)23:02 ID:Un8DgV3E(1) AAS
>>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
省6
753
(1): 2022/09/09(金)23:46 ID:3788iROh(1) AAS
>>751 ruby
外部リンク:ideone.com
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]
省2
754: 753 2022/09/10(土)00:24 ID:4GiNoMjQ(1) AAS
>>751
外部リンク:ideone.com
>>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]
省1
755: 2022/09/10(土)00:34 ID:sDbT/M8A(1/2) AAS
みんな解くのはえーなぁ
756: 96 2022/09/10(土)02:29 ID:7pWsuKpo(1) AAS
>>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";
}

実行結果
省11
757: 2022/09/10(土)11:29 ID:q8enYz1J(1/2) AAS
>>751 octave
外部リンク:ideone.com
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));
省9
758: 2022/09/10(土)13:32 ID:q8enYz1J(2/2) AAS
>>751 c
外部リンク:ideone.com
#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))
省11
759: 2022/09/10(土)19:18 ID:PLqR4TKQ(1) AAS
>>751
Kotlin

可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな?

外部リンク:paiza.io

240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。
760
(1): 2022/09/10(土)22:25 ID:7X0yi8nW(1/4) AAS
お題

>>751の問題について

長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします

画像リンク[png]:downloadx.getuploader.com
この図は50を探すところを描いています

青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします
長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります
右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
省2
761: 2022/09/10(土)22:51 ID:7X0yi8nW(2/4) AAS
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
762: 2022/09/10(土)22:52 ID:7X0yi8nW(3/4) AAS
いや、いいのか!? ダメだ混乱してきたもうパニックですわ
763: 2022/09/10(土)22:57 ID:sDbT/M8A(2/2) AAS
おちつけ
764
(2): 2022/09/10(土)23:12 ID:7X0yi8nW(4/4) AAS
>>760
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね

50を探す場合、56,55,51が候補です
画像リンク[png]:downloadx.getuploader.com
765: 素数を数えるんだ 2022/09/10(土)23:25 ID:22kPJ9rf(1) AAS
2, 3, 5, 7, 11, 13, 17, 19......
766
(1): 2022/09/11(日)01:04 ID:/LH0BDzE(1) AAS
お題
2~19までの素数を生成し掛け算の表を出力してください
767: 2022/09/12(月)01:50 ID:xawmAmgS(1) AAS
>>751
Java
外部リンク:paiza.io
768: 2022/09/12(月)10:44 ID:VxR6iqOp(1) AAS
>>764
Kotlin
外部リンク:paiza.io

出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
769: 2022/09/12(月)18:32 ID:eGlSQ2pk(1) AAS
>>751
外部リンク:ideone.com

>>764
外部リンク:ideone.com
770: 2022/09/13(火)22:22 ID:B0VHMNYc(1) AAS
>>766
C#
外部リンク:paiza.io
771: 2022/09/13(火)22:25 ID:V4Kz63G0(1) AAS
お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
772
(5): 2022/09/14(水)12:47 ID:LkrioAg+(1) AAS
お題

フェアフィールドの公式は、西暦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
(1): 2022/09/14(水)15:20 ID:s+3MjQLV(1) AAS
>>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%
774: 2022/09/15(木)05:31 ID:LgD4XKTt(1) AAS
//>>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)) {
省16
775: 2022/09/15(木)22:07 ID:AaudQZzp(1) AAS
うるう秒のテーブルがないと求められなくない?
776: 2022/09/16(金)00:34 ID:ETiYX3D6(1/2) AAS
400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感
777: 2022/09/16(金)00:35 ID:ETiYX3D6(2/2) AAS
違う
適当にバイアス付けて÷365.2425だ
778: 2022/09/16(金)01:05 ID:/mniU0r8(1) AAS
フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
779: 2022/09/16(金)01:13 ID:mMDmJ4/Z(1) AAS
グレゴリオ歴のとこに解説載ってるよ
外部リンク:ja.m.wikipedia.org
780: 2022/09/16(金)21:18 ID:k/2PI65L(1) AAS
>>772
Java
外部リンク:paiza.io
781
(1): 2022/09/17(土)17:48 ID:fw6a0lZo(1) AAS
お題
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 ID:ZMguHADz(1) AAS
>>781
零因子の発掘ですか、濃ゆいお題ですね…
783
(3): 2022/09/18(日)11:34 ID:qZaavGGf(1) AAS
お題:循環参照を開放せよ。

java
外部リンク:ideone.com
・ガベコレの対象になったのを確認まででヨシとす

c++
外部リンク:ideone.com
784: 2022/09/18(日)12:52 ID:BMeW7wRv(1/2) AAS
>>783
Java
外部リンク:paiza.io
785: 2022/09/18(日)16:37 ID:BMeW7wRv(2/2) AAS
>>783
Python
外部リンク:paiza.io
786: 2022/09/19(月)02:47 ID:/08McGz8(1) AAS
>>783
Kotlin
外部リンク:paiza.io

Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
787: 2022/09/24(土)01:13 ID:uYRJl5GL(1) AAS
>>772
亀レスHaskell
外部リンク:ideone.com
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
788
(1): 2022/09/24(土)04:40 ID:6vPOYH6k(1/2) AAS
>>772
だめ。その式に当てはめると必ずずれる。
789
(1): 2022/09/24(土)07:42 ID:aunrhsr3(1/3) AAS
うるう秒を考慮しないとずれる
790
(2): 2022/09/24(土)09:42 ID:v3rIJe0P(1/2) AAS
>>788
問題には書かれていないけれどその式は条件によって前処理が必要
・1-2月は前年として扱う。 1年を3-14月として計算
m=1 or 2 の時 y=y-1, m=m+12

>>789
UNIXTIMEにうるう秒なんて無い
791
(1): 2022/09/24(土)11:33 ID:aunrhsr3(2/3) AAS
>>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう
792
(1): 2022/09/24(土)12:13 ID:v3rIJe0P(2/2) AAS
>>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
793: 2022/09/24(土)12:34 ID:aunrhsr3(3/3) AAS
>>792
レスありがとう。不勉強だったわ。
794: 2022/09/24(土)16:57 ID:6vPOYH6k(2/2) AAS
>>790
出題ミスか。
これまでに作られたプログラムはその辺のことを考慮したプログラムになっていたのかな?
だったら分かってたんだからその辺の事を書いておいて欲しかったな。
795
(1): 2022/09/24(土)22:38 ID:Fvr5cAu6(1/2) AAS
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⌋
796: 2022/09/24(土)22:45 ID:Fvr5cAu6(2/2) AAS
>>795

間違えた
⌊m×30.6⌋という関数は0,1,2,3,4,‥の時の値が
31,31,30,31,30
の繰り返し
件の公式のmの項はコレを一月分ずらしてる
797
(4): 2022/09/28(水)02:17 ID:UDkh+W3M(1) AAS
お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
798: 2022/09/28(水)09:47 ID:+QlM3L0o(1) AAS
seed変数はパラメータ渡しで良いですか
799: 2022/09/28(水)19:05 ID:WptV1D3q(1) AAS
>>797 c
外部リンク:ideone.com
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 ID:7XofIB3A(1) AAS
>>797 Ruby
def f
$f_cnt||=0
puts$f_cnt==3||(rand(4)==~-$f_cnt+=1)?:failed: :ok
end
801: 2022/09/30(金)04:16 ID:F2zw9Wj+(1) AAS
>>797
Kotlin

外部リンク:paiza.io

Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。

引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
802: 2022/10/01(土)01:23 ID:I5nFps2z(1) AAS
>>797
Java
外部リンク:paiza.io
1-
あと 200 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s