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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.net]
プログラミングのお題スレです。

【出題と回答例】
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/

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

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

751 名前:デフォルトの名無しさん [2022/08/19(金) 23:58:05.14 ID:zRvvDV0W.net]
なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?

752 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:02:54.24 ID:xIohwuBb.net]
>>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

753 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 07:49:15.49 ID:/HXUcxOA.net]
// >>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}`);
}
});

754 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 17:09:35.31 ID:tvd+mgyM.net]
>>712 c
https://ideone.com/Edol3U

755 名前:デフォルトの名無しさん [2022/08/20(土) 21:26:59.76 ID:myFbjTal.net]
>>712
C#
https://paiza.io/projects/IAgPLTHFbJ-HmDcLHFrNYA

756 名前:デフォルトの名無しさん [2022/08/20(土) 22:24:09.90 ID:5JSGWnVi.net]
>>703ってこれじゃだめなのかな
7行で書ける
https://ideone.com/eKTMZr

757 名前:96 mailto:sage [2022/08/21(日) 02:42:00.00 ID:P6BPpVvp.net]
>>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

758 名前:デフォルトの名無しさん [2022/08/21(日) 06:03:07.44 ID:V5T4kdVo.net]
>>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?

759 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 07:03:57.35 ID:3JIuIXQv.net]
<group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし



760 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 08:49:24.60 ID:0ZMA3aWJ.net]
>>713
実際にここでも数字を使っている例が出て来てるからわかると思うけど
競プロなんかではよくあるフォーマットだよ

761 名前:デフォルトの名無しさん [2022/08/21(日) 18:07:19.66 ID:ecIOs+Jg.net]
>>666
C#
https://paiza.io/projects/sT_SLT3n0NNab0a-ZD7IHQ

762 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:28:38.88 ID:Y2TZP89X.net]
お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする

763 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:45:13.28 ID:ui07Fbeq.net]
>>724 Ruby
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit}

# =>
Hello, World!

764 名前:デフォルトの名無しさん [2022/08/21(日) 18:49:48.17 ID:ecIOs+Jg.net]
>>701
C#
https://paiza.io/projects/D1PZTVPBn2qnksCQnwYQmw?language=csharp

765 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:51:27.42 ID:ui07Fbeq.net]
>>725 訂正
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}

Thread.new{exit!}


# => H

766 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>703
C#
https://paiza.io/projects/HzrEP1l1vX4Z3JUqmHSUwg

767 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>724 c
https://ideone.com/xaMOR7

768 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>648
C#
https://paiza.io/projects/2cxaJzBNbukA4-EolW07Cw

769 名前:729 mailto:sage [2022/08/22(月) 19:20:01.17 ID:7CA3B9Dd.net]
>>724 c
https://ideone.com/k8R7TU
>>729 どう見ても正常終了です。本当にありがとうございました。
・子プロセスの強制終了を見届けてから自分自身も強制終了



770 名前:デフォルトの名無しさん [2022/08/25(木) 15:38:14.81 ID:bJn+zm7R.net]
>>724
その強制終了って人間が Ctrl + C を押すなどしてやるという意味?
間に合わずに全部出力し切った場合は GAME OVER 出すということ?

771 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 15:52:23.73 ID:BfuXla1W.net]
>>732
強制終了→exit(0)などでプログラム的に終了させる
GAME OVER→お題の達成失敗

772 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 16:09:53.36 ID:6j74uL6b.net]
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ライセンスでお願いします

773 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
ま、まあ、作れなくはないかな…

774 名前:デフォルトの名無しさん [2022/08/25(木) 18:48:07.98 ID:0xws5w3m.net]
フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ
本人以外は

775 名前:デフォルトの名無しさん [2022/08/25(木) 20:40:48.98 ID:0z7AphVM.net]
>>734
Java
https://paiza.io/projects/Fot4E7hZfbJ95P_hSbI3NQ

776 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 21:10:16.35 ID:/BGaqBqg.net]
>>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

777 名前:);
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('|') + '))';
}
[]
[ここ壊れてます]

778 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 22:00:47.00 ID:JPPVgQ9Y.net]
beer licenseでよければ書くが

779 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:09:37.08 ID:NIKxWs5c.net]
割とすぐに出来るもんなんですね
どちらも実用上問題なさそうな、いい感じの実行結果です

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

いやー勉強になります、ありがとう



780 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:49:22.52 ID:0rX9u4fb.net]
>>740
スレタイも読めないアホは消えろ

781 名前:96 mailto:sage [2022/08/26(金) 05:19:52.33 ID:GgZblxs6.net]
>>740
人をタダで利用してない?

782 名前:デフォルトの名無しさん [2022/08/26(金) 11:51:47.61 ID:d54FvNjc.net]
>>733
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。

783 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 14:32:15.45 ID:71YXfdUw.net]
>>743
その実装でもいいよ
題意はいかにHello, World!出力中にプログラムを終了させるかだから
sleep挟んでもいい

784 名前:デフォルトの名無しさん [2022/08/26(金) 18:44:07.03 ID:NQ4mbOjq.net]
>>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.

785 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:28:18.28 ID:NIKxWs5c.net]
はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが

もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます

786 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:31:39.94 ID:NIKxWs5c.net]
ついでというかなんというか>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

787 名前:96 mailto:sage [2022/08/29(月) 02:30:43.54 ID:QAZMtAov.net]
>>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

788 名前:96 mailto:sage [2022/08/29(月) 02:55:16.14 ID:QAZMtAov.net]
>>748
128.0.0.0/1 の結果が変
バグ入りだ、ゴメンチャイ

789 名前:96 mailto:sage [2022/08/29(月) 03:01:45.22 ID:QAZMtAov.net]
あれ?いいのかな?
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ



790 名前:デフォルトの名無しさん [2022/09/09(金) 22:29:09.28 ID:zwPgoVui.net]
お題
長方形の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

791 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:02:00.41 ID:Un8DgV3E.net]
>>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

792 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:46:43.88 ID:3788iROh.net]
>>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)

793 名前:753 mailto:sage [[ここ壊れてます] .net]
>>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)

794 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:34:04.51 ID:sDbT/M8A.net]
みんな解くのはえーなぁ

795 名前:96 mailto:sage [2022/09/10(土) 02:29:07.85 ID:7pWsuKpo.net]
>>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

796 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:29:46.54 ID:q8enYz1J.net]
>>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))

797 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 13:32:08.25 ID:q8enYz1J.net]
>>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;
}

798 名前:デフォルトの名無しさん [2022/09/10(土) 19:18:11.93 ID:PLqR4TKQ.net]
>>751
Kotlin

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

https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A

240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。

799 名前:デフォルトの名無しさん [2022/09/10(土) 22:25:19.23 ID:7X0yi8nW.net]
お題

>>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の問題をしゃくとり法で解いてください



800 名前:デフォルトの名無しさん [2022/09/10(土) 22:51:25.27 ID:7X0yi8nW.net]
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます

これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく

801 名前:デフォルトの名無しさん [2022/09/10(土) 22:52:41.16 ID:7X0yi8nW.net]
いや、いいのか!? ダメだ混乱してきたもうパニックですわ

802 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 22:57:53.10 ID:sDbT/M8A.net]
おちつけ

803 名前:デフォルトの名無しさん [2022/09/10(土) 23:12:42.56 ID:7X0yi8nW.net]
>>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

804 名前:素数を数えるんだ [2022/09/10(土) 23:25:22.59 ID:22kPJ9rf.net]
2, 3, 5, 7, 11, 13, 17, 19......

805 名前:デフォルトの名無しさん [2022/09/11(日) 01:04:25.98 ID:/LH0BDzE.net]
お題
2~19までの素数を生成し掛け算の表を出力してください

806 名前:デフォルトの名無しさん [2022/09/12(月) 01:50:52.46 ID:xawmAmgS.net]
>>751
Java
https://paiza.io/projects/9bNWiYGC-KndYn1QmRsYIA

807 名前:デフォルトの名無しさん [2022/09/12(月) 10:44:10.79 ID:VxR6iqOp.net]
>>764
Kotlin
https://paiza.io/projects/caNg1GtDFhBF9Rk6AwC52Q

出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。

808 名前:デフォルトの名無しさん mailto:sage [2022/09/12(月) 18:32:56.65 ID:eGlSQ2pk.net]
>>751
ttps://ideone.com/mFYcmC

>>764
ttps://ideone.com/vwjQvN

809 名前:デフォルトの名無しさん [2022/09/13(火) 22:22:38.95 ID:B0VHMNYc.net]
>>766
C#
https://paiza.io/projects/mR6tnluHgitHnC0VJWc6Wg



810 名前:デフォルトの名無しさん [2022/09/13(火) 22:25:19.07 ID:V4Kz63G0.net]
お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色

811 名前:デフォルトの名無しさん [2022/09/14(水) 12:47:57.36 ID:LkrioAg+.net]
お題

フェアフィールドの公式は、西暦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

812 名前:デフォルトの名無しさん mailto:sage [2022/09/14(水) 15:20:59.73 ID:s+3MjQLV.net]
>>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%

813 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 05:31:46.38 ID:LgD4XKTt.net]
//>>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)) {
/**//**//**//**//**//**/

814 名前: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;}
}
[]
[ここ壊れてます]

815 名前:デフォルトの名無しさん mailto:sage [2022/09/15(木) 22:07:10.52 ID:AaudQZzp.net]
うるう秒のテーブルがないと求められなくない?

816 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:34:31.77 ID:ETiYX3D6.net]
400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感

817 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 00:35:51.49 ID:ETiYX3D6.net]
違う
適当にバイアス付けて÷365.2425だ

818 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:05:26.42 ID:/mniU0r8.net]
フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという

819 名前:デフォルトの名無しさん mailto:sage [2022/09/16(金) 01:13:35.77 ID:mMDmJ4/Z.net]
グレゴリオ歴のとこに解説載ってるよ
https://ja.m.wikipedia.org/wiki/%E3%82%B0%E3%83%AC%E3%82%B4%E3%83%AA%E3%82%AA%E6%9A%A6



820 名前:デフォルトの名無しさん [2022/09/16(金) 21:18:24.66 ID:k/2PI65L.net]
>>772
Java
https://paiza.io/projects/GkxKdFMCsjdM1lSoxk8mhQ

821 名前:デフォルトの名無しさん [2022/09/17(土) 17:48:30.91 ID:fw6a0lZo.net]
お題
2*2の整数行列がいくつか与えられる。
これらを適当な順番で掛け合わせる(行列積)ことで零行列を作ることが可能かどうか判定せよ。
ただし、同じ行列を2回以上使用してもよい。


[[1, 0], [0, 0]], [[0, -1], [1, 0]] =>可能(行列1*行列2*行列1==0)
[[1, 2], [3, 4]], [[0, -3], [2, 4]] =>不可能(正則行列だから)

822 名前:デフォルトの名無しさん mailto:sage [2022/09/17(土) 18:42:03.76 ID:ZMguHADz.net]
>>781
零因子の発掘ですか、濃ゆいお題ですね…

823 名前:デフォルトの名無しさん mailto:sage [2022/09/18(日) 11:34:42.07 ID:qZaavGGf.net]
お題:循環参照を開放せよ。

java
https://ideone.com/xe64l4
・ガベコレの対象になったのを確認まででヨシとす

c++
https://ideone.com/1gXTAX

824 名前:デフォルトの名無しさん [2022/09/18(日) 12:52:34.73 ID:BMeW7wRv.net]
>>783
Java
https://paiza.io/projects/KPlcyOa7-yBMKlBes0ImXg

825 名前:デフォルトの名無しさん [2022/09/18(日) 16:37:27.93 ID:BMeW7wRv.net]
>>783
Python
https://paiza.io/projects/xCNkUNUSXbwUSWTf8OEA-Q

826 名前:デフォルトの名無しさん [2022/09/19(月) 02:47:41.37 ID:/08McGz8.net]
>>783
Kotlin
https://paiza.io/projects/dZhh0NhaeEwnxD45W6V7Ng

Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。

827 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 01:13:05.90 ID:uYRJl5GL.net]
>>772
亀レスHaskell
https://ideone.com/y7jYXr
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど

828 名前:デフォルトの名無しさん [2022/09/24(土) 04:40:38.82 ID:6vPOYH6k.net]
>>772
だめ。その式に当てはめると必ずずれる。

829 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 07:42:29.88 ID:aunrhsr3.net]
うるう秒を考慮しないとずれる



830 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 09:42:29.34 ID:v3rIJe0P.net]
>>788
問題には書かれていないけれどその式は条件によって前処理が必要
・1-2月は前年として扱う。 1年を3-14月として計算
m=1 or 2 の時 y=y-1, m=m+12

>>789
UNIXTIMEにうるう秒なんて無い

831 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 11:33:11.17 ID:aunrhsr3.net]
>>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう

832 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:13:55.28 ID:v3rIJe0P.net]
>>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない

833 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 12:34:24.41 ID:aunrhsr3.net]
>>792
レスありがとう。不勉強だったわ。

834 名前:デフォルトの名無しさん [2022/09/24(土) 16:57:05.53 ID:6vPOYH6k.net]
>>790
出題ミスか。
これまでに作られたプログラムはその辺のことを考慮したプログラムになっていたのかな?
だったら分かってたんだからその辺の事を書いておいて欲しかったな。

835 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:38:52.94 ID:Fvr5cAu6.net]
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⌋

836 名前:デフォルトの名無しさん mailto:sage [2022/09/24(土) 22:45:27.51 ID:Fvr5cAu6.net]
>>795

間違えた
⌊m×30.6⌋という関数は0,1,2,3,4,‥の時の値が
31,31,30,31,30
の繰り返し
件の公式のmの項はコレを一月分ずらしてる

837 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 02:17:31.98 ID:UDkh+W3M.net]
お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ

838 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 09:47:46.29 ID:+QlM3L0o.net]
seed変数はパラメータ渡しで良いですか

839 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 19:05:59.31 ID:WptV1D3q.net]
>>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;
}



840 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 22:51:23.95 ID:7XofIB3A.net]
>>797 Ruby
def f
$f_cnt||=0
puts$f_cnt==3||(rand(4)==~-$f_cnt+=1)?:failed: :ok
end

841 名前:デフォルトの名無しさん [2022/09/30(金) 04:16:06.13 ID:F2zw9Wj+.net]
>>797
Kotlin

https://paiza.io/projects/QipeLOxxfW3_GNBarDA-8w

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

引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。

842 名前:デフォルトの名無しさん [2022/10/01(土) 01:23:09.73 ID:I5nFps2z.net]
>>797
Java
https://paiza.io/projects/AOePb_OJDX44jb_jRddrsw?language=java

843 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
お題: あみだ 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
あみだ関連のお題は過去スレで何回か見かけたがろくに相手にされていなかったのであげてみる。

844 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 00:03:47.74 ID:Em47unOv.net]
reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな

845 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 12:25:25.51 ID:CId/Nblu.net]
Gapとか使えばいいんじゃね

846 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 15:00:17.69 ID:AiOpkeUk.net]
reduced expression の長さ自体の計算は簡単だけどこの問題は"reduced expressionの長さを求めよ"ではないからそこまで数学的に単純じゃないよ

847 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 20:53:48.73 ID:uiS3Rjx/.net]
>>803
お題1
ttps://paiza.io/projects/tUaZay_JvtZRkIaUhjYF7Q

お題2
ttps://paiza.io/projects/1yDZy-Vx-C9Q9Z_Oc03Mtw

お題1とお題2でそれぞれ入力と出力をあわせるようにした
Mをできるだけ小さくって難しいな
これでいいのかわからん

848 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:09:44.88 ID:TC3V9vEZ.net]
アルゴリズムが存在するのは明らかだしひとつ答え見つけるアルゴリズムも簡単
でもreduced expression見つけるアルゴリズムと同程度のアルゴリズムとなると途端に難しくなる

reduced expressionの場合には置換σのreduced expressionを見つけるには
(1) σ = idであるか否か判定する、σ=idなら空列を返して終了
(2) そうでない場合σ(i) > σ(i+1)であるiを見つける、見つけたiに対してτ=σ(i i+1)とおいてτほreduced expression sを求める
(3)

849 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:16:09.04 ID:TC3V9vEZ.net]
(3) s ( i i+1 )を返して終了
でもとまる
ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる
しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん
初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい
多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする



850 名前:441 [2022/10/11(火) 10:43:04.37 ID:Q+yx5xdI.net]
>>803
最近やっとpythonを学び始めたレベルだから合ってるかわからん
コメントとかもちゃんと書いたほうがいいのだろう

851 名前:
暇な人添削してくれると嬉しい

お題1
https://ideone.com/uQ0lEu
お題2
https://ideone.com/IvtRj2
[]
[ここ壊れてます]

852 名前:デフォルトの名無しさん [2022/10/11(火) 12:04:38.77 ID:xv8Y5zzF.net]
しゃぶれよ

853 名前:96 mailto:sage [2022/10/13(木) 07:01:45.31 ID:JNehkz2R.net]
>>773
自分でやれ

854 名前:デフォルトの名無しさん [2022/10/22(土) 02:49:22.02 ID:ql0xnxKt.net]
やってるやん

855 名前:デフォルトの名無しさん [2022/10/24(月) 10:24:26.56 ID:sCRx2Xsd.net]
お題
プリンタAは1分間に1ページ印刷できます
プリンタBは3分間に1ページ印刷できます
プリンタCは5分間に1ページ印刷できます

プリンタを3台同時に動かして100ページを印刷します
100ページを印刷し終わるのに何分掛かるか求めてください

856 名前:デフォルトの名無しさん [2022/10/24(月) 12:38:35.85 ID:PxuF7JuF.net]
>>814
perl5
https://paiza.io/projects/6hPV0H0VMJ6oloujnOVF8w

857 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 13:32:21.38 ID:LLDppSf/.net]
>>815
バグってるぞ
65分だと99枚しか印刷されない

858 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 14:17:54.79 ID:l9s5dDsa.net]
>>814 cmd
set /a "p=100, n=15*p/23+!!(15*p%23)"

859 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 15:31:07.39 ID:FSEywfH4.net]
haskell

pages n = sum $ map ( div n ) [ 1,3,5 ]
main = print $ head [ n | n <- [1..], pages n >= 100 ]



860 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 20:20:16.51 ID:112hix5y.net]
>>814
aow = 100
power = (1 + 1r/3 + 1r/5)
printf(aow / power) // => 65.21739130434783

861 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:40:57.89 ID:SGYFZ2pJ.net]
>>814 octave
https://ideone.com/BOXjxs
f = @(n) ceil(n * 15 / 23);

862 名前:デフォルトの名無しさん [2022/10/25(火) 01:46:09.54 ID:m3snEfri.net]
>>814
Kotlin

何も考えずただカウントして求めるように書いた。

https://paiza.io/projects/8SWBhDQ_Bfr2ICXJpLmxhQ

863 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 06:54:39.16 ID:LZqPXT/2.net]
>>817,820
逆算はページ数によってはダメ
例えば3ページの時、3分4ページが正解だけど
(B=2/3)+(C=2/5) で1繰り上がって2分が出て来る

864 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 07:50:54.84 ID:V4E25MPr.net]
A, B, Cでそれぞれ45/23, 15/23, 9/23ページ印刷すれば45/23分で3ページ印刷し終わるよ

865 名前:デフォルトの名無しさん [2022/10/25(火) 08:18:47.97 ID:5cB2OctB.net]
100ページだからセーフ

866 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 13:35:12.41 ID:xp4U3IJL.net]
>>814
JavaScript
https://paiza.io/projects/I8_n6kEMrNGxbh-vwbTkqQ

867 名前:デフォルトの名無しさん [2022/10/25(火) 20:38:44.30 ID:Er29dtqL.net]
甘えんな
印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ

868 名前:デフォルトの名無しさん [2022/10/25(火) 21:08:38.15 ID:idE58GAF.net]
すまん、1分に3枚じゃなくて3分に1枚かorz

869 名前:デフォルトの名無しさん [2022/10/25(火) 22:03:54.71 ID:b0dw4lqu.net]
>>814
Java
https://paiza.io/projects/3CptMd1jsIwuiYqU1IQYyg?language=java



870 名前:デフォルトの名無しさん [2022/10/25(火) 22:28:13.40 ID:F6XUw+z/.net]
じゃあ1分に1枚、3枚、5枚のプリンターでの印刷というお題も出すか。

871 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 22:38:49.46 ID:d0t/LHiA.net]
>>814 octave
https://ideone.com/0V6LlD
function m = f(n, m)
if nargin == 1
m = f(n, 0);
elseif sum(idivide(m, [1 3 5])) < n
m = f(n, m + 1);
end
end

>>814 ocaml
https://ideone.com/4iPTJS
let f n =
let rec aux m =
if n <= (m + m / 3 + m / 5) then m else aux (m + 1)
in aux 0

872 名前:デフォルトの名無しさん [2022/10/25(火) 23:47:11.01 ID:b0dw4lqu.net]
>>829
Java

public static void main(String[] args)
{
 var pages = 100;
 var s = IntStream.of(1, 3, 5).sum();
 System.out.println((pages + s - 1) / s);
}

873 名前:デフォルトの名無しさん [2022/10/26(水) 13:26:51.44 ID:FciA0hc1.net]
お題
オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」
オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」
オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」
オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」
オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」
オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」
オーク達「ぐっふっふ……」

論理演算を用いて答えを求めてください

874 名前:デフォルトの名無しさん [2022/10/26(水) 13:33:52.83 ID:FciA0hc1.net]
オークCとオークEがめんどくさいな

875 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 15:30:35.63 ID:DM8ZU7Du.net]
全てが媚薬を盛って全員が嘘をついている

これで全員の発言と矛盾がないと思う

876 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 16:28:02.83 ID:xzd5i3vP.net]
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
は正しいと仮定しないとなんでもありありになっちゃうだろ

877 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:06:43.51 ID:VWCwwszG.net]
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」

コレウソついてるのは一匹“だけ”つて意味だよね?
“少なくとも一匹はウソついてる”
じゃないよね?

878 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 18:20:40.38 ID:S3XzLK/s.net]
このタイプの論理問題ってよく見かけるな
初出ってどこなんだろうな

879 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:23:29.30 ID:gD5qQ1ZG.net]
>>836
> “少なくとも一匹はウソついてる”
だと、全員嘘つきでもいいからなんでもありになっちゃう気がする



880 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 20:30:42.10 ID:dmTYCGjA.net]
>>832
Haskell
まだ自信なし

https://ideone.com/7p50VK

881 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:23:18.21 ID:OrdcPqRc.net]
オーク達「」が真であることは、
この世界の神である出題者が保証してるわけだな?

882 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 21:38:57.12 ID:Bjop1AC4.net]
出題者が嘘をついていて、オークがそのような発言をしていない可能性もある

883 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 01:22:34.18 ID:s7i1htqL.net]
>>832
Haskell

一ヶ所間違ってたので訂正
あとウソつきはちょうど1人という条件つけたら解一個になった

https://ideone.com/vAXrzD

884 名前:デフォルトの名無しさん mailto:sage [2022/10/27(木) 09:19:06.82 ID:Uf+5HE/G.net]
Haskell

ウソつき1人としてループを5×5に
5人しかいないので大して変わらないけど

https://ideone.com/zxaBcf

885 名前:デフォルトの名無しさん [2022/10/27(木) 14:26:07.23 ID:QRorZadJ.net]
>>832
Java
https://paiza.io/projects/VlDcOv5HhoHc1rQjRbF3dA?language=java

886 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:11:19.58 ID:O3TXZpYa.net]
お題
Kの倍数の桁の和
自然数nに対してf(n)をnの10進表示の各桁の和とします
(例 f(1024) = 1+2+4 = 7)
自然数kに対してg(k)を
g(k) = { f(n) | nはkの倍数である自然数 }
とします
入力kに対してg(k)を出力するコードを書いて下さい

887 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:33:57.73 ID:uuZ1gbyy.net]
>>845
g(k)って必ずしも有限集合にならなくない?

888 名前:デフォルトの名無しさん mailto:sage [2022/10/29(土) 19:39:30.16 ID:O3TXZpYa.net]
>>946
orz
訂正
g(k) = min{ f(n) | nはkの倍数である自然数 }

889 名前:デフォルトの名無しさん [2022/10/30(日) 00:28:15.63 ID:BQOGiCuF.net]
お題
プレーヤーの前に閉じた3つのドアがあります
1つのドアの後ろには景品の新車があります
2つのドアの後ろにははずれを意味するヤギがいます
プレーヤーは新車のドアを当てると新車がもらえます
プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます
ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます
ここでプレーヤーはドアを変更すべきだろうか?

乱数を使ったシミュレーションで答えを求めてください



890 名前:デフォルトの名無しさん [2022/10/30(日) 03:55:05.76 ID:KHak5nKt.net]
>>848
モンティ・ホール問題だな。

Kotlin
https://paiza.io/projects/8jlKawdSqlrp5JHr0uWC4w

891 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 08:09:55.23 ID:oF72FRjI.net]
ドアを変更するかどうかのところはランダムにする必要無くない?
二択なので一方に決めていれば残りが逆側の確率

892 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 10:05:48.56 ID:Rpnmj8SE.net]
まぁ
交換戦略「必ず交換する」
非交換戦略「決して交換しない」
確率交換戦略「ある分布に従って確率的に交換するかしないか決める」
で答えが変わる事を確認せよだからな
ある意味最初2つの戦略も最後の戦略の特別な場合

893 名前:デフォルトの名無しさん [2022/10/30(日) 11:47:05.86 ID:0KuBg4yb.net]
お題N x Nのルービックキューブのパターン数を求めよ

894 名前:デフォルトの名無しさん [2022/10/30(日) 18:39:10.46 ID:KHak5nKt.net]
>>850
なるほど。

895 名前:デフォルトの名無しさん [2022/10/30(日) 18:54:42.34 ID:Sqe0pI7B.net]
モンティ・ホール問題のシミュレートのように見えて実はちょっと違う
モンキーホール問題だったのだ

896 名前:デフォルトの名無しさん mailto:sage [2022/10/30(日) 20:02:07.15 ID:4vBwn6CZ.net]
>>848 octave
https://ideone.com/LGCuAh

897 名前:デフォルトの名無しさん [2022/10/31(月) 00:39:33.45 ID:MKojko7I.net]
お題 ジュールトムソン効果っぽいものをシミュレーションで再現せよ

898 名前:デフォルトの名無しさん [2022/11/04(金) 07:13:30.92 ID:jLlmakBU.net]
お題:1~10までの合計を求めよ
*ただしライブラリ、ループ文を使わないこと

899 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 07:18:56.49 ID:yh54R4RT.net]
>>857 PHP
55



900 名前:デフォルトの名無しさん [2022/11/04(金) 08:24:04.42 ID:TDQ1gw2t.net]
(1+10)*5

901 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 12:00:50.88 ID:ryvUUS8Q.net]
>>857 cmd
set /a "A=1, B=10, (B-A+1)/2*(A+B)+(B-A+1)%2*(A+B)/2" &rem A≦B

902 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 15:50:39.28 ID:q0UsXtCi.net]
1+2+3+4+5+6+7+8+9+10

903 名前:デフォルトの名無しさん [2022/11/04(金) 15:52:05.99 ID:TBUnPbqZ.net]
>>857
$ dc -e'1 10+5*p'
55
$

904 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:28:57.36 ID:q0UsXtCi.net]
整数とは書いてないな
三角数とか実数とか何か別のものを想定してるかもしれない

905 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:32:28.85 ID:q0UsXtCi.net]
高級言語なら大抵暗黙のうちにライブラリは使ってるだろうし内部的にループも使ってるかもしれない

ループの定義も問題になるかと
gotoは?再帰は?列挙は?...

906 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:36:48.58 ID:BHFqhq9y.net]
>>863
その場合は
> 1~10までの合計
の定義を書かないとね

907 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 16:55:47.69 ID:q0UsXtCi.net]
「その場合」に限定する理由は無いよね?

908 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 17:35:42.12 ID:u3TD418O.net]
>>866
整数なら
> 1~10までの合計
についてほぼ合意できる定義があると思うけど?

909 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 18:32:31.67 ID:iggZ7AM6.net]
そう思ってない人もいる



910 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 18:59:46.26 ID:u3TD418O.net]
思ってない人は具体的にどう言う定義があるのか書けばいいんじゃね?

911 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:06:50.77 ID:iggZ7AM6.net]
ちょっと前のレスくらい読め

912 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:18:35.30 ID:u3TD418O.net]
ん?
ならなにを言いたいのかわからんわ

913 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:20:02.13 ID:iggZ7AM6.net]
わからないなら無理に書き込まなくていいよ

914 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 19:54:59.56 ID:u3TD418O.net]
ごめん、説明できないならいいや

915 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 14:37:23.18 ID:wb4h3pkZ.net]
>>857 octave
https://ideone.com/1JUukk
f = @(a, b) (a + b) * (b - a + 1) / 2;

916 名前:デフォルトの名無しさん [2022/11/05(土) ]
[ここ壊れてます]

917 名前:22:37:38.99 ID:ik3uUvNv.net mailto: >>857
Java
https://paiza.io/projects/qlqEQa2EzsIMTABY1ujOcg?language=java
[]
[ここ壊れてます]

918 名前:デフォルトの名無しさん mailto:sage [2022/11/05(土) 23:35:33.60 ID:WGyFluMA.net]
10*11/2

919 名前:デフォルトの名無しさん [2022/11/06(日) 03:33:15.03 ID:V4pkDxVq.net]
>>857
Kotlin

https://paiza.io/projects/uWXy93c98CoNzF0o2H_wgQ

ループ文は使わず再帰でなんとかした。

(1..10).sum() や (1..10).reduce { a, n -> a + n } でも結果は出るが sum() や reduce() がライブラリにある拡張関数なので没。
10 * 11 / 2 とか 55 を直接出すのはプログラム作る意味がほとんどないような感じがするので止めた。



920 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 04:47:10.33 ID:p1AlQ8ne.net]
お題が、正方形や三角形の面積を求めるのと
同程度に簡単な式だしなあ

921 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 08:11:23.79 ID:l6ScHNeb.net]
Haskell
sum [1..10]

922 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 08:35:41.45 ID:5UCgIOa9.net]
>>861で終了じゃん
最適化して55でも良いけど

中途半端に和の公式使ってるヤツってアホなの?

923 名前:デフォルトの名無しさん [2022/11/06(日) 09:08:00.03 ID:aYMPlSSq.net]
一垓にそうは言えないのでは
ループを使わないの意味が多くの数でもすぐ答えがでそうな処理を見たいのかもしれない

924 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:25:21.24 ID:p1AlQ8ne.net]
掛け算割り算だと中途半端でアホで
足し算だと利口だとおっしゃる

925 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 09:33:05.99 ID:5UCgIOa9.net]
和の公式を使うくらいなら55の方が良い
って話

なんで中途半端な最適化をするの?

926 名前:デフォルトの名無しさん [2022/11/06(日) 09:38:06.42 ID:gK09y9Q8.net]
1^n + 2^n +・・・+(10^25)^n
n=10、 n=-17
の手段選ばすとかは?
25条はぎりふつうループでは困難かとおもえる数値を適当にいまおもいついた

927 名前:デフォルトの名無しさん [2022/11/06(日) 10:54:00.31 ID:Zb5xxfES.net]
= 10+(9+1)+(8+2)+(7+3)+(4+6)+5
= 10+10+ 10+ 10+ 10+ 5
= 10 + (10 * ((10/2)-1))+5
= (10 * ((10/2)-1))+10+5
= x(0.5x-1)+1.5x

928 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 12:06:08.03 ID:5iQhHwnm.net]
こうどなじょうほうせん を愉しむための問題でしょ

929 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 15:29:02.07 ID:RIYDMAGE.net]
と思って>>863を書いたんだけど



930 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 15:33:43.73 ID:RIYDMAGE.net]
1~10の合計
1から10までの合計
じゃなくて
1~10までの合計
っていうのも気になった

931 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 17:04:56.12 ID:PNCv3I6p.net]
1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか

932 名前:デフォルトの名無しさん [2022/11/06(日) 18:24:36.01 ID:S6zCBHE1.net]
するだろ
https://i.imgur.com/jPwi4sZ.jpg

933 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:35:07.31 ID:mzFwuoQr.net]
>>890
合計にはdx関係ないぞ...

934 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:37:14.41 ID:PNCv3I6p.net]
低レベルすぎて草
1以上10以下の実数全体の集合をAとすると
#A = ?_1 ゆえに Σ_{λ∈A}λ は有限の値を取らない

935 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:38:48.30 ID:PNCv3I6p.net]
文字化けしたか
「#A = 連続体濃度」

936 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 18:48:29.30 ID:qhQ571Br.net]
なんか足すと一見無限になりそうだけど
ある区間a<bの間にa<c<bとなるcが取れなくなることはありえないよね?

937 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:07:23.07 ID:9PA1hevU.net]
>>889
和が存在しないとうならそれが答え
3を含むが3.5を含まないという説得力のある説明が出来るならよろしく

938 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:12:17.73 ID:PNCv3I6p.net]
>>895
和が発散する説明はすでにしてあるんだが何を言いたいの

939 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:14:51.13 ID:9PA1hevU.net]
Q:和を求めよ
A:和は存在しない



940 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:15:52.52 ID:9PA1hevU.net]
発散とか収束とか
意味をわかって使わないと恥ずかしいぞ

941 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:17:22.08 ID:PNCv3I6p.net]
>>895みたいなこと言う奴が解析の基礎すら理解できてるとすら思えないが

942 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:17:36.32 ID:9PA1hevU.net]
>>892が最高に恥ずかしい

943 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:19:08.56 ID:9PA1hevU.net]
>>899
最高に笑える書き込みありがとう

944 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:19:25.97 ID:PNCv3I6p.net]
数学的に具体的な反論が一切ないじゃん
バカなの

945 名前:デフォルトの名無しさん [2022/11/06(日) 19:21:59.86 ID:aYMPlSSq.net]
ぽまえら
餅付いて >>857 を嫁

946 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:23:24.47 ID:9PA1hevU.net]
>>892を見ただけでアホだとわかる

947 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:24:24.94 ID:PNCv3I6p.net]
>>904
暴言は結構なんで、数学的に反論してくれませんか?
まあ頭が悪くてできないんでしょうけど

948 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:28:25.36 ID:9PA1hevU.net]
>>905
何に反論してほしいの?

多分視野が狭くて何を主張されてるのかわかってないと思うんで
一回落ち着いた方がいいぞ

その上で
君が主張を明確にして
それに対して反対意見があれば反論してあげる

949 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:30:41.70 ID:9PA1hevU.net]
1以上10以下の実数の総和が存在しないことなんて
誰でもわかる
和が存在するなんて主張はしてないから勘違いしないように



950 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:31:28.37 ID:PNCv3I6p.net]
>>906
>1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか
に対してお前は>>895みたいなクソ発言してるわけだがこのクソ発言の妥当性を説明して見ろよ

951 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:35:38.89 ID:9PA1hevU.net]
和が存在しないというならそれが答え
の意味がわからなかったかな?

その次の文は和の存在とは関係ない
君への宿題

952 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:37:43.37 ID:PNCv3I6p.net]
>>909
任意のRの開区間に対してその元の和が有限の値になる場合何てないんだから
「和が存在しないというならそれが答え」なんて発言は問題の本質を理解していないバカの発言だろ
人に宿題出す前に算数からやり直せよ

953 名前:デフォルトの名無しさん [2022/11/06(日) 19:40:06.40 ID:eRXytuty.net]
【悲報】アスペ君、今日も元気。。。

954 名前:デフォルトの名無しさん [2022/11/06(日) 19:46:26.35 ID:Zb5xxfES.net]
プログラミングのお題なんだから1+2+に決まってるだろ。
少数を含めた1から10までに考えられる数値を足すとかできるわけねえだろ。

955 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:47:59.95 ID:9PA1hevU.net]
>>910
問題の本質というなら
解釈の多様性が本質

和の存在は解釈とは無関係
存在しないなら「存在しない」が答えとなるだけの話

956 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:48:45.29 ID:9PA1hevU.net]
>>912
floatやdoubleなら有限だね

957 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:49:37.79 ID:PNCv3I6p.net]
>>913
お気持ちで数学を語るのやめてくれませんかね
はなはだ不愉快です
「任意のRの開区間に対してその元の和」に対して有限の値を取らないという以外にどんな有意味なモデルが取り得るんですかね
バカすぎて日本語の意味すら理解できてなさそうだけど

958 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:49:56.13 ID:9PA1hevU.net]
決まってるといくら主張しても
お題に書いてないんだから
どう解釈されても出題者が悪い

959 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:51:41.99 ID:9PA1hevU.net]
>>915
お前が数学の話を語りたがってるだけで
私はただ解釈の多様性の話をしてるだけ



960 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:52:43.83 ID:9PA1hevU.net]
>>863に数学っぽい話あったか?

961 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:52:59.97 ID:PNCv3I6p.net]
>>917
実数の開区間の和が有限じゃないことにいちゃもん付けてきたのはオタクでしょ?
有限の値を取らない意外にどんな有意義な解釈が成り立つんですか?
きちんと説明しなさい

962 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:53:54.13 ID:9PA1hevU.net]
>>919
それ別の人

963 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:55:00.86 ID:9PA1hevU.net]
>>890と同一人物だと思って
トンチンカンな書き込みを繰り返してたのたね
恥ずかしい

964 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:55:05.02 ID:PNCv3I6p.net]
>>920
>和が存在しないとうならそれが答え
って和が存在する有意義なモデルがあるって言う前提で話してますよね?
もしそうじゃないならこれはどういう意図で行ったんですか?
ちなみに続く3.5云々の意味もよく分かってません

965 名前:デフォルトの名無しさん [2022/11/06(日) 19:56:03.75 ID:aYMPlSSq.net]
もうこりゃ発散とか収束とか言う前に就職の心配したほうがいいな

966 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:57:33.13 ID:9PA1hevU.net]
>>922
落ち着いてから書き込んでね

967 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:59:09.36 ID:PNCv3I6p.net]
>>924
敗北宣言ですか
これにこりたら今後二度とお気持ちで数学を語るのはやめてください
研究者やエンジニアが迷惑するので

968 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:01:35.14 ID:9PA1hevU.net]
数学を語りたがってるのはお前と>>890だけだって
だから落ち着け

969 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:06:58.14 ID:9PA1hevU.net]
おれの主張は>>863だから
もちろん本気で出題者がそう思っているという主張ではなくて
解釈の余地があるという問題提起



970 名前:デフォルトの名無しさん [2022/11/06(日) 20:07:53.80 ID:Zb5xxfES.net]
問題は出題者の意図を読み取ることが重要
1~10までの整数の和の事だろうなと考えるのが低レベルとは思えない。
常識で考えればそうなる

できればその高レベルのプログラムとやらを説明してほしいものだな。

971 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:12:04.95 ID:9PA1hevU.net]
一応プログラム板なんだからさ
解釈の多様性を多少は意識しようよ
プログラミング言語だったら「動作未定義」

曖昧な仕様書で中国人に発注したら
一番都合の良い解釈をされてとんでもないソフトになるぞ

972 名前:デフォルトの名無しさん [2022/11/06(日) 20:17:19.25 ID:Zb5xxfES.net]
プログラムのお題なんだから、
プログラムで実現できないってのは答えにはならんよ。

国語の問題じゃねえんだから、
プログラムとして成立する答えを出せよ

973 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:24:40.28 ID:9PA1hevU.net]
国語の問題じゃねえんだから
出題者の意図を好意的に汲み取る必要はないんだよ

974 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:26:21.60 ID:mzFwuoQr.net]
>>930
だからちゃんと仕様出せやってことだろ
>>863は半分ネタだと思うけど、実数だと言うなら実数について「1~10までの合計」を定義しないとお題にならんよ

975 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:32:00.92 ID:9PA1hevU.net]
>>932
私は出題者じゃないし実数だなんて主張もしてない

いろんな解釈があるならお題にならん
解釈の余地は可能な限り減らせ

976 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 20:38:00.65 ID:mzFwuoQr.net]
>>933
お前にアンカーしてるわけでもないのに絡んでくるとかあたおかすぎる

977 名前:デフォルトの名無しさん [2022/11/06(日) 20:59:57.69 ID:Zb5xxfES.net]
1から10までの整数の和では無い可能性があるから、
その場合はプログラムでは実現できないって言いたいだけだろ

整数の和として答えてるプログラムを低レベルってどういことやねん。
素直に受け取ればいいものを曲解して不可能に持って行ってるだけだろ

978 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:02:11.02 ID:9PA1hevU.net]
「整数の和として答えてるプログラムを低レベルってどういことやねん。」
だれがそんなことかいた?

979 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:04:22.43 ID:9PA1hevU.net]
>>935
>>931



980 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 21:07:02.93 ID:tOVlE3Vc.net]
>>857
python: https://ideone.com/mJmWy7
やさしいお題、助かります!

981 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 06:42:16.97 ID:C4s2+P7f.net]
仕事では御免だが
解釈の余地を残すことが娯楽では大切だって良く分かる例

982 名前:デフォルトの名無しさん [2022/11/07(月) 15:08:59.94 ID:4okW5BTf.net]
お題:1/1+1/2+...+1/nの合計を求め、分母と分子を整数で出力せよ。
*ただしライブラリを使わないこと

983 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:35:37.09 ID:Sowq9nFL.net]
>>940 Ruby

(1..n).map{ 1r/_1 }.sum

984 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:48:12. ]
[ここ壊れてます]

985 名前:36 ID:wln8XcGb.net mailto: >>940
haskell
https://ideone.com/DtEB7R
[]
[ここ壊れてます]

986 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 17:42:49.96 ID:dFD6FGsc.net]
gcdとかsumとかprintはライブラリじゃないの?

987 名前:デフォルトの名無しさん [2022/11/07(月) 18:21:56.48 ID:UfWjgfnM.net]
1+・・・+1/n の小数点n桁目はいくらか

988 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 18:47:35.11 ID:Fdh4LiCB.net]
>>944
こっちの方がおもしろいかも
小数第○位って昔は言ったけど今は言わない?

989 名前:デフォルトの名無しさん [2022/11/07(月) 20:48:13.34 ID:OXo72DE3.net]
>>940
Java
https://paiza.io/projects/cuy0WENv4Ghi-7jq9eTIbw



990 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 20:49:01.52 ID:FonngYyy.net]
>>943
Pythonではprintは組み込み関数だな
他は知らんけど

991 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:06:30.94 ID:Fdh4LiCB.net]
組み込み関数はライブラリじゃないと
ライブラリと呼ばない言語なら何でもありか

992 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:08:54.69 ID:Fdh4LiCB.net]
C言語上のただのintの乗算でもライブラリが必要な環境もあるわけだけど

993 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:34:22.19 ID:q2YPtCXX.net]
アルゴリズムが見たいのでしょうね

994 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 21:35:14.79 ID:kmERiYaX.net]
まあ今時組込とかでもなきゃintの乗算でライブラリ呼び出す環境もあまりないけどそもそも入出力はライブラリ任せだからねぇ

995 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 23:30:13.24 ID:3GzmFPX6.net]
>>943
Haskell ?
だとsumやgcdはpreludeで標準関数扱い
基本import〜が必要ない奴は標準扱い

996 名前:デフォルトの名無しさん [2022/11/08(火) 01:53:36.92 ID:s644Ul/+.net]
>>940
Kotlin

https://paiza.io/projects/93xp9A_EpkG2QbWBuOvAoQ

分子と分母を別々に保持して足し続けただけ。約分はしていない。

997 名前:デフォルトの名無しさん mailto:sage [2022/11/08(火) 21:45:51.73 ID:dCnZkmaL.net]
>>940
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

998 名前:デフォルトの名無しさん mailto:sage [2022/11/08(火) 21:46:18.88 ID:dCnZkmaL.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

999 名前:デフォルトの名無しさん [2022/11/09(水) 00:46:04.53 ID:oWTDq5DR.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end



1000 名前:デフォルトの名無しさん [2022/11/09(水) 00:46:10.95 ID:oWTDq5DR.net]
>>940 octave
https://ideone.com/zNHUB9
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end

1001 名前:デフォルトの名無しさん [2022/11/09(水) 01:55:16.87 ID:QvIAsso6.net]
なぜ同じ書き込みが4つもある?

1002 名前:デフォルトの名無しさん mailto:sage [2022/11/09(水) 02:02:28.03 ID:Ewgu9c/a.net]
お題スレの7不思議に加えよう

1003 名前:デフォルトの名無しさん [2022/11/09(水) 12:49:26.26 ID:AHjhHUHj.net]
お題
入力した文字列を以下の4種類に分けた文字列を作成する関数を作成してください
・アルファベット大文字
・アルファベット小文字
・数字
・それ以外の文字

1004 名前:デフォルトの名無しさん [2022/11/09(水) 18:55:40.68 ID:dDwxEUkd.net]
Array.from(input).filter(c=>c.match(/[A-Z]/)).join("")
+ Array.from(input).filter(c=>c.match(/[a-z]/)).join("")
+ Array.from(input).filter(c=>c.match(/[0-9]/)).join("")
+ Array.from(input).filter(c=>c.match(/[^A-Za-z0-9]/)).join("")

1005 名前:デフォルトの名無しさん mailto:sage [2022/11/09(水) 20:05:26.68 ID:1g3d+RJJ.net]
>>960 octave
https://ideone.com/SHPVub
function c = f(s)
u = isstrprop(s, 'upper');
l = isstrprop(s, 'lower');
d = isstrprop(s, 'digit');
c = {s(u) s(l) s(d) s(~(u | l | d))};
end

1006 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 01:00:36.16 ID:UXFdZVAF.net]
>>960
Haskell
https://ideone.com/jMHNnq

isUpper = flip elem [ 'A' .. 'Z' ]
isLower = flip elem [ 'a' .. 'z' ]
isNum = flip elem [ '0' .. '9' ]
isOthers = id
. all not
. zipWith ( $ ) [ isUpper, isLower, isNum ]
. repeat

sieve str = [ filter cond str |
cond <- [ isUpper, isLower, isNum, isOthers ] ]

testStr = "foldl1 :: Foldable t => (a -> a -> a) -> t a -> a"

main = mapM_ print $ sieve testStr

1007 名前:デフォルトの名無しさん [2022/11/10(木) 01:50:3 ]
[ここ壊れてます]

1008 名前:8.82 ID:j8kXq8l6.net mailto: >>547
Java
https://paiza.io/projects/Dxe5e0qmmy73WWNdzTvCbg
[]
[ここ壊れてます]

1009 名前:デフォルトの名無しさん [2022/11/10(木) 02:29:28.73 ID:kjI8mJgQ.net]
>>961
俺も正規表現でやりたいけどこっちのほうが5倍速かった…
コンパイル言語に比べたら目くそ鼻くそだがこんだけ違うと考えちゃうな
const str = 'aA0!bB1@cC2#dD3$eE4%'.repeat(500);
let oomoji = [], komoji = [], suuji = [], sonota = [];
for (const c of str) {
let cp;
switch (true) {
case 65 <= cp && cp <= 90:
oomoji.push(c);
break;
case 97 <= cp && cp <= 122:
komoji.push(c);
break;
case 48 <= cp && cp <= 57:
suuji.push(c);
break;
default:
sonota.push(c);
}
}
[oomoji, komoji, suuji, sonota] = [oomoji, komoji, suuji, sonota]
.map(a => a.join``);
// console.table({oomoji, komoji, suuji, sonota});



1010 名前:デフォルトの名無しさん [2022/11/10(木) 02:37:16.98 ID:kjI8mJgQ.net]
>>965
5倍じゃなくて3倍だったわ
perf.linkで測ったコード、
let cp = c.codePointAt();

let cp;
になってたわ寝ぼけてた

1011 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 07:33:44.51 ID:oQpocXYl.net]
>>960
ASCII のみで良い?
それとも Unicode?

1012 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 07:56:41.06 ID:3FlvzqxM.net]
>>960 Ruby

-> s { s.scan(/[A-Z]+|[a-z]+|\d+|[\W_]+/) }

1013 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 14:11:20.86 ID:oQpocXYl.net]
>>960
Kotlin

https://paiza.io/projects/Qfx9ljGCsICVDui8fcn-0A

Unicodeで作った。サロゲートペアの文字もちゃんと扱える。
判別には Java の Character クラスのメソッドを利用している。
これだといわゆる全角の数字は数字扱いになるが漢数字は数字と分類してくれない。
ローマ数字はアルファベット大文字扱い。
日本語の「あ」とかもアルファベットとして扱われるが大文字でも小文字でもないのでそれ以外の文字に追加されるようにした。
コントロールコードは \uXXXX 形式になるようにした。

1014 名前:デフォルトの名無しさん [2022/11/10(木) 18:57:30.40 ID:3zaWz6R+.net]
>>960
PowerShell

function StrClassify($s)
{
  "\P{Lu}", "\P{Ll}", "\P{N}", "[\p{Lu}\p{Ll}\p{N}]" |% {$s -creplace $_}
}

StrClassify "Κωνσταντινούπολιςは1453年にİstanbulと改称された。`n"
StrClassify "塩化銅(Ⅱ)は水中で CuCl₂ ⇄ Cu²⁺ + 2Cl⁻ のように電離する。"

[実行結果]
Κİ
ωνσταντινούπολιςstanbul
1453
は年にと改称された。

CCCC
ulul
Ⅱ₂²2
塩化銅()は水中で ⇄ ⁺ + ⁻ のように電離する。

1015 名前:デフォルトの名無しさん [2022/11/10(木) 20:35:16.34 ID:V5vZiHvW.net]
>>944をやってみたらPythonで300くらいでオーバーフローになった
分子と分母をべつべつに計算してp/qだったとすると
int(10^n * p / q ) % 10 が求める答えのはずだが、この計算ができなかった

1016 名前:デフォルトの名無しさん [2022/11/10(木) 20:44:38.28 ID:V5vZiHvW.net]
ここで問題変更でp/qの小数点n桁目を求める問題にすればいいか
オーバーフローしないように×10ずつして整数部分は無視していけば整数演算の範囲内にできるか
忘れたがユークリッド互除法みたいな?

1017 名前:デフォルトの名無しさん [2022/11/10(木) 20:50:26.16 ID:m98zu82a.net]
input.replace(/[^A-Z]/g,"")
+ input.replace(/[^a-z]/g,"")
+ input.replace(/[^0-9]/g,"")
+ input.replace(/[A-Za-z0-9]/g,"")

1018 名前:デフォルトの名無しさん [2022/11/10(木) 20:51:12.57 ]
[ここ壊れてます]

1019 名前: ID:m98zu82a.net mailto: [/[^A-Z]/g, /[^a-z]/g, /[^0-9]/g, /[A-Za-z0-9]/g]
.map(r => input.replace(r,"")).join("")
[]
[ここ壊れてます]



1020 名前:971 [2022/11/10(木) 21:10:50.60 ID:V5vZiHvW.net]
>>944オーバーフローせずにできた

https://ideone.com/EzCu8k

1021 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 21:27:26.89 ID:p27a51fr.net]
>>944
Haskell

https://ideone.com/2tUIFo

import Data.Ratio

hnn n = flip mod 10 $ truncate $ (* ( 10^n)) $ sum $ map recip [ 1%1..n%1 ]

main = print $ hnn 300

1022 名前:デフォルトの名無しさん [2022/11/10(木) 21:45:52.91 ID:KPTSzoDK.net]
お題 小数点第n位を求めるプログラムを作成せよ

1023 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 21:58:11.94 ID:JknzoKCK.net]
>>977
何の?

1024 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 12:27:18.79 ID:eQP0gwqb.net]
ルート4の

1025 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 13:33:07.98 ID:XogJxnoW.net]
そんなむず過ぎるお題は過疎るのだ却下

1026 名前:デフォルトの名無しさん [2022/11/11(金) 18:36:58.77 ID:Jm4DMnci.net]
>>978
入力された実数

1027 名前:デフォルトの名無しさん [2022/11/11(金) 20:10:51.65 ID:+Uq9lyYZ.net]
(x*10**n)%10

1028 名前:デフォルトの名無しさん [2022/11/12(土) 01:53:40.01 ID:Y/i2pfZ3.net]
お題
配列データと、同じ長さの確率の配列(合計値1)が与えられた時に、対応する確率で配列からデータを出力せよ


aa,bb,cc
0.4,0.5,0.1

→aa 40%, bb 50%, cc 10%で出力

1029 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 08:50:36.22 ID:yCEPOpQl.net]
>>983 Ruby

a = %w[aa bb cc]
p = [0.4, 0.5, 0.1]
f = -> (a, p) { r = rand; a[(0..a.size-2).find{ r < p[0.._1].sum } || a.size - 1] }
10.times{ print f[a, p] }

# => aabbccbbaaaaaabbbbbb



1030 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:10:20.03 ID:g2vYgSbJ.net]
>>983
Haskell
https://ideone.com/UErkR7

import System.Random
import Data.List

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem is ws r = let
folder a b = a : map ( + a ) b
selecter r ( i, ( f, t ) ) = f <= r && r < t
ts = foldr folder [ ] ws
fs = 0 : ts
ifts = zip is $ zip fs ts
in fst $ head $ filter ( selecter r ) ifts

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds

1031 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 10:19:35.32 ID:uOtU06vW.net]
>>983 octave
https://ideone.com/mIKDyu
f = @(a, r) a(rand < cumsum(r))(1);

1032 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 14:34:06.57 ID:Q9bJaddO.net]
>>983 ocaml
https://ideone.com/aDR0Do
let (<<) f g x = f (g x)
let cumsum =
List.rev << fst << List.fold_left (fun (a, s) f -> s +. f :: a, s +. f) ([], 0.)
let f xs =
let r = Random.float 1. in
fst << List.find ((<) r << snd) << List.combine xs << cumsum

1033 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 16:47:04.36 ID:We3Ba5Li.net]
>>983
コレでよかった
Haskell
https://ideone.com/WtPXzw

import System.Random

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem (i:is) (w:ws) r | r < w = i
chooseItem (i:is) (w:ws) r = chooseItem is ws ( r - w )

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds

1034 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 17:19:40.29 ID:MirHjvCf.net]
>>983
別名法とかいうアルゴリズム
https://ideone.com/J0p12R

1035 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 19:13:20.80 ID:MirHjvCf.net]
https://ideone.com/8utmEg
元からあったコードをちょっといじったんだけど変換ミスがあった

1036 名前:デフォルトの名無しさん [2022/11/13(日) 18:45:40.25 ID:zjrUNZaB.net]
>>983
Kotlin

https://paiza.io/projects/dh1A84MN5OxLQkw7r2yL7Q

1037 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 19:01:26.14 ID:ZCYlhUwL.net]
次スレ


1038 名前:vログラミングのお題スレ Part21
https://mevius.5ch.net/test/read.cgi/tech/1668333636/
[]
[ここ壊れてます]

1039 名前:デフォルトの名無しさん [2022/11/15(火) 08:06:01.58 ID:XL64sJsG.net]
うめ



1040 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 09:22:13.74 ID:x0rg5fHd.net]
お題:1辺がn文字の正四角形を表示せよ
1 <= n <= 8 とする

1041 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 10:16:55.01 ID:V1sKjJZc.net]
haskell

https://ideone.com/4Kd3el

sqStr n = ""
++ "\x250f" ++ r "\x2501" ++ "\x2513" ++ "\n"
++ r ( "\x2503" ++ r "\x2001" ++ "\x2503" ++ " \n" )
++ "\x2517" ++ r "\x2501" ++ "\x251b" ++ "\n"
where r = concat . replicate ( n-2 )

main = putStr $ sqStr 10

1042 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 20:16:12.10 ID:r20LvnA2.net]
>>994 octave
https://ideone.com/k9cAWw
function s = f(n)
s = repmat('#', n);
s(2:end-1, 2:end-1) = ' ';
end

1043 名前:デフォルトの名無しさん [2022/11/17(木) 21:39:57.15 ID:BbSHYj/y.net]
うめ

1044 名前:デフォルトの名無しさん [2022/11/17(木) 21:40:03.49 ID:BbSHYj/y.net]
うめ

1045 名前:デフォルトの名無しさん [2022/11/17(木) 21:40:08.22 ID:BbSHYj/y.net]
うめ

1046 名前:デフォルトの名無しさん [2022/11/17(木) 23:04:00.66 ID:W9+RkUIs.net]


1047 名前:1001 [Over 1000 Thread ID:Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 516日 23時間 1分 3秒

1048 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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