プログラミングのお題スレ Part22 (830レス)
上下前次1-新
1(4): 2023/08/03(木)13:52 ID:/xW45k0z(1) AAS
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
外部リンク:ideone.com
省11
801: 08/16(土)19:14 ID:kN4EEg8M(1/3) AAS
>>799 の問題A
1からnまでの自然数を並べてできるi番目の順列を求める関数を前に作って持っていたので、
それを流用したらすぐできた(元の関数はBigIntとiの範囲外エラーにも対応)。
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
802(3): 08/16(土)20:29 ID:kN4EEg8M(2/3) AAS
>>799 の問題B
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
803(1): 08/16(土)21:32 ID:kN4EEg8M(3/3) AAS
>>799
>>802 のC++のithDuplicatedPermutation関数は引数が別の値(例えばn = 5, m = 3)のとき
正しく計算できなかったので修正。Rの方はintではなくdoubleで計算しているので問題ない。
外部リンク:ideone.com
804(1): 08/16(土)21:46 ID:VU+jlz0U(2/2) AAS
32bitだと階乗は12!が限界
805(1): 08/17(日)12:07 ID:R1ye1QDy(1/2) AAS
>>799 ruby
外部リンク:ideone.com
>>799 c
外部リンク:ideone.com
806(2): 805 08/17(日)15:08 ID:R1ye1QDy(2/2) AAS
>>799 ruby 若干の改善
外部リンク:ideone.com
>>799 c 若干の改善
外部リンク:ideone.com
807: 08/17(日)15:21 ID:OrBxx4uG(1) AAS
ソートが消えて>>800と同じアルゴリズムになったね
808(1): 08/17(日)20:40 ID:bUKuWE64(1) AAS
>>804
確かにそうだった。15!も14!もintの範囲内に収まらない。>>803でn = 5に変えた場合に正しい
出力になるのはたまたまだった。
>>802をBigInt化するだけで問題なかった。
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
809: 08/19(火)21:08 ID:zFi0pntB(1) AAS
AA省
810: 08/19(火)21:28 ID:ahVErwF8(1) AAS
>>771 scheme (chicken 4.13)
外部リンク:ideone.com
811(1): 806 08/21(木)22:19 ID:fAlkh9Aq(1) AAS
>>799 ruby
外部リンク:ideone.com
・問題A時に若干端折る
812(4): 08/21(木)23:15 ID:0KQ1xtxb(1) AAS
>>799 の逆変換プログラム
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
問題A, 問題Bとは違って、順列に出現するユニークな整数は1〜nの連番でなくても良いし、
出現回数はすべて同じでなくても良い。例えば、入力は [3, 1, 4, 1, 5, 9] でも良い
(ユニークな整数は1, 3, 4, 5, 9で、出現回数は1が2回、その他が1回)。
813: 08/22(金)01:14 ID:6LYRfbyj(1) AAS
>>799
Java
外部リンク:paiza.io
814(1): 08/22(金)06:55 ID:qlaiAqZd(1/2) AAS
>>812
Rust >>799の逆変換の重複順列の何番目か算出
use itertools::Itertools;
use num::{BigUint, One};
// 重複順列の何番目かを求める ex. "222331434114" → "123456"番目
fn to_nth(input: &str) -> String {
// 出現数
let (mut counts, chars): (Vec<usize Vec<char>) = input.chars().sorted().dedup_with_count().multiunzip();
// index化input
let input: Vec<usize> = input.chars().map(|c| chars.iter().position(|&c0| c0 == c).unwrap()).collect();
省16
815: 08/22(金)06:56 ID:qlaiAqZd(2/2) AAS
>>814の検証分
fn main() {
assert_eq!(to_nth("123456789"), "1");
assert_eq!(to_nth("123456798"), "2");
assert_eq!(to_nth("123456879"), "3");
assert_eq!(to_nth("416589732"), "123456");
assert_eq!(to_nth("684753219"), "234567");
assert_eq!(to_nth("987654321"), "362880");
assert_eq!(to_nth("111222333444"), "1");
assert_eq!(to_nth("111222334344"), "2");
省13
816(1): 811 08/22(金)20:26 ID:m9vhyo0Z(1) AAS
>>799 ruby
外部リンク:ideone.com
・問題A時に全体的な規則性に着目
・部分的に着目しちゃったのが>>811
・何も工夫を入れなかったのが>>806
817(1): 816 08/23(土)20:27 ID:uyhDG+iz(1/2) AAS
>>799 ruby 問題Bもケア
外部リンク:ideone.com
818: 08/23(土)21:01 ID:gxRFdG35(1) AAS
>>799
java
外部リンク:ideone.com
819(1): 817 08/23(土)23:26 ID:uyhDG+iz(2/2) AAS
>>799 java
外部リンク:ideone.com
820(1): 08/24(日)21:13 ID:ubCw2JoQ(1) AAS
>>812の逆変換プログラムは>>808の順変換プログラムを流用したから処理に無駄があった。
逆変換用に一から書き直したらすっきりした。
R
外部リンク:ideone.com
C++
外部リンク:ideone.com
821(1): 819 08/25(月)00:28 ID:IbSJkZLt(1) AAS
>>799 java Iterable<int[]>
外部リンク:ideone.com
822: 08/27(水)00:40 ID:AbNZa8yo(1/2) AAS
>>799 ocaml
外部リンク:ideone.com
>>799 scheme (chicken 4.13)
外部リンク:ideone.com
823: 08/27(水)21:02 ID:AbNZa8yo(2/2) AAS
>>799 octave
外部リンク:ideone.com
824: 08/27(水)21:46 ID:B7vE54ji(1) AAS
>>820の逆変換プログラムのC#版
外部リンク:ideone.com
LINQのTakeWhileメソッドとSumメソッドを組み合わせたらすっきり書けた。
825: 821 08/28(木)21:01 ID:mnaa+hsk(1) AAS
>>799 java
外部リンク:ideone.com
・next()ごとに複製しない版。する版は >>821
・hasNext()側で次を準備。next()側なのは >>821
826: 08/29(金)13:52 ID:xrZF+zBK(1) AAS
>>799
外部リンク:ideone.com
C++
827: 08/29(金)20:09 ID:VEuLqGzD(1) AAS
>>812 ruby 2.5.5
外部リンク:ideone.com
・tallyあるのは2.7以降
>>812 octave
外部リンク:ideone.com
828: 08/29(金)22:34 ID:uVFRnDIW(1/2) AAS
AA省
829: 08/29(金)22:35 ID:uVFRnDIW(2/2) AAS
-- 実行結果 --
【問題A】
1 → 123456789
2 → 123456798
3 → 123456879
123456 → 416589732
234567 → 684753219
362880 → 987654321
【問題B】
1 → 111222333444
省5
830: 08/30(土)17:37 ID:zI+bKiSo(1) AAS
>>812 ocaml
外部リンク:ideone.com
>>812 scheme (chicken 4.13)
外部リンク:ideone.com
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.642s*