[過去ログ] プログラミングのお題スレ Part15 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
48(8): 2019/08/02(金)20:14 ID:fXsI78QL(1) AAS
お題: 数字が与えられるので、その数字を元の数より大きくなるように再構築せよ
大きくできなければ元の数字をそのまま出力せよ
例:
in < 123
out > 231, 213, 321, 312
in < 921
out > 921
53: 2019/08/03(土)01:06 ID:0ts56itm(1/2) AAS
>>48
外部リンク:ideone.com
C++。ご期待通り(?)にパーミテーション回してみたよ。
重いお。
57(1): 2019/08/03(土)11:39 ID:xpWLAw2C(1/4) AAS
AA省
60(1): 2019/08/03(土)12:09 ID:xpWLAw2C(4/4) AAS
>>48 Perl5、iteratorじゃなくpermutationを列挙する方法で書いてみた。これなら題意に合うはず。
sub permu {
my ($l, $p, @r) = @_;
defined $p ? map {[$p, @$_]} permu([], @$l, @r) : ([])
,
@r ? permu([@$l, $p], @r) : ()
}
#$v = '123';
#$v = '321';
$v = '5672391';
省6
61: 2019/08/03(土)16:01 ID:XF8eWPn5(1) AAS
>>48 Squeak/Pharo Smalltalk
| fn res |
fn := [:input |
(Array streamContents: [:ss |
input permutationsDo: [:perm | perm > input ifTrue: [ss nextPut: perm copy]]]
) ifEmpty: [input]
].
fn value: '123'. "=> #('132' '213' '231' '321' '312') "
fn value: '921'. "=> '921' "
{#ms -> [res := fn value: '5672391'] timeToRun. #size -> res size}. "=> {#ms->6 . #size->2438} "
62(1): 2019/08/03(土)19:53 ID:0ts56itm(2/2) AAS
>>48だけど、>>56の要件を見落としていたので入れてみたよ。
外部リンク:ideone.com
C++。
65: 2019/08/04(日)08:30 ID:FnmDNXLj(1) AAS
>>48
@Mathematica
rebuildLargerN[n_]:=n//
IntegerDigits//
Permutations//
Map[FromDigits,#]&//
Select[#,#>n&]&//
If[#!={},#,{n}]&;
In[1] := rebuildLargerN[123]
Out[1] = {132, 213, 231, 312, 321}
省2
69: 2019/08/05(月)21:32 ID:OFOHGnJp(1) AAS
>>48
外部リンク:ideone.com
C++。暇だったので、文字列版作った。
でかい数のデバッグが大変だから手抜きだ。
ご査収ください。。。
70(1): 2019/08/05(月)22:51 ID:AzW+f4x5(1) AAS
>>48 C++
外部リンク:ideone.com
>>64で説明したかった内容をコードにしてみた
なお、pythonとc++のpermutationは、同じ値が含まれる時の動作が異なる
外部リンク:stackoverflow.com
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.060s