22/08/14 21:45:18.38 b/j10zkL.net
(1) aとbからなる文字列があるときその中で部分文字列bbaが最初に完成する文字数を求める
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3
(2) ちょうど50文字のaとbからなる全ての並びの文字列の内
50文字目(最後)にbbaが完成するのは何通りあるか?
長さ3文字で3文字目に完成するのはbbaのひとつだけ
長さ4文字で4文字目に完成するのはabbaとbbbaの二通り
714:デフォルトの名無しさん
[ここ壊れてます] .net
>>678 Ruby
(1)
%w[ab aaa bba bbba babbab bbabbaa].each do |s|
i = s =~ /bba\K/
puts '%s -> %d' % [s, i ? i + 3 : 0]
end
# =>
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3
(2)
f = -> (n, a=[0, 0, 1]) {return a[n] if n<a.size; a<<f[n-1,a]+f[n-2,a]+1;a.last}
p f[49] # => 12586269024
715:デフォルトの名無しさん
22/08/14 22:30:32.35 z6QFcjeU.net
行列の掛け算を実装せよ
二次正方行列 A=((1 -2) (2 3)), B = ((-2 1)(3 -1)) について
AB, BA を求めよ
可能であれば二次正方行列以外の行列についても対応せよ
実装の細かい点については出題者は指定しないので良きに計らって結構。
<お願い>
行列の積において結合則成立の証明を教えてください
716:デフォルトの名無しさん
22/08/14 22:43:04.52 0XTzAkvO.net
>>678 c
URLリンク(ideone.com)
・(1)(2)ともに自信なし(たぶんお題の意味わかってない)
717:デフォルトの名無しさん
22/08/14 22:49:01.35 gf0q/4T2.net
>>680 Ruby Matrixクラス不使用
def product(a, b)
718:[ [a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]], [a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1]], ] end p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]]) # => [[-8, 3], [5, -1]] # 夏休みの宿題は自分でやりましょう
719:デフォルトの名無しさん
22/08/14 22:51:54.64 7JC7m3TJ.net
>>682
>二次正方行列以外の行列についても対応せよ
720:デフォルトの名無しさん
22/08/14 23:05:21.92 gf0q/4T2.net
>>680 >>683
def product(a, b)
m = a.first.size
c = Array.new(a.size){[]}
a.size.times do |i|
b.first.size.times do |j|
c[j][i] = m.times.map{|k| a[k][i] * b[j][k]}.sum
end
end
c
end
p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]])
# => [[0, 7], [1, -9]]
p product([[-2, 1], [3, -1]], [[1, -2], [2, 3]])
# => [[-8, 3], [5, -1]]
721:デフォルトの名無しさん
22/08/14 23:09:42.44 ct8M+Uij.net
NxMのデータをどう定義するか だけの問題だな
毎回悩む 下は後悔してるタイプ
(defparameter *position-IO*
(loop
for input in '(7 8 9
4 5 6
1 2 3)
for pos below 9
collect (cons input pos)))
722:デフォルトの名無しさん
22/08/15 00:42:19.42 PTEGgn5Q.net
>>679
どういう頭してたらその法則性に気づくん???
723:デフォルトの名無しさん
22/08/15 01:31:39.90 b/MTJSvV.net
>>678
Kotlin script
(1)
listOf("ab","aaa","bba","bbba","babbab","bbabbaa").forEach { print("$it ->"); it.indexOf("bba").let { if (it >= 0) println(it + 3) else println(0) } }
実行時の出力
ab ->0
aaa ->0
bba ->3
bbba ->4
babbab ->5
bbabbaa ->3
(2)
println(1L shl (50 - 3))
実行時の出力
140737488355328
724:デフォルトの名無しさん
22/08/15 01:56:11.12 RG8mAl+Q.net
(2)
出題の仕方が間違ってた
最後に唯一のbbaが現れるパターンと書くべきだった
自分の中ではこのことしか考えてなかったから
>>679さんは汲んでくれたようで、早さにも驚いたけど
725:デフォルトの名無しさん
22/08/15 09:19:59.19 jWRkxbjN.net
なるほど, 再帰的に構成すればいいのか
aから始まる時: a + x[n-1]
baから始まる時: ba + x[n-2]
bbから始まる時: bb...bba
726:デフォルトの名無しさん
22/08/15 09:43:22.06 90U51paY.net
>>686
そういう漸化式は普通に受験で良くでてくる
727:デフォルトの名無しさん
22/08/15 17:00:11.92 ioAOBwsA.net
>>680
URLリンク(ideone.com)
URLリンク(ja.wikibooks.org)'s-associativity
728:デフォルトの名無しさん
22/08/15 17:16:58.66 RVV7PTHo.net
>>691 c
URLリンク(ideone.com)
・二次元でintのみ
729:デフォルトの名無しさん
22/08/15 17:19:53.25 RVV7PTHo.net
>>680
URLリンク(ideone.com)
・二次元でintのみ
730:693
22/08/16 16:05:44.79 y+iYdbLW.net
>>680 c
URLリンク(ideone.com)
・>>693から若干の整理
・インデントも修正
731:デフォルトの名無しさん
22/08/16 19:29:50.25 6LZk+vGC.net
>>688
え?言ってる意味がわからない。どういうこと?
732:デフォルトの名無しさん
22/08/16 20:01:21.15 xodQRDI1.net
bba+gge=momo
733:デフォルトの名無しさん
[ここ壊れてます] .net
>>695
末尾以外にbbaが現れる文字列を除外するってことじゃろう
734:デフォルトの名無しさん
22/08/16 21:15:34.85 dhC56AkH.net
bbaが最後に達成されるんじゃなければ2^47計算するだけのなん�
735:フ面白みもない問題になるからそこで気付く人は気づくよね
736:デフォルトの名無しさん
22/08/16 23:04:49.04 mbmTGUKF.net
ついでに50文字で今度は最後がbbaじゃなくて
bbbのときとbabのときのそれぞれのパターン数を求めるって問題
737:デフォルトの名無しさん
22/08/17 01:28:19.97 0f27vmNE.net
>>697
なるほど。やっと意味がわかった。
738:デフォルトの名無しさん
22/08/17 14:04:15.12 UFtMHmKs.net
お題:分割されている顔文字を結合して表示してください
1つの顔文字は半角4字で構成。左右対称。2字ずつ半分に分割されてシャッフルされている
出力する顔文字の順番は自由とする
入力 < ^)(^
出力 > (^^)
入力 < ^)(-(^-)(vv)
出力 > (^^)(--)(vv)
739:デフォルトの名無しさん
22/08/17 14:59:27.47 2ZT38iyw.net
お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」をそれぞれ表示する方法を示してください
便宜的に、ナンプレのマスには左上から右へ、右下に向かい0~80までの数値を入れます。
0 1 2 3 4 5 6 7 8
...
...............80
左から1列目の9マスは
740:デフォルトの名無しさん
22/08/17 15:10:22.08 2ZT38iyw.net
途中送信してしまった
お題:ナンプレ(数独)における「縦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]
となります。
等差を利用して数字だけを表示するものは不可です。
マスに何の値が入っていても表示できるようにしてください。
741:デフォルトの名無しさん
22/08/17 21:47:42.92 GkJOOerG.net
>>703 c
URLリンク(ideone.com)
742:デフォルトの名無しさん
22/08/17 23:34:27.13 yTY/OYLu.net
>>701
(><)
743:デフォルトの名無しさん
22/08/18 02:15:12.90 KCyiWPRI.net
>>703
perl5
URLリンク(paiza.io)
744:デフォルトの名無しさん
22/08/18 03:07:13.35 dBOjwuYR.net
>>701 JavaScript
> ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r))
[ '(^^)', '(--)(^^)(vv)', '(><)' ]
745:デフォルトの名無しさん
[ここ壊れてます] .net
>>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)
(-(^-)^) -> (--)(^^)
746:デフォルトの名無しさん
[ここ壊れてます] .net
>>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
747:デフォルトの名無しさん
[ここ壊れてます] .net
>>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,6
748:7,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
749:704
22/08/18 23:38:15.48 YBxy/c4L.net
>>703 c
URLリンク(ideone.com)
・>>704から若干の整理
750:デフォルトの名無しさん
22/08/19 23:42:01.44 GkIv/1vJ.net
お題
<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
751:デフォルトの名無しさん
22/08/19 23:58:05.14 zRvvDV0W.net
なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?
752:デフォルトの名無しさん
22/08/20 00:02:54.24 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:デフォルトの名無しさん
22/08/20 07:49:15.49 /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:デフォルトの名無しさん
22/08/20 17:09:35.31 tvd+mgyM.net
>>712 c
URLリンク(ideone.com)
755:デフォルトの名無しさん
22/08/20 21:26:59.76 myFbjTal.net
>>712
C#
URLリンク(paiza.io)
756:デフォルトの名無しさん
22/08/20 22:24:09.90 5JSGWnVi.net
>>703ってこれじゃだめなのかな
7行で書ける
URLリンク(ideone.com)
757:96
22/08/21 02:42:00.00 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;
}->(<>);
※見易くするためインデントを全角スペースに置換してあります。
実行結果:
URLリンク(ideone.com)
758:デフォルトの名無しさん
22/08/21 06:03:07.44 V5T4kdVo.net
>>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?
759:デフォルトの名無しさん
22/08/21 07:03:57.35 3JIuIXQv.net
<group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし
760:デフォルトの名無しさん
22/08/21 08:49:24.60 0ZMA3aWJ.net
>>713
実際にここでも数字を使っている例が出て来てるからわかると思うけど
競プロなんかではよくあるフォーマットだよ
761:デフォルトの名無しさん
22/08/21 18:07:19.66 ecIOs+Jg.net
>>666
C#
URLリンク(paiza.io)
762:デフォルトの名無しさん
22/08/21 18:28:38.88 Y2TZP89X.net
お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする
763:デフォルトの名無しさん
22/08/21 18:45:13.28 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:デフォルトの名無しさん
22/08/21 18:49:48.17 ecIOs+Jg.net
>>701
C#
URLリンク(paiza.io)
765:デフォルトの名無しさん
22/08/21 18:51:27.42 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#
URLリンク(paiza.io)
767:デフォルトの名無しさん
[ここ壊れてます] .net
>>724 c
URLリンク(ideone.com)
768:デフォルトの名無しさん
[ここ壊れてます] .net
>>648
C#
URLリンク(paiza.io)
769:729
22/08/22 19:20:01.17 7CA3B9Dd.net
>>724 c
URLリンク(ideone.com)
・>>729 どう見ても正常終了です。本当にありがとうございました。
・子プロセスの強制終了を見届けてから自分自身も強制終了
770:デフォルトの名無しさん
22/08/25 15:38:14.81 bJn+zm7R.net
>>724
その強制終了って人間が Ctrl + C を押すなどしてやるという意味?
間に合わずに全部出力し切った場合は GAME OVER 出すということ?
771:デフォルトの名無しさん
22/08/25 15:52:23.73 BfuXla1W.net
>>732
強制終了→exit(0)などでプログラム的に終了させる
GAME OVER→お題の達成失敗
772:デフォルトの名無しさん
22/08/25 16:09:53.36 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:デフォルトの名無しさん
22/08/25 18:48:07.98 0xws5w3m.net
フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ
本人以外は
775:デフォルトの名無しさん
22/08/25 20:40:48.98 0z7AphVM.net
>>734
Java
URLリンク(paiza.io)
776:デフォルトの名無しさん
22/08/25 21:10:16.35 /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:デフォルトの名無しさん
22/08/25 22:00:47.00 JPPVgQ9Y.net
beer licenseでよければ書くが
779:デフォルトの名無しさん
22/08/26 04:09:37.08 NIKxWs5c.net
割とすぐに出来るもんなんですね
どちらも実用上問題なさそうな、いい感じの実行結果です
>738は最新の実行環境に心当たりがなかったので確認に手間どりましたが
Chromeのコンソールから実行して確認できました
(cscriptで実行しようとしたらat()に対応してなかったので)
いやー勉強になります、ありがとう
780:デフォルトの名無しさん
22/08/26 04:49:22.52 0rX9u4fb.net
>>740
スレタイも読めないアホは消えろ
781:96
22/08/26 05:19:52.33 GgZblxs6.net
>>740
人をタダで利用してない?
782:デフォルトの名無しさん
22/08/26 11:51:47.61 d54FvNjc.net
>>733
マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか?
そして出力中に停止できなかったら "GAME OVER" が最後に出ると。
783:デフォルトの名無しさん
22/08/26 14:32:15.45 71YXfdUw.net
>>743
その実装でもいいよ
題意はいかにHello, World!出力中にプログラムを終了させるかだから
sleep挟んでもいい
784:デフォルトの名無しさん
22/08/26 18:44:07.03 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:デフォルトの名無しさん
22/08/26 21:28:18.28 NIKxWs5c.net
はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え
その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」
「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが
もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか?
概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか?
もしそうなら申し訳ない、次からは気をつけます
786:デフォルトの名無しさん
22/08/26 21:31:39.94 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
22/08/29 02:30:43.54 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";
}
※見易くするためインデントを全角スペースに置換しています。
実行例:
URLリンク(ideone.com)
788:96
22/08/29 02:55:16.14 QAZMtAov.net
>>748
128.0.0.0/1 の結果が変
バグ入りだ、ゴメンチャイ
789:96
22/08/29 03:01:45.22 QAZMtAov.net
あれ?いいのかな?
仕様を推測して作ったけどちょっと混乱したかも…
寝るわ
790:デフォルトの名無しさん
22/09/09 22:29:09.28 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:デフォルトの名無しさん
22/09/09 23:02:00.41 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:デフォルトの名無しさん
22/09/09 23:46:43.88 3788iROh.net
>>751 ruby
URLリンク(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]
b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]
puts f(a, b)
793:753
[ここ壊れてます] .net
>>751
URLリンク(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]
puts f(a, b)
794:デフォルトの名無しさん
22/09/10 00:34:04.51 sDbT/M8A.net
みんな解くのはえーなぁ
795:96
22/09/10 02:29:07.85 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:デフォルトの名無しさん
22/09/10 11:29:46.54 q8enYz1J.net
>>751 octave
URLリンク(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));
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:デフォルトの名無しさん
22/09/10 13:32:08.25 q8enYz1J.net
>>751 c
URLリンク(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))
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:デフォルトの名無しさん
22/09/10 19:18:11.93 PLqR4TKQ.net
>>751
Kotlin
可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな?
URLリンク(paiza.io)
240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。
(リストの順番で覚えているのでこうなる)。
799:デフォルトの名無しさん
22/09/10 22:25:19.23 7X0yi8nW.net
お題
>>751の問題について
長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします
URLリンク(downloadx.getuploader.com)
この図は50を探すところを描いています
青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします
長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります
右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします
>>751の問題をしゃくとり法で解いてください
800:デフォルトの名無しさん
22/09/10 22:51:25.27 7X0yi8nW.net
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いかも、これだと55を見つけられない
各自で考えていただければありがたく
801:デフォルトの名無しさん
22/09/10 22:52:41.16 7X0yi8nW.net
いや、いいのか!? ダメだ混乱してきたもうパニックですわ
802:デフォルトの名無しさん
22/09/10 22:57:53.10 sDbT/M8A.net
おちつけ
803:デフォルトの名無しさん
22/09/10 23:12:42.56 7X0yi8nW.net
>>760
> 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます
これは間違いでした、上方向から右方向に変わる直前の値が回答候補ですね
50を探す場合、56,55,51が候補です
URLリンク(downloadx.getuploader.com)
804:素数を数えるんだ
22/09/10 23:25:22.59 22kPJ9rf.net
2, 3, 5, 7, 11, 13, 17, 19......
805:デフォルトの名無しさん
22/09/11 01:04:25.98 /LH0BDzE.net
お題
2~19までの素数を生成し掛け算の表を出力してください
806:デフォルトの名無しさん
22/09/12 01:50:52.46 xawmAmgS.net
>>751
Java
URLリンク(paiza.io)
807:デフォルトの名無しさん
22/09/12 10:44:10.79 VxR6iqOp.net
>>764
Kotlin
URLリンク(paiza.io)
出力をHTMLにするとそれっぽく表示できた。
50は正方形の面積リストの最初に入れたが例の画像と同じような見た目になった。
808:デフォルトの名無しさん
22/09/12 18:32:56.65 eGlSQ2pk.net
>>751
URLリンク(ideone.com)
>>764
URLリンク(ideone.com)
809:デフォルトの名無しさん
22/09/13 22:22:38.95 B0VHMNYc.net
>>766
C#
URLリンク(paiza.io)
810:デフォルトの名無しさん
22/09/13 22:25:19.07 V4Kz63G0.net
お題:OpenGLで四角形を3つ描画せよ
一番下の四角形が1番大きく赤色
その上にのってる四角形は2番目に大きく緑色
さらにその上にのってる四角形は3番目に大きく青色
811:デフォルトの名無しさん
22/09/14 12:47:57.36 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:デフォルトの名無しさん
22/09/14 15:20:59.73 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:デフォルトの名無しさん
22/09/15 05:31:46.38 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:デフォルトの名無しさん
22/09/15 22:07:10.52 AaudQZzp.net
うるう秒のテーブルがないと求められなくない?
816:デフォルトの名無しさん
22/09/16 00:34:31.77 ETiYX3D6.net
400年で146097日増えるみたいだから適当にバイアス付けて146097で割る予感
817:デフォルトの名無しさん
22/09/16 00:35:51.49 ETiYX3D6.net
違う
適当にバイアス付けて÷365.2425だ
818:デフォルトの名無しさん
22/09/16 01:05:26.42 /mniU0r8.net
フェアフィールドの公式てwikipediaに書かれている出自不明な公式でも何でも無いでっち上げの記事でしょ
式の解説文がこれまた頭悪くて、なのに誰も修正しないという
819:デフォルトの名無しさん
22/09/16 01:13:35.77 mMDmJ4/Z.net
グレゴリオ歴のとこに解説載ってるよ
URLリンク(ja.m.wikipedia.org)
820:デフォルトの名無しさん
22/09/16 21:18:24.66 k/2PI65L.net
>>772
Java
URLリンク(paiza.io)
821:デフォルトの名無しさん
22/09/17 17:48:30.91 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:デフォルトの名無しさん
22/09/17 18:42:03.76 ZMguHADz.net
>>781
零因子の発掘ですか、濃ゆいお題ですね…
823:デフォルトの名無しさん
22/09/18 11:34:42.07 qZaavGGf.net
お題:循環参照を開放せよ。
java
URLリンク(ideone.com)
・ガベコレの対象になったのを確認まででヨシとす
c++
URLリンク(ideone.com)
824:デフォルトの名無しさん
22/09/18 12:52:34.73 BMeW7wRv.net
>>783
Java
URLリンク(paiza.io)
825:デフォルトの名無しさん
22/09/18 16:37:27.93 BMeW7wRv.net
>>783
Python
URLリンク(paiza.io)
826:デフォルトの名無しさん
22/09/19 02:47:41.37 /08McGz8.net
>>783
Kotlin
URLリンク(paiza.io)
Java VM 上で動くから Java と同じで参照している変数を null にして System.gc() するだけ。
827:デフォルトの名無しさん
22/09/24 01:13:05.90 uYRJl5GL.net
>>772
亀レスHaskell
URLリンク(ideone.com)
色々考えて結局テーブル作って処理という最後の手段
わざわざ公開するほどのもんでもないけど一区切りつけるため
暦の勉強になった
なんで大の月と小の月の配置はこんなみっともないことになってるんだろ?
歴史家が調べでよくわからんみたいだけど
828:デフォルトの名無しさん
22/09/24 04:40:38.82 6vPOYH6k.net
>>772
だめ。その式に当てはめると必ずずれる。
829:デフォルトの名無しさん
22/09/24 07:42:29.88 aunrhsr3.net
うるう秒を考慮しないとずれる
830:デフォルトの名無しさん
22/09/24 09:42:29.34 v3rIJe0P.net
>>788
問題には書かれていないけれどその式は条件によって前処理が必要
・1-2月は前年として扱う。 1年を3-14月として計算
m=1 or 2 の時 y=y-1, m=m+12
>>789
UNIXTIMEにうるう秒なんて無い
831:デフォルトの名無しさん
22/09/24 11:33:11.17 aunrhsr3.net
>>790
日付に変換する過程でうるう秒考慮しないとずれるでしょう
832:デフォルトの名無しさん
22/09/24 12:13:55.28 v3rIJe0P.net
>>791
UNIXTIMEは「epocからの実時間の秒数」では無い
実時間から、うるう秒は加減され含まれず、1日は86400秒換算
だからそれを日時に変換しても「うるう秒の時刻を表せない」だけでズレなど発生しない
833:デフォルトの名無しさん
22/09/24 12:34:24.41 aunrhsr3.net
>>792
レスありがとう。不勉強だったわ。
834:デフォルトの名無しさん
22/09/24 16:57:05.53 6vPOYH6k.net
>>790
出題ミスか。
これまでに作られたプログラムはその辺のことを考慮したプログラムになっていたのかな?
だったら分かってたんだからその辺の事を書いておいて欲しかったな。
835:デフォルトの名無しさん
22/09/24 22:38:52.94 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:デフォルトの名無しさん
22/09/24 22:45:27.51 Fvr5cAu6.net
>>795
間違えた
⌊m×30.6⌋という関数は0,1,2,3,4,‥の時の値が
31,31,30,31,30
の繰り返し
件の公式のmの項はコレを一月分ずらしてる
837:デフォルトの名無しさん
22/09/28 02:17:31.98 UDkh+W3M.net
お題:4回呼び出したらその内の1回が失敗する関数を書け
失敗した場合は「failed」と表示、成功した場合は「ok」と表示せよ
838:デフォルトの名無しさん
22/09/28 09:47:46.29 +QlM3L0o.net
seed変数はパラメータ渡しで良いですか
839:デフォルトの名無しさん
22/09/28 19:05:59.31 WptV1D3q.net
>>797 c
URLリンク(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;
}
840:デフォルトの名無しさん
22/09/28 22:51:23.95 7XofIB3A.net
>>797 Ruby
def f
$f_cnt||=0
puts$f_cnt==3||(rand(4)==~-$f_cnt+=1)?:failed: :ok
end
841:デフォルトの名無しさん
22/09/30 04:16:06.13 F2zw9Wj+.net
>>797
Kotlin
URLリンク(paiza.io)
Int型1つ分のワークエリアを呼ぶ側から与えてそこでカウントして必ず4回の内1回が失敗になる。
乱数を使うと4回の内1回失敗ではなくなる可能性があるので使っていない。
引数としてInt型の参照を渡しても中身を変えられないのでIntArray(Java なら int[] に相当)で1要素作ってIntArrayの参照を渡している。
クラスでやっても良かったが、わざわざクラス作るほどのことでもないと思ったのでこの方式にした。
842:デフォルトの名無しさん
22/10/01 01:23:09.73 I5nFps2z.net
>>797
Java
URLリンク(paiza.io)
843:デフォルトの名無しさん
[ここ壊れてます] .net
お題: あみだ URLリンク(imgur.com)
画像のようなマス目の上に直線を引いたあみだを次のように表現することにします。
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:デフォルトの名無しさん
22/10/10 00:03:47.74 Em47unOv.net
reduced expressionのまとめられる積を出来るだけまとめたものが必ず最短になるなら簡単なんだけどな
845:デフォルトの名無しさん
22/10/10 12:25:25.51 CId/Nblu.net
Gapとか使えばいいんじゃね
846:デフォルトの名無しさん
22/10/10 15:00:17.69 AiOpkeUk.net
reduced expression の長さ自体の計算は簡単だけどこの問題は"reduced expressionの長さを求めよ"ではないからそこまで数学的に単純じゃないよ
847:デフォルトの名無しさん
22/10/10 20:53:48.73 uiS3Rjx/.net
>>803
お題1
URLリンク(paiza.io)
お題2
URLリンク(paiza.io)
お題1とお題2でそれぞれ入力と出力をあわせるようにした
Mをできるだけ小さくって難しいな
これでいいのかわからん
848:デフォルトの名無しさん
22/10/10 21:09:44.88 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:デフォルトの名無しさん
22/10/10 21:16:09.04 TC3V9vEZ.net
(3) s ( i i+1 )を返して終了
でもとまる
ここでミソはreduced expressionの1番右は( i i+1 )と決め打ち出来ること、コレがあるから多項式時間で終わる
しかしアミダの場合1番右の初手をそんなに簡単に決定出来るかが分からん
初手の可能性は転置全部の可換な集合のうち極大であるもの全体のいずれかに最短が入る事は簡単に示せるけど、そのような極大な可換集合をどれとっても必ずうまくいくことの証明がむずかしい
多分出来るんだとは思うけど正直数学板で話題にするような話でプロ板で出すような問題じゃない気がする
850:441
22/10/11 10:43:04.37 Q+yx5xdI.net
>>803
最近やっとpythonを学び始めたレベルだから合ってるかわからん
コメントとかもちゃんと書いたほうがいいのだろう
851:か 暇な人添削してくれると嬉しい お題1 https://ideone.com/uQ0lEu お題2 https://ideone.com/IvtRj2
852:デフォルトの名無しさん
22/10/11 12:04:38.77 xv8Y5zzF.net
しゃぶれよ
853:96
22/10/13 07:01:45.31 JNehkz2R.net
>>773
自分でやれ
854:デフォルトの名無しさん
22/10/22 02:49:22.02 ql0xnxKt.net
やってるやん
855:デフォルトの名無しさん
22/10/24 10:24:26.56 sCRx2Xsd.net
お題
プリンタAは1分間に1ページ印刷できます
プリンタBは3分間に1ページ印刷できます
プリンタCは5分間に1ページ印刷できます
プリンタを3台同時に動かして100ページを印刷します
100ページを印刷し終わるのに何分掛かるか求めてください
856:デフォルトの名無しさん
22/10/24 12:38:35.85 PxuF7JuF.net
>>814
perl5
URLリンク(paiza.io)
857:デフォルトの名無しさん
22/10/24 13:32:21.38 LLDppSf/.net
>>815
バグってるぞ
65分だと99枚しか印刷されない
858:デフォルトの名無しさん
22/10/24 14:17:54.79 l9s5dDsa.net
>>814 cmd
set /a "p=100, n=15*p/23+!!(15*p%23)"
859:デフォルトの名無しさん
22/10/24 15:31:07.39 FSEywfH4.net
haskell
pages n = sum $ map ( div n ) [ 1,3,5 ]
main = print $ head [ n | n <- [1..], pages n >= 100 ]
860:デフォルトの名無しさん
22/10/24 20:20:16.51 112hix5y.net
>>814
aow = 100
power = (1 + 1r/3 + 1r/5)
printf(aow / power) // => 65.21739130434783
861:デフォルトの名無しさん
22/10/24 22:40:57.89 SGYFZ2pJ.net
>>814 octave
URLリンク(ideone.com)
f = @(n) ceil(n * 15 / 23);
862:デフォルトの名無しさん
22/10/25 01:46:09.54 m3snEfri.net
>>814
Kotlin
何も考えずただカウントして求めるように書いた。
URLリンク(paiza.io)
863:デフォルトの名無しさん
22/10/25 06:54:39.16 LZqPXT/2.net
>>817,820
逆算はページ数によってはダメ
例えば3ページの時、3分4ページが正解だけど
(B=2/3)+(C=2/5) で1繰り上がって2分が出て来る
864:デフォルトの名無しさん
22/10/25 07:50:54.84 V4E25MPr.net
A, B, Cでそれぞれ45/23, 15/23, 9/23ページ印刷すれば45/23分で3ページ印刷し終わるよ
865:デフォルトの名無しさん
22/10/25 08:18:47.97 5cB2OctB.net
100ページだからセーフ
866:デフォルトの名無しさん
22/10/25 13:35:12.41 xp4U3IJL.net
>>814
JavaScript
URLリンク(paiza.io)
867:デフォルトの名無しさん
22/10/25 20:38:44.30 Er29dtqL.net
甘えんな
印刷周期を一定と仮定した上で解として取りうる離散値のどれになるかを小数単位で求めるプログラムも書こうよ
868:デフォルトの名無しさん
22/10/25 21:08:38.15 idE58GAF.net
すまん、1分に3枚じゃなくて3分に1枚かorz
869:デフォルトの名無しさん
22/10/25 22:03:54.71 b0dw4lqu.net
>>814
Java
URLリンク(paiza.io)
870:デフォルトの名無しさん
22/10/25 22:28:13.40 F6XUw+z/.net
じゃあ1分に1枚、3枚、5枚のプリンターでの印刷というお題も出すか。
871:デフォルトの名無しさん
22/10/25 22:38:49.46 d0t/LHiA.net
>>814 octave
URLリンク(ideone.com)
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
URLリンク(ideone.com)
let f n =
let rec aux m =
if n <= (m + m / 3 + m / 5) then m else aux (m + 1)
in aux 0
872:デフォルトの名無しさん
22/10/25 23:47:11.01 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:デフォルトの名無しさん
22/10/26 13:26:51.44 FciA0hc1.net
お題
オークA「ぐっふっふ…… 俺は媚薬を盛ってないぜ……」
オークB「ぐふっ…… 媚薬を盛ったやつはAかCのどちらかだぜ…」
オークC「オークBかDは嘘をついているぜ…ぐっふっふっふっ……」
オークD「ぐふふ…媚薬を盛った奴はB,Eの中にはいないぜ……ぐひっ…」
オークE「げひひっ……媚薬を盛ったやつは本当の事を言っているぞ…」
オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
女騎士「くうぅ…誰が嘘をついて誰が私に媚薬を盛ったんだ……!」
オーク達「ぐっふっふ……」
論理演算を用いて答えを求めてください
874:デフォルトの名無しさん
22/10/26 13:33:52.83 FciA0hc1.net
オークCとオークEがめんどくさいな
875:デフォルトの名無しさん
22/10/26 15:30:35.63 DM8ZU7Du.net
全てが媚薬を盛って全員が嘘をついている
これで全員の発言と矛盾がないと思う
876:デフォルトの名無しさん
22/10/26 16:28:02.83 xzd5i3vP.net
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
は正しいと仮定しないとなんでもありありになっちゃうだろ
877:デフォルトの名無しさん
22/10/26 18:06:43.51 VWCwwszG.net
さすがに
> オーク達「ちなみに、お前に媚薬を盛ったのはこの中の一匹で、俺たちの中で一匹が嘘をついているぞ……」
コレウソついてるのは一匹“だけ”つて意味だよね?
“少なくとも一匹はウソついてる”
じゃないよね?
878:デフォルトの名無しさん
22/10/26 18:20:40.38 S3XzLK/s.net
このタイプの論理問題ってよく見かけるな
初出ってどこなんだろうな
879:デフォルトの名無しさん
22/10/26 19:23:29.30 gD5qQ1ZG.net
>>836
> “少なくとも一匹はウソついてる”
だと、全員嘘つきでもいいからなんでもありになっちゃう気がする
880:デフォルトの名無しさん
22/10/26 20:30:42.10 dmTYCGjA.net
>>832
Haskell
まだ自信なし
URLリンク(ideone.com)
881:デフォルトの名無しさん
22/10/26 21:23:18.21 OrdcPqRc.net
オーク達「」が真であることは、
この世界の神である出題者が保証してるわけだな?
882:デフォルトの名無しさん
22/10/26 21:38:57.12 Bjop1AC4.net
出題者が嘘をついていて、オークがそのような発言をしていない可能性もある
883:デフォルトの名無しさん
22/10/27 01:22:34.18 s7i1htqL.net
>>832
Haskell
一ヶ所間違ってたので訂正
あとウソつきはちょうど1人という条件つけたら解一個になった
URLリンク(ideone.com)
884:デフォルトの名無しさん
22/10/27 09:19:06.82 Uf+5HE/G.net
Haskell
ウソつき1人としてループを5×5に
5人しかいないので大して変わらないけど
URLリンク(ideone.com)
885:デフォルトの名無しさん
22/10/27 14:26:07.23 QRorZadJ.net
>>832
Java
URLリンク(paiza.io)
886:デフォルトの名無しさん
22/10/29 19:11:19.58 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:デフォルトの名無しさん
22/10/29 19:33:57.73 uuZ1gbyy.net
>>845
g(k)って必ずしも有限集合にならなくない?
888:デフォルトの名無しさん
22/10/29 19:39:30.16 O3TXZpYa.net
>>946
orz
訂正
g(k) = min{ f(n) | nはkの倍数である自然数 }
889:デフォルトの名無しさん
22/10/30 00:28:15.63 BQOGiCuF.net
お題
プレーヤーの前に閉じた3つのドアがあります
1つのドアの後ろには景品の新車があります
2つのドアの後ろにははずれを意味するヤギがいます
プレーヤーは新車のドアを当てると新車がもらえます
プレーヤーが1つのドアを選択したあとに司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せます
ここでプレーヤーは「最初に選んだドアを残っている開けられていないドアに変更してもよい」と言われます
ここでプレーヤーはドアを変更すべきだろうか?
乱数を使ったシミュレーションで答えを求めてください
890:デフォルトの名無しさん
22/10/30 03:55:05.76 KHak5nKt.net
>>848
モンティ・ホール問題だな。
Kotlin
URLリンク(paiza.io)
891:デフォルトの名無しさん
22/10/30 08:09:55.23 oF72FRjI.net
ドアを変更するかどうかのところはランダムにする必要無くない?
二択なので一方に決めていれば残りが逆側の確率
892:デフォルトの名無しさん
22/10/30 10:05:48.56 Rpnmj8SE.net
まぁ
交換戦略「必ず交換する」
非交換戦略「決して交換しない」
確率交換戦略「ある分布に従って確率的に交換するかしないか決める」
で答えが変わる事を確認せよだからな
ある意味最初2つの戦略も最後の戦略の特別な場合
893:デフォルトの名無しさん
22/10/30 11:47:05.86 0KuBg4yb.net
お題N x Nのルービックキューブのパターン数を求めよ
894:デフォルトの名無しさん
22/10/30 18:39:10.46 KHak5nKt.net
>>850
なるほど。
895:デフォルトの名無しさん
22/10/30 18:54:42.34 Sqe0pI7B.net
モンティ・ホール問題のシミュレートのように見えて実はちょっと違う
モンキーホール問題だったのだ
896:デフォルトの名無しさん
22/10/30 20:02:07.15 4vBwn6CZ.net
>>848 octave
URLリンク(ideone.com)
897:デフォルトの名無しさん
22/10/31 00:39:33.45 MKojko7I.net
お題 ジュールトムソン効果っぽいものをシミュレーションで再現せよ
898:デフォルトの名無しさん
22/11/04 07:13:30.92 jLlmakBU.net
お題:1~10までの合計を求めよ
*ただしライブラリ、ループ文を使わないこと
899:デフォルトの名無しさん
22/11/04 07:18:56.49 yh54R4RT.net
>>857 PHP
55
900:デフォルトの名無しさん
22/11/04 08:24:04.42 TDQ1gw2t.net
(1+10)*5
901:デフォルトの名無しさん
22/11/04 12:00:50.88 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:デフォルトの名無しさん
22/11/04 15:50:39.28 q0UsXtCi.net
1+2+3+4+5+6+7+8+9+10
903:デフォルトの名無しさん
22/11/04 15:52:05.99 TBUnPbqZ.net
>>857
$ dc -e'1 10+5*p'
55
$
904:デフォルトの名無しさん
22/11/04 16:28:57.36 q0UsXtCi.net
整数とは書いてないな
三角数とか実数とか何か別のものを想定してるかもしれない
905:デフォルトの名無しさん
22/11/04 16:32:28.85 q0UsXtCi.net
高級言語なら大抵暗黙のうちにライブラリは使ってるだろうし内部的にループも使ってるかもしれない
ループの定義も問題になるかと
gotoは?再帰は?列挙は?...
906:デフォルトの名無しさん
22/11/04 16:36:48.58 BHFqhq9y.net
>>863
その場合は
> 1~10までの合計
の定義を書かないとね
907:デフォルトの名無しさん
22/11/04 16:55:47.69 q0UsXtCi.net
「その場合」に限定する理由は無いよね?
908:デフォルトの名無しさん
22/11/04 17:35:42.12 u3TD418O.net
>>866
整数なら
> 1~10までの合計
についてほぼ合意できる定義があると思うけど?
909:デフォルトの名無しさん
22/11/04 18:32:31.67 iggZ7AM6.net
そう思ってない人もいる
910:デフォルトの名無しさん
22/11/04 18:59:46.26 u3TD418O.net
思ってない人は具体的にどう言う定義があるのか書けばいいんじゃね?
911:デフォルトの名無しさん
22/11/04 19:06:50.77 iggZ7AM6.net
ちょっと前のレスくらい読め
912:デフォルトの名無しさん
22/11/04 19:18:35.30 u3TD418O.net
ん?
ならなにを言いたいのかわからんわ
913:デフォルトの名無しさん
22/11/04 19:20:02.13 iggZ7AM6.net
わからないなら無理に書き込まなくていいよ
914:デフォルトの名無しさん
22/11/04 19:54:59.56 u3TD418O.net
ごめん、説明できないならいいや
915:デフォルトの名無しさん
22/11/05 14:37:23.18 wb4h3pkZ.net
>>857 octave
URLリンク(ideone.com)
f = @(a, b) (a + b) * (b - a + 1) / 2;
916:デフォルトの名無しさん
22/11/05
917:22:37:38.99 ID:ik3uUvNv.net
918:デフォルトの名無しさん
22/11/05 23:35:33.60 WGyFluMA.net
10*11/2
919:デフォルトの名無しさん
22/11/06 03:33:15.03 V4pkDxVq.net
>>857
Kotlin
URLリンク(paiza.io)
ループ文は使わず再帰でなんとかした。
(1..10).sum() や (1..10).reduce { a, n -> a + n } でも結果は出るが sum() や reduce() がライブラリにある拡張関数なので没。
10 * 11 / 2 とか 55 を直接出すのはプログラム作る意味がほとんどないような感じがするので止めた。
920:デフォルトの名無しさん
22/11/06 04:47:10.33 p1AlQ8ne.net
お題が、正方形や三角形の面積を求めるのと
同程度に簡単な式だしなあ
921:デフォルトの名無しさん
22/11/06 08:11:23.79 l6ScHNeb.net
Haskell
sum [1..10]
922:デフォルトの名無しさん
22/11/06 08:35:41.45 5UCgIOa9.net
>>861で終了じゃん
最適化して55でも良いけど
中途半端に和の公式使ってるヤツってアホなの?
923:デフォルトの名無しさん
22/11/06 09:08:00.03 aYMPlSSq.net
一垓にそうは言えないのでは
ループを使わないの意味が多くの数でもすぐ答えがでそうな処理を見たいのかもしれない
924:デフォルトの名無しさん
22/11/06 09:25:21.24 p1AlQ8ne.net
掛け算割り算だと中途半端でアホで
足し算だと利口だとおっしゃる
925:デフォルトの名無しさん
22/11/06 09:33:05.99 5UCgIOa9.net
和の公式を使うくらいなら55の方が良い
って話
なんで中途半端な最適化をするの?
926:デフォルトの名無しさん
22/11/06 09:38:06.42 gK09y9Q8.net
1^n + 2^n +・・・+(10^25)^n
n=10、 n=-17
の手段選ばすとかは?
25条はぎりふつうループでは困難かとおもえる数値を適当にいまおもいついた
927:デフォルトの名無しさん
22/11/06 10:54:00.31 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:デフォルトの名無しさん
22/11/06 12:06:08.03 5iQhHwnm.net
こうどなじょうほうせん を愉しむための問題でしょ
929:デフォルトの名無しさん
22/11/06 15:29:02.07 RIYDMAGE.net
と思って>>863を書いたんだけど
930:デフォルトの名無しさん
22/11/06 15:33:43.73 RIYDMAGE.net
1~10の合計
1から10までの合計
じゃなくて
1~10までの合計
っていうのも気になった
931:デフォルトの名無しさん
22/11/06 17:04:56.12 PNCv3I6p.net
1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか
932:デフォルトの名無しさん
22/11/06 18:24:36.01 S6zCBHE1.net
するだろ
URLリンク(i.imgur.com)
933:デフォルトの名無しさん
22/11/06 18:35:07.31 mzFwuoQr.net
>>890
合計にはdx関係ないぞ...
934:デフォルトの名無しさん
22/11/06 18:37:14.41 PNCv3I6p.net
低レベルすぎて草
1以上10以下の実数全体の集合をAとすると
#A = ?_1 ゆえに Σ_{λ∈A}λ は有限の値を取らない
935:デフォルトの名無しさん
22/11/06 18:38:48.30 PNCv3I6p.net
文字化けしたか
「#A = 連続体濃度」
936:デフォルトの名無しさん
22/11/06 18:48:29.30 qhQ571Br.net
なんか足すと一見無限になりそうだけど
ある区間a<bの間にa<c<bとなるcが取れなくなることはありえないよね?
937:デフォルトの名無しさん
22/11/06 19:07:23.07 9PA1hevU.net
>>889
和が存在しないとうならそれが答え
3を含むが3.5を含まないという説得力のある説明が出来るならよろしく
938:デフォルトの名無しさん
22/11/06 19:12:17.73 PNCv3I6p.net
>>895
和が発散する説明はすでにしてあるんだが何を言いたいの
939:デフォルトの名無しさん
22/11/06 19:14:51.13 9PA1hevU.net
Q:和を求めよ
A:和は存在しない
940:デフォルトの名無しさん
22/11/06 19:15:52.52 9PA1hevU.net
発散とか収束とか
意味をわかって使わないと恥ずかしいぞ
941:デフォルトの名無しさん
22/11/06 19:17:22.08 PNCv3I6p.net
>>895みたいなこと言う奴が解析の基礎すら理解できてるとすら思えないが
942:デフォルトの名無しさん
22/11/06 19:17:36.32 9PA1hevU.net
>>892が最高に恥ずかしい
943:デフォルトの名無しさん
22/11/06 19:19:08.56 9PA1hevU.net
>>899
最高に笑える書き込みありがとう
944:デフォルトの名無しさん
22/11/06 19:19:25.97 PNCv3I6p.net
数学的に具体的な反論が一切ないじゃん
バカなの
945:デフォルトの名無しさん
22/11/06 19:21:59.86 aYMPlSSq.net
ぽまえら
餅付いて >>857 を嫁
946:デフォルトの名無しさん
22/11/06 19:23:24.47 9PA1hevU.net
>>892を見ただけでアホだとわかる
947:デフォルトの名無しさん
22/11/06 19:24:24.94 PNCv3I6p.net
>>904
暴言は結構なんで、数学的に反論してくれませんか?
まあ頭が悪くてできないんでしょうけど
948:デフォルトの名無しさん
22/11/06 19:28:25.36 9PA1hevU.net
>>905
何に反論してほしいの?
多分視野が狭くて何を主張されてるのかわかってないと思うんで
一回落ち着いた方がいいぞ
その上で
君が主張を明確にして
それに対して反対意見があれば反論してあげる
949:デフォルトの名無しさん
22/11/06 19:30:41.70 9PA1hevU.net
1以上10以下の実数の総和が存在しないことなんて
誰でもわかる
和が存在するなんて主張はしてないから勘違いしないように
950:デフォルトの名無しさん
22/11/06 19:31:28.37 PNCv3I6p.net
>>906
>1~10までの実数の合計って言ってる奴は有限の値に収束するとでも思っているか
に対してお前は>>895みたいなクソ発言してるわけだがこのクソ発言の妥当性を説明して見ろよ
951:デフォルトの名無しさん
22/11/06 19:35:38.89 9PA1hevU.net
和が存在しないというならそれが答え
の意味がわからなかったかな?
その次の文は和の存在とは関係ない
君への宿題
952:デフォルトの名無しさん
22/11/06 19:37:43.37 PNCv3I6p.net
>>909
任意のRの開区間に対してその元の和が有限の値になる場合何てないんだから
「和が存在しないというならそれが答え」なんて発言は問題の本質を理解していないバカの発言だろ
人に宿題出す前に算数からやり直せよ
953:デフォルトの名無しさん
22/11/06 19:40:06.40 eRXytuty.net
【悲報】アスペ君、今日も元気。。。
954:デフォルトの名無しさん
22/11/06 19:46:26.35 Zb5xxfES.net
プログラミングのお題なんだから1+2+に決まってるだろ。
少数を含めた1から10までに考えられる数値を足すとかできるわけねえだろ。
955:デフォルトの名無しさん
22/11/06 19:47:59.95 9PA1hevU.net
>>910
問題の本質というなら
解釈の多様性が本質
和の存在は解釈とは無関係
存在しないなら「存在しない」が答えとなるだけの話
956:デフォルトの名無しさん
22/11/06 19:48:45.29 9PA1hevU.net
>>912
floatやdoubleなら有限だね
957:デフォルトの名無しさん
22/11/06 19:49:37.79 PNCv3I6p.net
>>913
お気持ちで数学を語るのやめてくれませんかね
はなはだ不愉快です
「任意のRの開区間に対してその元の和」に対して有限の値を取らないという以外にどんな有意味なモデルが取り得るんですかね
バカすぎて日本語の意味すら理解できてなさそうだけど
958:デフォルトの名無しさん
22/11/06 19:49:56.13 9PA1hevU.net
決まってるといくら主張しても
お題に書いてないんだから
どう解釈されても出題者が悪い
959:デフォルトの名無しさん
22/11/06 19:51:41.99 9PA1hevU.net
>>915
お前が数学の話を語りたがってるだけで
私はただ解釈の多様性の話をしてるだけ
960:デフォルトの名無しさん
22/11/06 19:52:43.83 9PA1hevU.net
>>863に数学っぽい話あったか?
961:デフォルトの名無しさん
22/11/06 19:52:59.97 PNCv3I6p.net
>>917
実数の開区間の和が有限じゃないことにいちゃもん付けてきたのはオタクでしょ?
有限の値を取らない意外にどんな有意義な解釈が成り立つんですか?
きちんと説明しなさい
962:デフォルトの名無しさん
22/11/06 19:53:54.13 9PA1hevU.net
>>919
それ別の人
963:デフォルトの名無しさん
22/11/06 19:55:00.86 9PA1hevU.net
>>890と同一人物だと思って
トンチンカンな書き込みを繰り返してたのたね
恥ずかしい
964:デフォルトの名無しさん
22/11/06 19:55:05.02 PNCv3I6p.net
>>920
>和が存在しないとうならそれが答え
って和が存在する有意義なモデルがあるって言う前提で話してますよね?
もしそうじゃないならこれはどういう意図で行ったんですか?
ちなみに続く3.5云々の意味もよく分かってません
965:デフォルトの名無しさん
22/11/06 19:56:03.75 aYMPlSSq.net
もうこりゃ発散とか収束とか言う前に就職の心配したほうがいいな
966:デフォルトの名無しさん
22/11/06 19:57:33.13 9PA1hevU.net
>>922
落ち着いてから書き込んでね
967:デフォルトの名無しさん
22/11/06 19:59:09.36 PNCv3I6p.net
>>924
敗北宣言ですか
これにこりたら今後二度とお気持ちで数学を語るのはやめてください
研究者やエンジニアが迷惑するので
968:デフォルトの名無しさん
22/11/06 20:01:35.14 9PA1hevU.net
数学を語りたがってるのはお前と>>890だけだって
だから落ち着け
969:デフォルトの名無しさん
22/11/06 20:06:58.14 9PA1hevU.net
おれの主張は>>863だから
もちろん本気で出題者がそう思っているという主張ではなくて
解釈の余地があるという問題提起
970:デフォルトの名無しさん
22/11/06 20:07:53.80 Zb5xxfES.net
問題は出題者の意図を読み取ることが重要
1~10までの整数の和の事だろうなと考えるのが低レベルとは思えない。
常識で考えればそうなる
できればその高レベルのプログラムとやらを説明してほしいものだな。
971:デフォルトの名無しさん
22/11/06 20:12:04.95 9PA1hevU.net
一応プログラム板なんだからさ
解釈の多様性を多少は意識しようよ
プログラミング言語だったら「動作未定義」
曖昧な仕様書で中国人に発注したら
一番都合の良い解釈をされてとんでもないソフトになるぞ
972:デフォルトの名無しさん
22/11/06 20:17:19.25 Zb5xxfES.net
プログラムのお題なんだから、
プログラムで実現できないってのは答えにはならんよ。
国語の問題じゃねえんだから、
プログラムとして成立する答えを出せよ
973:デフォルトの名無しさん
22/11/06 20:24:40.28 9PA1hevU.net
国語の問題じゃねえんだから
出題者の意図を好意的に汲み取る必要はないんだよ
974:デフォルトの名無しさん
22/11/06 20:26:21.60 mzFwuoQr.net
>>930
だからちゃんと仕様出せやってことだろ
>>863は半分ネタだと思うけど、実数だと言うなら実数について「1~10までの合計」を定義しないとお題にならんよ
975:デフォルトの名無しさん
22/11/06 20:32:00.92 9PA1hevU.net
>>932
私は出題者じゃないし実数だなんて主張もしてない
いろんな解釈があるならお題にならん
解釈の余地は可能な限り減らせ
976:デフォルトの名無しさん
22/11/06 20:38:00.65 mzFwuoQr.net
>>933
お前にアンカーしてるわけでもないのに絡んでくるとかあたおかすぎる
977:デフォルトの名無しさん
22/11/06 20:59:57.69 Zb5xxfES.net
1から10までの整数の和では無い可能性があるから、
その場合はプログラムでは実現できないって言いたいだけだろ
整数の和として答えてるプログラムを低レベルってどういことやねん。
素直に受け取ればいいものを曲解して不可能に持って行ってるだけだろ
978:デフォルトの名無しさん
22/11/06 21:02:11.02 9PA1hevU.net
「整数の和として答えてるプログラムを低レベルってどういことやねん。」
だれがそんなことかいた?
979:デフォルトの名無しさん
22/11/06 21:04:22.43 9PA1hevU.net
>>935
>>931
980:デフォルトの名無しさん
22/11/06 21:07:02.93 tOVlE3Vc.net
>>857
python: URLリンク(ideone.com)
やさしいお題、助かります!
981:デフォルトの名無しさん
22/11/07 06:42:16.97 C4s2+P7f.net
仕事では御免だが
解釈の余地を残すことが娯楽では大切だって良く分かる例
982:デフォルトの名無しさん
22/11/07 15:08:59.94 4okW5BTf.net
お題:1/1+1/2+...+1/nの合計を求め、分母と分子を整数で出力せよ。
*ただしライブラリを使わないこと
983:デフォルトの名無しさん
22/11/07 15:35:37.09 Sowq9nFL.net
>>940 Ruby
(1..n).map{ 1r/_1 }.sum
984:デフォルトの名無しさん
22/11/07 15:48:12.
985:36 ID:wln8XcGb.net
986:デフォルトの名無しさん
22/11/07 17:42:49.96 dFD6FGsc.net
gcdとかsumとかprintはライブラリじゃないの?
987:デフォルトの名無しさん
22/11/07 18:21:56.48 UfWjgfnM.net
1+・・・+1/n の小数点n桁目はいくらか
988:デフォルトの名無しさん
22/11/07 18:47:35.11 Fdh4LiCB.net
>>944
こっちの方がおもしろいかも
小数第○位って昔は言ったけど今は言わない?
989:デフォルトの名無しさん
22/11/07 20:48:13.34 OXo72DE3.net
>>940
Java
URLリンク(paiza.io)
990:デフォルトの名無しさん
22/11/07 20:49:01.52 FonngYyy.net
>>943
Pythonではprintは組み込み関数だな
他は知らんけど
991:デフォルトの名無しさん
22/11/07 21:06:30.94 Fdh4LiCB.net
組み込み関数はライブラリじゃないと
ライブラリと呼ばない言語なら何でもありか
992:デフォルトの名無しさん
22/11/07 21:08:54.69 Fdh4LiCB.net
C言語上のただのintの乗算でもライブラリが必要な環境もあるわけだけど
993:デフォルトの名無しさん
22/11/07 21:34:22.19 q2YPtCXX.net
アルゴリズムが見たいのでしょうね
994:デフォルトの名無しさん
22/11/07 21:35:14.79 kmERiYaX.net
まあ今時組込とかでもなきゃintの乗算でライブラリ呼び出す環境もあまりないけどそもそも入出力はライブラリ任せだからねぇ
995:デフォルトの名無しさん
22/11/07 23:30:13.24 3GzmFPX6.net
>>943
Haskell ?
だとsumやgcdはpreludeで標準関数扱い
基本import~が必要ない奴は標準扱い
996:デフォルトの名無しさん
22/11/08 01:53:36.92 s644Ul/+.net
>>940
Kotlin
URLリンク(paiza.io)
分子と分母を別々に保持して足し続けただけ。約分はしていない。
997:デフォルトの名無しさん
22/11/08 21:45:51.73 dCnZkmaL.net
>>940
URLリンク(ideone.com)
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end
998:デフォルトの名無しさん
22/11/08 21:46:18.88 dCnZkmaL.net
>>940 octave
URLリンク(ideone.com)
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end
999:デフォルトの名無しさん
22/11/09 00:46:04.53 oWTDq5DR.net
>>940 octave
URLリンク(ideone.com)
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end
1000:デフォルトの名無しさん
22/11/09 00:46:10.95 oWTDq5DR.net
>>940 octave
URLリンク(ideone.com)
・「ただし」以下は無視した回答
function [n, d] = f(n)
[n, d] = rat(sum(1./(1:n)), 1e-7);
end
1001:デフォルトの名無しさん
22/11/09 01:55:16.87 QvIAsso6.net
なぜ同じ書き込みが4つもある?
1002:デフォルトの名無しさん
22/11/09 02:02:28.03 Ewgu9c/a.net
お題スレの7不思議に加えよう
1003:デフォルトの名無しさん
22/11/09 12:49:26.26 AHjhHUHj.net
お題
入力した文字列を以下の4種類に分けた文字列を作成する関数を作成してください
・アルファベット大文字
・アルファベット小文字
・数字
・それ以外の文字
1004:デフォルトの名無しさん
22/11/09 18:55:40.68 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:デフォルトの名無しさん
22/11/09 20:05:26.68 1g3d+RJJ.net
>>960 octave
URLリンク(ideone.com)
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:デフォルトの名無しさん
22/11/10 01:00:36.16 UXFdZVAF.net
>>960
Haskell
URLリンク(ideone.com)
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:デフォルトの名無しさん
22/11/10 01:50:3
1008:8.82 ID:j8kXq8l6.net
1009:デフォルトの名無しさん
22/11/10 02:29:28.73 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:デフォルトの名無しさん
22/11/10 02:37:16.98 kjI8mJgQ.net
>>965
5倍じゃなくて3倍だったわ
perf.linkで測ったコード、
let cp = c.codePointAt();
が
let cp;
になってたわ寝ぼけてた
1011:デフォルトの名無しさん
22/11/10 07:33:44.51 oQpocXYl.net
>>960
ASCII のみで良い?
それとも Unicode?
1012:デフォルトの名無しさん
22/11/10 07:56:41.06 3FlvzqxM.net
>>960 Ruby
-> s { s.scan(/[A-Z]+|[a-z]+|\d+|[\W_]+/) }
1013:デフォルトの名無しさん
22/11/10 14:11:20.86 oQpocXYl.net
>>960
Kotlin
URLリンク(paiza.io)
Unicodeで作った。サロゲートペアの文字もちゃんと扱える。
判別には Java の Character クラスのメソッドを利用している。
これだといわゆる全角の数字は数字扱いになるが漢数字は数字と分類してくれない。
ローマ数字はアルファベット大文字扱い。
日本語の「あ」とかもアルファベットとして扱われるが大文字でも小文字でもないのでそれ以外の文字に追加されるようにした。
コントロールコードは \uXXXX 形式になるようにした。
1014:デフォルトの名無しさん
22/11/10 18:57:30.40 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
塩化銅()は水中で ⇄ ⁺ + ⁻ のように電離する。