プログラミングのお題スレ Part22 (880レス)
上下前次1-新
581: 9 2025/02/12(水)00:03 ID:yw0CaA/O(1/4) AAS
そういう条件は回答を見て思いついた後から言わず先に書くべきでは?
そうでなければ、与えられた短い文とテストデータから、
処理対象データの範囲や要求仕様を読み手が色々解釈しても仕方ないだろ。
後からいろいろ言って批判なんてでもってのほかだと思うが。
582: 9 2025/02/12(水)00:05 ID:yw0CaA/O(2/4) AAS
出来たもの見て実はこういう条件がありましたってケチつけるのはクソクライアントと一緒だな
583(1): 2025/02/12(水)00:13 ID:SJ0T1N6w(1) AAS
ざっと見たけどmax()を返してるのはC++の人だけで他は皆まともだ
普段からまともなコード書いてるかどうかバレてしまうから自由が面白い
584: [age] 2025/02/12(水)00:18 ID:hk2aQo3G(2/3) AAS
好きにしたら良いんやで吉田松陰もそんなこと言ってた気がする
585: [age] 2025/02/12(水)00:20 ID:hk2aQo3G(3/3) AAS
まともとかバレるとかそういう当て擦りの嫌味ったらしい言い方どこで身につけてきたのあんた、母ちゃんは悲しいよ
586: 2025/02/12(水)00:22 ID:Qtl/TEf6(1/2) AAS
>>583
関数がINT_MAXを返すのはまともなコードだろ。2番目に小さい数はINT_MAXではありえないから、
返り値がINT_MAXの場合は「なし」と表示すれば良いだけ。
587: 9 2025/02/12(水)00:28 ID:yw0CaA/O(3/4) AAS
「データが二個未満の場合にはnilを返す。」とか書いとくべき。
でもそういう細かい条件をちまちま指定した窮屈な課題は、つまんなくて回答を造る意欲が減るんだよな。
シンプルで純な課題に対してどういうエレガントでエッセンシャルな回答があるか考えるのが楽しいのであって、
細かいいろんな条件を守る周辺コードで固めるような作業はつまんないから趣味の世界ではやりたくないな
588: 2025/02/12(水)00:31 ID:1WuTe288(1) AAS
普段はプログラム載せるだけだけど、みんな意外と饒舌なんだなw
589: 9 2025/02/12(水)00:33 ID:yw0CaA/O(4/4) AAS
ここはある意味、回答のコードでもって語るスレだからな
590: 2025/02/12(水)00:35 ID:kQv2EDFI(1) AAS
お題にそんな指定ないのに
みんなnilなどを返してるからこのスレの住人たちはセンスいいな
591: 2025/02/12(水)19:12 ID:FZJ50oR3(1) AAS
>>561 lisp (sbcl)
外部リンク:ideone.com
>>561 lisp (clisp)
外部リンク:ideone.com
clispだと何故かsort版の方が速い
592: 2025/02/12(水)20:45 ID:JML0DDov(1) AAS
>>561 ruby
外部リンク:ideone.com
>>561 sqlite
外部リンク:ideone.com
593(2): 2025/02/12(水)22:44 ID:Qtl/TEf6(2/2) AAS
>>561 571
>>570のC++のf3をint型の最大値を含むデータにも対応させた。
C#にはint?型があるのですっきり書けるが、
外部リンク:ideone.com
C++ではまあまあすっきり書くにはintへのポインタを返すしかないか。
外部リンク:ideone.com
(該当値が複数の位置に存在する場合にそれらのうちのどれへのポインタを返すかについては
こだわらないものとする)
594(7): 2025/02/13(木)12:04 ID:KGk2Z9bM(1) AAS
お題:ランダムな数列から任意の並んでいる二つの数同士を足して、その二つの数の間に挿入せよ。
その新しい数が一桁ならそのまま挿入し二桁なら桁同士を足してその二桁の間に挿入せよ。
< 123456789 3 4
> 1237456789
(3+4=7)
< 123456789 6 7
> 123456143789
(6+7=13 1+3=4)
595: 2025/02/13(木)12:31 ID:QhFtS6hw(1) AAS
問題文の記述が下手かよ
596: 2025/02/13(木)13:27 ID:J5YSE8js(1) AAS
>>594 ruby
a=$stdin.gets.chomp.split(" ")
b=a[1].to_i+a[2].to_i
c=(b<9 ? a[1]+b.to_s+a[2] : a[1]+"#{b/10}#{b/10+b%10}#{b%10}"+a[2])
puts a[0].gsub(a[1]+a[2],c)
597: 9 2025/02/13(木)17:35 ID:UAfabByi(1/3) AAS
>>594 Perl5、見易くするためインデントは全角スペースに置換してあります
for (<DATA>) {
($s, $a, $b) = split;
$c = $a + $b;
$c = $1 . ($1 + $2) . $2 if $c =~ /(\d)(\d)/;
$s =~ s/$a$b/$a$c$b/g;
print "$s\n";
}
__DATA__
123456789 3 4
省9
598: 2025/02/13(木)20:12 ID:3SfOseF2(1/2) AAS
>>594
題意が以下の通りだとして、PowerShell (エラーチェックは省略)
自然数x, i, j (i + 1 = jを満たす) が与えられる。xの上i桁目の数字をx[i]で表す。
x[i]とx[j]の和をyとして、
・yが1桁のとき、yをx[i]とx[j]の間に挿入せよ
・yが2桁のとき、y[1]とy[2]の和をy[1]とy[2]の間に挿入してから、yをx[i]とx[j]の間に挿入せよ
function f($x, $i, $j)
{
$s = [string]$x
$y = [int][string]$s[$i - 1] + [int][string]$s[$j - 1]
省15
599(1): 9 2025/02/13(木)20:24 ID:UAfabByi(2/3) AAS
数学屋さんかいなw
i,jの「3 4」とか「6 7」は桁の位置をしていしているのではなく数値列の中にある数字を指定するんジャマイカ
とオレは解釈したが
600: 2025/02/13(木)20:34 ID:3SfOseF2(2/2) AAS
>>599
そうか。だとすれば、
function f($x, $i, $j)
{
$s = [string]$x
$y = $i + $j
if ($y -ge 10) {$y *= 11}
$s -replace "$i$j", "$i$y$j"
}
(123456789, 3, 4), (123456789, 6, 7), (123456789, 8, 9), ("3141592653589793238462643383279502884197169399375105820974944", 9, 7) |% {
省12
601: 2025/02/13(木)20:45 ID:KiG3F5Wd(1) AAS
>>561 c
外部リンク:ideone.com
>>594 ruby
外部リンク:ideone.com
602: 9 2025/02/13(木)20:52 ID:UAfabByi(3/3) AAS
なんでこの人はコーデイングするのがこんなに早いんだろう…
603: 2025/02/13(木)22:58 ID:bC7pFAVH(1/2) AAS
>>594 Rust
fn f(input: &str, a: u32, b:u32) -> String {
let src = format!("{a}{b}");
let dst = if a + b < 10 {
format!("{a}{x}{b}", x = a + b)
} else {
format!("{a}{x}{y}{z}{b}", x = 1, y = 1 + a + b - 10, z = a + b - 10)
};
use itertools::Itertools;
input.split(&src).join(&dst)
省7
604: 2025/02/13(木)23:47 ID:bC7pFAVH(2/2) AAS
>>561 Rust
fn second_smallest<T: Copy + Ord>(input: &[T]) -> Option<T> {
use std::cmp::Ordering::{Equal, Greater, Less};
input
.iter()
.copied()
.fold(None, |state, t| match state {
Some((_t0, Some(t1))) if t >= t1 => state,
Some((t0, _)) => match Ord::cmp(&t, &t0) {
Less => Some((t, Some(t0))),
省12
605: 2025/02/14(金)17:55 ID:L6dJMbYJ(1) AAS
わけがわからん
アセンブラじゃあるまいし
606(1): 2025/02/14(金)18:42 ID:RXjqXFcF(1) AAS
わからないのはどのへんなんだろう?
・型がジェネリックになっている点
・代入文がないなど関数型プログラミングになっている点
・パターンマッチングが使われている点
いずれも最近は対応している言語が増えてるような
607: 2025/02/14(金)23:21 ID:bNo2F1oE(1) AAS
可読性の良さから高階関数を使ったメソッドチェーンが一般的になってきたね
マイクロソフトがC#などでLINQ広めたのがきっかけで各言語もその有用性から導入するようになった
608(10): 2025/02/14(金)23:42 ID:PVqLPxMJ(1) AAS
お題:ランダムな英文字列が与えられる。隣り合う英文字が同じ大文字だった場合、その間にその大文字の小文字を挿入せよ
In < abcDDefGG
Out > abcDdDefGgG
609: 2025/02/15(土)00:16 ID:aVKCg5xf(1) AAS
>>608 ruby
while 1
s=DATA.gets.chomp
exit if s==""
t=s.gsub(%r|([A-Z])\1|){$1+$1.downcase+$1}
puts "IN < #{s}\nOUT > #{t}"
end
__END__
abcDDefGG
610: 2025/02/15(土)00:16 ID:f9ERvXXy(1) AAS
>>594 dart
外部リンク:ideone.com
>>608 ruby
外部リンク:ideone.com
611(1): 2025/02/15(土)00:28 ID:/PgyVRU9(1) AAS
>>606
正規表現みたい非人間的な書式はやめようぜっての
612(1): 2025/02/15(土)00:39 ID:rssRTGdz(1/9) AAS
AA省
613: 2025/02/15(土)01:01 ID:qzrI3kKZ(1) AAS
>>608 Rust
fn f(input: &str) -> String {
let mut output = String::new();
let mut pre_uppercase = None;
for char in input.chars() {
if Some(char) == pre_uppercase {
output.push(char.to_ascii_lowercase());
}
output.push(char);
pre_uppercase = char.is_ascii_uppercase().then_some(char);
省7
614(1): 2025/02/15(土)09:21 ID:XILc/8JX(1) AAS
>>608 ruby
外部リンク:ideone.com
>>608 dart
外部リンク:ideone.com
615(1): 614 2025/02/15(土)10:02 ID:UI50KRFJ(1) AAS
>>608 dart
外部リンク:ideone.com
616(2): 9 2025/02/15(土)10:36 ID:1WENuqRv(1/2) AAS
>>608 Perl5、肯定先読みと置換の小文字変換
s/([A-Z])(?=\1)/\1\l\1/g, print for <DATA>;
__DATA__
abcDDefGG
abcDDDefGGG
実行結果
C:\Home>perl 22_608_ins_l.pl
abcDdDefGgG
abcDdDdDefGgGgG
617: 9 2025/02/15(土)10:39 ID:1WENuqRv(2/2) AAS
AA省
618: 2025/02/15(土)10:40 ID:+yYMeR0h(1) AAS
>>594 >>608 lisp
外部リンク:ideone.com
619: 615 2025/02/15(土)13:20 ID:eC3jFbuY(1) AAS
>>608 java
外部リンク:ideone.com
>>616
_人人人人人人人人人人人人_
> 置換の小文字変換!? <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
勉強になりました
620: 2025/02/15(土)21:05 ID:rssRTGdz(2/9) AAS
>>612は文字列長が1文字の場合にバクがあった。PowerShellの0..-1は空(から)ではなく0, -1になるのが
原因 (Rの0:-1も同様)。修正するには、fの最初に if ($s.length -lt 2) {return $s} を挿入する。
621(3): 2025/02/15(土)21:06 ID:rssRTGdz(3/9) AAS
>>561
C++
外部リンク:ideone.com
C#のヌル許容型と同じ挙動のnullable型を自作し、>>593のC#のmin2関数をジェネリック化、
ポインタ参照化して移植した。
外部リンク:ideone.com
593のC++のmin2関数と実行速度を比較する¹と30%ほど遅い。文字列型や可変長数値型と
違って最大値が存在する固定長数値型では、それを利用するf593の方が良い。
──
¹ Microsoft C++では100回繰り返しテストが最適化され1回しか実行されない
622(1): 2025/02/15(土)21:52 ID:qa0m30Tb(1/4) AAS
>>621
最大値をundefined代わりに使ってはいけないと指摘があったのにまだ使っているのかいな
そのコードで入力数列がこうだった場合
vector<int> a = {IntMax - 1, IntMax};
2番目に小さい数として正解のintMaxを返さなければならない
623(1): 2025/02/15(土)22:00 ID:rssRTGdz(4/9) AAS
>>622
>>593のC++プログラムの実行結果を参照。入力数列にINT_MAXが含まれる場合でも問題ない。
624(1): 2025/02/15(土)22:09 ID:qa0m30Tb(2/4) AAS
>>623
それはm1とm2を間接にポインタで持つために遅くなっているf593()
m1とm2を直接に整数で持つため速いf3()はIntMaxに対応できていない
625(2): 2025/02/15(土)22:24 ID:rssRTGdz(5/9) AAS
>>624
>>621の速度比較テストに>>570のf3も追加
外部リンク:ideone.com
ポインタで持つf593との比で、整数で持つf570は6%速いだけ。一方、null許容型のf621は29%も遅い。
最大値が存在する型ではそれを利用する方が良いという結論に変わりはない。
626(1): 2025/02/15(土)22:29 ID:rssRTGdz(6/9) AAS
まあ、同じ値の要素が大量に存在する入力データではf570は遅くなるが、平均的な速度はf570の方が速い。
627: 2025/02/15(土)22:31 ID:rssRTGdz(7/9) AAS
>>626はf570じゃなくてf593だった。
628(1): 2025/02/15(土)22:42 ID:v2QOLp/q(1) AAS
f593でローカル変数へのポインタを返し得るのは如何かと
629: 2025/02/15(土)23:34 ID:rssRTGdz(8/9) AAS
>>628
返しえないでしょ。
630(1): 2025/02/15(土)23:46 ID:qa0m30Tb(3/4) AAS
>>625
まずnullableのコードがおかしい
例えばoverload(op)のこれ
if (y.isNull) return false; \
return x op y.value; \
Nullだとfals eとなり
opの計算結果次第でもfal seとなり
両者を区別できない
631: 2025/02/15(土)23:47 ID:qa0m30Tb(4/4) AAS
>>625
あとvector扱うコードは倫理的に際どいかな
長さ0でないことを調べずに
いきなりint *m1 = &a[0], m2 = &y;
今回は長さ0の時に*m1をアクセスしないから論理的にギリセーフだけど際どい
そのへんのトリッキーさも含めて
(もしあれば)最小値も返す場合
(もしあれば)3番目の最小値も返す場合など
このIntMax方式は破綻すると思う
632: 2025/02/15(土)23:52 ID:rssRTGdz(9/9) AAS
>>630
>>621に書いた通り、C#のヌル許容型T? (Nullable<T>のエイリアス) の挙動に従っただけだから。
文句があるならMicrosoftに言ってくれ。
633: 9 2025/02/16(日)06:28 ID:GnMUCCm7(1/2) AAS
qa0m30Tb の回答はどれよ?
634: 2025/02/16(日)08:09 ID:v+IcfGmt(1/2) AAS
いるよねえ他人の回答に文句だけつけて自分では回答しないやつ
635: 2025/02/16(日)08:16 ID:v+IcfGmt(2/2) AAS
他人の回答が間違いとなるようにお題を解釈するのは知的なことではないよバカの所業だよ
636: 2025/02/16(日)08:20 ID:eNZyrnPC(1) AAS
そんなことより>>616のワンライナーがカッコよくてほれぼれする
637: 2025/02/16(日)10:58 ID:EXJYkLn8(1) AAS
帰ったと思ったらまたやってんのw
638: 2025/02/16(日)15:14 ID:8bpH8MuA(1) AAS
コンパイラ警告無視するのが知的な事だと思ってそうだな
639: 9 2025/02/16(日)15:45 ID:GnMUCCm7(2/2) AAS
回答のコードでもって語ってほしいなぁ
640(10): 2025/02/17(月)13:08 ID:lz3iaMcC(1) AAS
お題:ランダムな数列が与えられる。隣り合う数字が偶数同士の時、あいだに0を。奇数同士の時は1を挿入し、それ以外は何も挿入しない
In < 123346
Out > 12313406
641: 2025/02/17(月)13:47 ID:1CKZ5rpi(1) AAS
>>640 ruby
DATA.readlines(chomp:1).map{|e|
a=e.split("").map{|f| f.to_i}
(0..a.size-2).each{|n|
a[n]=a[n]*10 if (a[n]%2==0 && a[n+1]%2==0)
a[n+1]=a[n+1]+10 if (a[n]%2==1 && a[n+1]%2==1)}
puts "IN < #{e}\nOUT > #{a.map{|f| f.to_s}.join}"}
__END__
123346
642: 2025/02/17(月)20:02 ID:SzDlV4TD(1) AAS
>>640 lisp
外部リンク:ideone.com
643(1): 2025/02/17(月)20:47 ID:2enU2rA/(1/2) AAS
AA省
644(1): 2025/02/17(月)20:48 ID:2enU2rA/(2/2) AAS
正規表現置換なら、
function f($s)
{
$s -replace "[02468](?=[02468])", "$&0" -replace "[13579](?=[13579])", "$&1"
}
1回で済ますなら、
function f($s)
{
[RegEx]::Replace($s, "[02468](?=[02468])|[13579](?=[13579])", {$_ = $args[0].value[0]; "$_$($_ % 2)"})
}
645(1): 2025/02/17(月)20:58 ID:UxhkW11K(1) AAS
>>640 Rust
fn f(input: &[u8]) -> Vec<u8> {
input.windows(2).fold(Vec::new(), |mut vec, w| {
if vec.is_empty() {
vec.push(w[0]);
}
if (w[0] ^ w[1]) & 1 == 0 {
vec.push(w[0] & 1 + b'0');
}
vec.push(w[1]);
省7
646: 2025/02/18(火)10:32 ID:Spp0fdd/(1) AAS
>>645
そうやればいいのか、なるほどね
647(1): 2025/02/18(火)17:51 ID:ZRfTlf8i(1) AAS
AA省
648: 2025/02/19(水)21:30 ID:LKzHskwz(1) AAS
>>640
>>643-644の3つのfを上から順にf1, f2, f3とし、長い文字列を引数として呼び出したときの
実行時間を比較すると、
$s = -join (1..10000)
$t = 1..3 |% {(iex "measure-command {f$_ $s}").ticks}
$tmin = ($t | measure -min).minimum
1..3 |% {"f$_`: {0:0.00}倍" -f ($t[$_ - 1] / $tmin)}
[実行結果の一例]
f1: 34.78倍
f2: 1.00倍
省6
649: 2025/02/19(水)21:58 ID:Hs/awmG/(1) AAS
AA省
650: 2025/02/20(木)23:25 ID:Zfo8kSSQ(1) AAS
mutableの使用は必要最小限が望ましいが
mutableを使えない言語は実用的ではない
651(1): 警備員[Lv.21] 2025/02/22(土)15:11 ID:nEyoRU5r(1/3) AAS
>>640
Perl5
外部リンク:paiza.io
652: 警備員[Lv.21] 2025/02/22(土)15:42 ID:nEyoRU5r(2/3) AAS
>>640
Kotlin
外部リンク:paiza.io
653: 警備員[Lv.21] 2025/02/22(土)15:53 ID:nEyoRU5r(3/3) AAS
>>640
C
外部リンク:paiza.io
654: 2025/02/22(土)23:33 ID:k7PDvk0j(1) AAS
>>640
Haskell
外部リンク:ideone.com
655: 警備員[Lv.21] 2025/02/24(月)18:11 ID:Ikw9MrIX(1) AAS
>>608
>>651とかとアルゴリズムはほぼ同じ。これといった捻りはない。
よく分からないが5chに書き込みがブロックされたのでURLのコロンまでは削った。
Perl
//paiza.io/projects/zAqms-VVEWIMhcgr8AV6Pw
Kotlin
//paiza.io/projects/iu8mTSyKsxqWx_T51Wpj4Q
C
//paiza.io/projects/bDkj3tRF_KmiBL67miRxyA
656(5): 2025/02/26(水)21:33 ID:rkiIsmEI(1) AAS
お題: Python の int.bit_count()
65535 → 16
15 → 4
6 → 2
1 → 1
0 → 0
-1 → 1
-6 → 2
-15 → 4
-65535 → 16
657: 2025/02/26(水)23:29 ID:Gl9HHMVG(1) AAS
>>656
C++20
外部リンク:paiza.io
658: 2025/02/27(木)00:23 ID:TOGelnHV(1) AAS
>>656
Rust
fn bit_count(x: i64) -> usize {
const MAGIC_1: u64 = 0x5555555555555555; // 0101..0101
const MAGIC_2: u64 = 0x3333333333333333; // 0011..0011
const MAGIC_3: u64 = 0x0f0f0f0f0f0f0f0f;
const MAGIC_4: u64 = 0x00ff00ff00ff00ff;
const MAGIC_5: u64 = 0x0000ffff0000ffff;
const MAGIC_6: u64 = 0x00000000ffffffff;
let x = x.unsigned_abs();
省19
659: 2025/02/27(木)08:26 ID:LSRTW28H(1) AAS
>>656 Rust
trait BitCount {
fn bit_count(&self) -> usize;
}
impl BitCount for i32 {
fn bit_count(&self) -> usize {
self.unsigned_abs().count_ones() as usize
}
}
use num::{BigInt, One};
省12
660: 2025/02/28(金)01:30 ID:1HSOHgVq(1) AAS
intは処理単位のことなんだけどな
何ビットで表現できるかという意味ではない
661: 9 2025/02/28(金)03:12 ID:MEvV9q87(1) AAS
負の場合に表現可能なビット数を配慮しないとPython の int.bit_count()と同じ結果にならないんジャマイカじゃまいか
たぶんPythonの整数がbigintのせいだとおもう
絶対値とってpopcountとかやらないと意外とあれこれ書いてプチ長めのコードになりそうなおかん
662: 2025/02/28(金)23:07 ID:SRu+xdWw(1) AAS
よく見たらみんな絶対値をとったりbigintを使ったりしてるな
663(1): 2025/03/01(土)20:18 ID:H8RpZRUP(1/2) AAS
>>656
PowerShellのBigIntなら、
$b = @(0)
1..8 |% {$b += $b |% {$_ + 1}}
function bit_count([BigInt]$n)
{
($b[[BigInt]::Abs($n).ToByteArray()] | measure -sum).Sum
}
65535, 15, 6, 1, 0, -1, -6, -15, -65535, [BigInt]::Pow(123, 45) |% {
"$_ → $(bit_count $_)"
省12
664: 2025/03/01(土)20:19 ID:H8RpZRUP(2/2) AAS
お題:1からnまでの自然数のビット単位での総排他的論理和1 ⊕ 2 ⊕ 3 ⊕ … ⊕ nを求める
関数を作り、n = 123456789, 12345678901234567890のときの値を表示せよ。
665: 2025/03/01(土)21:19 ID:5VrbV50/(1) AAS
A003815かな
666: 2025/03/01(土)21:32 ID:UfbLQAky(1) AAS
数学の試験で中間式を省いて解答だけ書くタイプw
667: 2025/03/01(土)23:41 ID:+HRoh0yF(1) AAS
まあ数列の問題ならOEISを見てみるよな
668: 2025/03/02(日)01:21 ID:xdmIFouH(1) AAS
>> 664 Rust
fn f(n: u64) -> u64 {
// f(n) = 1⊕2⊕3⊕...⊕n とすると (2k)⊕(2k+1)=1 であるから 1⊕1=0 より
// f(4k+1) = (4k+1)⊕(4k)⊕(4k-1)⊕(4k-2)⊕f(4k-3) = f(4(k-1)+1) = ... = f(1) = 1
// f(4k+3) = (4k+3)⊕(4k+2)⊕f(4k+1) = 0
// f(4k) = (4k)⊕f(4k-1) = 4k
// f(4k+2) = (4k+2)⊕f(4k+1) = (4k+2)⊕1 = 4k+3
match n % 4 {
0 => n,
1 => 1,
省13
669: 2025/03/11(火)21:18 ID:Qmk3F8/1(1) AAS
>>656
PowerShellでもPopCountがいつの間にか使えるようになっていた。Version 7.5.0で動作確認。
function bit_count($n)
{
[BigInt]::PopCount([BigInt]::Abs($n))
}
65535, 15, 6, 1, 0, -1, -6, -15, -65535, [BigInt]::Pow(123, 45) |% {
"$_ → $(bit_count $_)"
}
実行結果は>>663と同じ。
670(6): 2025/03/13(木)20:35 ID:QP/8WHEA(1) AAS
お題:数列が入力される。元の数列に逆順にした数列を減算したときの値を出力せよ
In < 12345
OUt > -41976 (12345 - 54321)
671(2): 2025/03/13(木)21:13 ID:SRpNsp20(1) AAS
>>670
PowerShell
function f([BigInt]$n)
{
$c = [char[]][string]$n
$n - [BigInt]-join $c[-1..-$c.length]
}
12345, [BigInt]::Pow(12, 34) |% {"$_ → $(f $_)"}
[実行結果]
12345 → -41976
省1
672(1): 2025/03/14(金)02:10 ID:wjeVVi0w(1/2) AAS
>>671
12の34乗は合っているけどその後の差がおかしくない?
4922235242952026704037113243122008064 から
4608002213423117304076202592425322294 を引いて
314233029528909399960910650696685770 が正解のところ
314233029528909439273950854852378624 となっているよ
正解は1の位が「4 - 4 = 0」になるはずだよね
>>670 Rust 逆文字列を生成する版
use num::BigInt;
fn odai(input: &str) -> Option<String> {
省9
673(1): 2025/03/14(金)02:30 ID:wjeVVi0w(2/2) AAS
>>670 Rust 逆文字列を生成しない&整数ジェネリック版
use num::{BigInt, CheckedAdd, CheckedMul, CheckedSub, FromPrimitive};
fn chars_to_integer<X>(input: impl Iterator<Item = char>) -> Option<X>
where X: FromPrimitive + CheckedMul + CheckedAdd,
{
let (zero, ten) = (X::from_u32(0).unwrap(), X::from_u32(10).unwrap());
input
.map(|c| X::from_u32(c.to_digit(10)?))
.try_fold(zero, |acc, x| acc.checked_mul(&ten)?.checked_add(&x?))
}
省11
674: 2025/03/14(金)20:19 ID:Imul3vYR(1) AAS
>>672
確かに間違っていた。PowerShellの旧ヴァージョンでは [BigInt]文字列 と書くだけで
文字列をBigInt型に正確に変換できるから>>671のプログラムでも正しい結果が得られるが、
新ヴァージョンではdouble経由での変換に仕様変更されたようで誤差が生じてしまうから
[BigInt]::Parse(文字列) と書かなければならなくなった。
675: 2025/03/14(金)21:36 ID:pC/XkvI4(1) AAS
数列の長さは指定されていない。
10 INPUT "0-9";I
20 PRINT "0"
30 END
676(1): 2025/03/15(土)19:04 ID:GCbQqql0(1) AAS
>>673
これらのwhere~は何という名称ですか?
> where X: FromPrimitive + CheckedMul + CheckedAdd,
> where X: FromPrimitive + CheckedMul + CheckedAdd + CheckedSub,
677: 9 2025/03/16(日)00:12 ID:8GU62dKf(1) AAS
>>670 Perl5
use bigint;
print $_ - reverse($_), "\n" for 12345, 4922235242952026704037113243122008064;
実行結果
$ perl 22_670_reverse_minus_biginit.pl
-41976
314233029528909399960910650696685770
678: 警備員[Lv.23] 2025/03/16(日)17:25 ID:wlGuyFJ7(1) AAS
>>670
Kotlin
文字列にしてひっくり返しているだけの何の捻りもないプログラム
外部リンク:paiza.io
679: 2025/03/16(日)22:59 ID:wtk+s/+W(1) AAS
>>670
PowerShellでジェネリック化(もどき?)
途中式や結果が入力値の型で表せない場合は$nullを返す。
function f($n)
{
$T = $n.GetType()
$s = [string]$n
try {
$n - $T::Parse(-join $s[-1..-$s.Length]) -as $T
} catch {
省13
680(5): 2025/03/16(日)23:01 ID:6JX6mCC/(1) AAS
お題:36桁以下の負でない整数で16進表記が10進表記の部分文字列であるものをすべて求めて下さい。
(例)
・1の16進表記1は10進表記1の部分文字列です
・123の16進表記7Bは10進表記123の部分文字列ではありません
・357440の16進表記57440は10進表記357440の部分文字列です
※遅い言語では15桁以下で解いても構いません
上下前次1-新書関写板覧索設栞歴
あと 200 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s