プログラミングのお題 ..
[2ch|▼Menu]
799:デフォルトの名無しさん
15/09/10 00:08:40.35 kopU2pqH.net
GCJはプログラミングコンテスト本が出てるのでProject Eulerで
URLリンク(projecteuler.net)
でも"project euler solutions 99"なんかでぐぐったら駄目ですよ
まあ似たようなコードになると思うけど
2^11と3^7のような指数形式で書かれた2つの数を比較するのは難しくありません
しかし、632382^518062>519432^525806であるのを確認するのは300万桁を超える
数字を含んでいるのではるかに困難でしょう
base_exp.txt(問題文をクリックしてください)は1000行を含む22KBのテキストで、
それぞれの行に基数と指数が対になっています
どの行の数が最大になるか決定してください
注:ファイル注の最初の二行は上記の例に示されたものです

800:デフォルトの名無しさん
15/09/10 00:10:08.60 kopU2pqH.net
あ、忘れました
お題です

801:デフォルトの名無しさん
15/09/10 00:33:27.38 AxUmdUI6.net
n T U [cost]
1 1 1 (0[msec])
2 0 0 (0[msec])
3 0 0 (0[msec])
4 2 1 (0[msec])
5 10 2 (0[msec])
6 4 1 (0[msec])
7 40 6 (0[msec])
8 92 12 (0[msec])
9 352 46 (0[msec])
10 724 92 (16[msec])
11 2680 341 (0[msec])
12 14200 1787 (94[msec])
13 73712 9233 (499[msec])
14 365596 45752 (3011[msec])
15 2279184 285053 (19843[msec])
16 14772512 1846955 (140806[msec])
ネット回線からの割り込みが多かったので
コストは参考値

802:デフォルトの名無しさん
15/09/10 04:21:19.51 hMjmDO5x.net
>>763
>>766
>>1

803:デフォルトの名無しさん
15/09/10 05:17:03.70 2byHSaL/.net
>>750 Python3
関数の仕様を勘違いしていたのでやりなおし
>>755の指摘を参考に要素に重複があるとき計算を省略する
def next_permutations(iterable):
  orig = tuple(iterable)
  def recursive(seq, acc):
    if not seq:
      yield acc
    elif orig[:len(acc)] <= acc:
      for v in sorted(set(seq)):
        newseq = seq[:]
        newseq.remove(v)
        yield from recursive(newseq, acc+(v,))
  return recursive(list(iterable), ())
for a in next_permutations("aaabcaaabcaaabc"):
  print(''.join(a))

804:デフォルトの名無しさん
15/09/10 11:55:20.61 0vTqxZ6A.net
>>768
すばらしい。GNU Smalltalk に移植してみました。(文字列のみ対応の手抜きで恐縮ですが…)
URLリンク(ideone.com)

805:デフォルトの名無しさん
15/09/10 21:31:45.79 AToafzam.net
>>729 c
URLリンク(ideone.com)


806:Fcc



807:デフォルトの名無しさん
15/09/10 22:15:18.95 Q2vaRfqD.net
>>764
モロにカンニングですみませんが
URLリンク(ideone.com)

808:デフォルトの名無しさん
15/09/11 01:59:58.81 0Pjc40Dt.net
>>652 遅ればせながらPerl
use 5.016;
use List::Util 'sum';
say sum grep {$_ % 5 == 0 or $_ % 3 == 0} 1..1000;

809:デフォルトの名無しさん
15/09/11 21:51:13.27 v7E2xSv/.net
手抜きPerl
use 5.016;
sub next_permutations {
 my %h;
 sub fn {
  my ($l, $p, @r) = @_;
  defined $p ? map {[$p, @$_]} fn([], @$l, @r) : ([])
   ,
  @r ? fn([@$l, $p], @r) : ()
 }
 map {$h{$_} = 1} keys {map {join('', @$_) => 1} fn [], @_};
 keys %h
}
say for next_permutations split '', 'aaabc';

810:デフォルトの名無しさん
15/09/11 22:39:05.52 v7E2xSv/.net
use 5.016;
sub next_permutations {
 sub fn {
  my ($l, $p, @r) = @_;
  defined $p ? map {[$p, @$_]} fn([], @$l, @r) : ([])
   ,
  @r ? fn([@$l, $p], @r) : ()
 }
 keys {map {join('', @$_) => 1} fn [], @_};
}
say for next_permutations split '', 'aaabc';
これでええやん、つか破壊してないし、過剰仕様
しっか〜くw

811:デフォルトの名無しさん
15/09/12 14:21:20.66 9MDXYKkO.net
>>774
元の並びがソートされている場合、
保持されている現在の並びを破壊しながらでも
ジェネレータみたいに呼び出される度に次の順列を
重複なく返すアルゴリズムが>750のお題の肝では?

812:デフォルトの名無しさん
15/09/13 19:11:57.62 dr5xNYTR.net
>>775
お題に「生成される順列はソートせずとも辞書順に並ぶこと」って一言いれておけばよかったですね^^;

813:デフォルトの名無しさん
15/09/13 20:57:12.14 bLikZ+wL.net
>>750 OCaml
URLリンク(ideone.com)
引数はリスト限定で破壊的操作はしない、返り値で次の順列を返す

814:デフォルトの名無しさん
15/09/13 22:52:40.22 b32GJr7l.net
>>441 c
URLリンク(ideone.com)
注:肝心な部分(comb, permute)はぐぐったサイトから無断で拝借しました

815:デフォルトの名無しさん
15/09/14 07:17:09.48 aQticbJR.net
>>778
中身が見えない

816:デフォルトの名無しさん
15/09/14 20:25:46.47 Gwz4vSRg.net
>>441 c
URLリンク(ideone.com)
>>778からの変更点:
・いったん全パターンもつのをやっぱやめる
・細部のちょこちょこっとした改善

817:デフォルトの名無しさん
15/09/15 21:30:13.30 jovL9vh0.net
>>775 うっせーな、ハゲっが。
「生成される順列はソートせずとも辞書順に並ぶこと」の意味が
「出力する行がsort済みの順番に並んでいる」順列という意味ならこうか:
use feature qw{:5.16};
use Data::Dump qw(dump);
sub next_permutation {
 defined $_[1] and next_permutation(@_[1..$#_]) or
  ($_[0] lt $_[1]) and
  do {
   do {$i = $_
      if $_[0] lt $_[$_]}
        for 1..$#_;
   @_[0, $i] = @_[$i, 0];
   @_[1..$#_] = sort @_[1..$#_];
   1 }
 }
#@a = split '', 'aaabcaaabcaaabc'; # ←この入力はカラムがsort済みじゃねーしw
@a = split '', 'aaabc';
say join '', @a;
say join '', @a while next_permutation @a;
出力行ごとのカラムもソートされているという制限つきの順列生成なら
中のdoがif産業が一行になるかな。
つか、中のdo forも無名再帰で書くのがホンとは漢つーもんょ。

818:デフォルトの名無しさん
15/09/15 21:35:00.71 jovL9vh0.net
いや、ちょとまて
入力行一行のカラムがソートされてたら、
出力行のカラムもソートされているという制限をつけたら
出力順列は入力と同じたった一行しか存在しない、
ふー危うくひっかかるところだったぜ。
つーことで上の方のほかの人の回答に間違っているのない?

819:デフォルトの名無しさん
15/09/15 21:46:18.62 jovL9vh0.net
やっぱほかの人の解も合ってるかな?
よく見てないけどw
'aaabcaaabcaaabc';の入力の並びに目が惑わされたワイ
じゃーな、ハゲっが。

820:デフォルトの名無しさん
15/09/15 22:10:44.77 jovL9vh0.net
>>781 連投ごめんなさい、or式全体を()でくくらないと出力に抜けが起きるバグありあした…orz
修正版:
use feature qw{:5.16};
sub next_permutation {
 defined $_[1] and (next_permutation(@_[1..$#_]) or
  ($_[0] lt $_[1]) and
  do {
   do {$i = $_
      if $_[0] lt $_[$_]}
        for 1..$#_;
   @_[0, $i] = @_[$i, 0];
   @_[1..$#_] = sort @_[1..$#_];
   1 })
 }
#@a = split '', 'aaaaaaaaaaaaaaaabc';
@a = split '', 'aaabc';
say join '', @a;
say join '', @a while next_permutation @a;

821:デフォルトの名無しさん
15/09/16 00:38:04.82 zgtxEZCv.net
>>784
左側の新しい項の入れ替えに移行し右側の並びを一式リセットするためのsortは
reversieでよいはず。これにより並べ替えのオーダーをNlogNからNに低減できる。
また項を入れかえる対象の要素を検索する繰り返しは、その項より大きくかつ最も小さい
値の要素を探すので、平均行程1/2で打ちって検索の計算量も半減することができる。
それから、もう少しコンパクトかつ可読性ある書き方ができるはず。

822:デフォルトの名無しさん
15/09/16 00:59:37.85 NuZWJDts.net
>>16 c
URLリンク(ideone.com)
カウント版と算出版と両方
カウント版で出した値じっくりながめると
9, 99, 999…っていう値の気配がしたので
それ中心に押したり引いたりしながら算出
なお、理屈はよくわかっていないもよう

823:デフォルトの名無しさん
15/09/16 01:04:42.91 zgtxEZCv.net
use feature qw{:5.16};
sub next_permutation {
 defined $_[1] and (next_permutation(@_[1..$#_]) or
  ($_[0] lt $_[1]) and
  do {
   for (1..$#_)
    {$_[0] lt $_[$_] ? $i = $_ : last}
   @_[0, $i] = @_[$i, 0];
   @_[1..$#_] = reverse @_[1..$#_];
   1 })
 }
#@a = split '', 'aaabc'; # 'aaaaaaaaaaaaaaaabc';
@a = split '', '112334556';
say join '', @a;
say join '', @a while next_permutation @a;
こんな感じな。sortをreverseにしたとき、ぐっと速くなった。

824:デフォルトの名無しさん
15/09/16 05:12:59.25 TSIOTapp.net
>>750 Ruby
URLリンク(ideone.com)

825:デフォルトの名無しさん
15/09/16 07:10:31.01 2Yj1o+46.net
>>750 Go
URLリンク(ideone.com)
Permutationインターフェースを実装すれば他の型でもできる

826:デフォルトの名無しさん
15/09/16 13:06:36.59 fQczy5Yc.net
ruby初心者スレでこちらに書く様に促されたので、
できればrubyかpythonで答えて頂けるとありがたいです。
お題
以下の様な数値群から、重複しない要素を使って任意の数値(例えば2360)に最も近い和を求めるにはどうしたら良いでしょう?
115,135,215,352,358,655,885,925,936,1250,1285,1620,1850

827:デフォルトの名無しさん
15/09/16 14:20:54.79 VfqLXb9I.net
115+135+215+358+655+885=2363

828:デフォルトの名無しさん
15/09/16 14:23:48.16 aL/dguIa.net
>>791
任意の数値のアルゴリズム

829:デフォルトの名無しさん
15/09/16 15:06:27.46 VfqLXb9I.net
データ件数10000件の場合とかだなw

830:デフォルトの名無しさん
15/09/16 16:09:16.80 9fL6Ueyi.net
ポテトチップスを、60gの袋詰めする機械では、
9個の秤に、幾らかのポテトチップスが載っていて、
その秤の中から、60g以上で、
最も少ない重さを計算して、袋詰めする
9個の秤の重さの合計を、sum9として、
1個の秤の重さを求めると、残り8個の秤の重さもわかる。
2個の秤の重さを求めると、残り7個の秤の重さもわかる。
3個の秤の重さを求めると、残り6個の秤の重さもわかる。
4個の秤の重さを求めると、残り5個の秤の重さもわかる

831:デフォルトの名無しさん
15/09/16 16:44:57.70 9fL6Ueyi.net
重複を許さない組合せ
Array.combination
13個の数字の合計を、sum13として、
1個の数字を求めると、残り12個の数字の合計もわかる。
2個の数字の合計を求めると、残り11個の数字の合計もわかる。
.
.
6個の数字の合計を求めると、残り7個の数字の合計もわかる
つまり、6個までのすべての組合せを計算すればよい

832:デフォルトの名無しさん
15/09/16 17:54:44.06 slZMIjby.net
>>790
> 以下のような
っていう部分はどう解釈すればいいの?
例に挙がってる程度の数であれば、
総当りでいいんじゃね?
これ↓と同質の問題ならリンク先を参照。
URLリンク(ja.wikipedia.org)

833:デフォルトの名無しさん
15/09/16 18:58:52.94 saSs2l+c.net
>>790 ruby 2.0.0
単に全パターンをチェックした場合
def f789(a, target)
combos = (1..a.size).inject([]) {|r, i| r += a.combination(i).to_a}
min = combos.min_by {|combo| (target - combo.inject(:+)).abs}
[min, min.inject(:+)]
end
p f789([115,135,215,352,358,655,885,925,936,1250,1285,1620,1850], 2360)

[[115, 135, 215, 352, 655, 885], 2357]

834:デフォルトの名無しさん
15/09/16 20:10:54.59 aL/dguIa.net
データの方も任意なんだろう。「ような」が付いてる。

> 以下の様な数値群

835:デフォルトの名無しさん
15/09/16 20:53:50.13 ExTMGHGk.net
>>790
URLリンク(ideone.com)
一応解いたがオセー。最新CPUで1:40かかる。
順列使うくらいなら再起使ったほうが早いな。
コンビネーションほしー。

836:デフォルトの名無しさん
15/09/16 22:16:07.44 JeX5l5vV.net
>>790
データの数が20個程度なら総当りで問題なく解けそうだけど最大数いくつ?

837:デフォルトの名無しさん
15/09/16 22:42:12.73 aL/dguIa.net
これでいいのでは? データがx0, x1, ・・・xN、yに近い和を求めるとして。
y = xnとなるnがあれば終了。
そうでないとき、y > xnとなる最大のnについて、次の値でいいやつを選べはいいのでは?
x(n+1) // yより大きくもっとも近い値
cal (y, {x0, ・・・x(n-1)}) //和にxnを含まないときの最良値
cal (y-xn, {x0, ・・・x(n-1)}) //和にxnを含むときの最良値

838:デフォルトの名無しさん
15/09/16 22:53:06.43 aL/dguIa.net
>>801で関数calを作ればいい。
cal(y, vec)とすると、y,かvecが小さくなるので再帰関数で作れるはず。

839:デフォルトの名無しさん
15/09/16 23:59:55.71 JeX5l5vV.net
>>790
URLリンク(ideone.com)
とりあえず何も考えずに総当り
20個だと1秒くらいで出るけど数が増えると死ぬ

840:デフォルトの名無しさん
15/09/17 00:21:00.74 56vB2llc.net
網羅するしかないけど、再計算はしない、大きすぎる・小さすぎる和を検出して無駄なループをさせない点がポイントでは。

841:デフォルトの名無しさん
15/09/17 00:36:51.76 oSu48zpr.net
>>790
URLリンク(ideone.com)
前に書えたやつを軽く修正
全探索解(2^n*n)と、ウソDP解(n*最大重量)
基本python2.xだけど、pypyで実行

842:789
15/09/17 08:46:22.84 aStCI4Gl.net
解答してくださったみなさんありがとうございます。
元々は50程度の数値群で、別にやらなきゃいけない物でもなかったんですが、
プログラミングでやるとしたらどうやるのかなと思ったのですが、
自分では解法が考えつかなかったので書き込んでみました。これから少しずつ見て理解してみます。

843:デフォルトの名無しさん
15/09/17 09:19:36.19 7rI3c1r5.net
>>790 OCaml
URLリンク(ideone.com)
力任せ探索をハッシュテーブルを使ってメモ化

844:名無しさん@お腹いっぱい。
15/09/17 11:24:35.90 Ref/prt+.net
今度PS4が値下げするそうなんだけど
PS4でプログラミングはできるのかな?誰か教えて。
CとかRubyとかその他。

845:デフォルトの名無しさん
15/09/17 13:03:14.26 56vB2llc.net
PS4単体でプログラミングできる仕組みはあるのかしらないけど。
PS4で動くソフトの開発は素人でもできるのでは?
PS4で動くコンパイラとかエディタとかキーボードとか揃えばできるとおもうが。

846:デフォルトの名無しさん
15/09/17 13:08:21.98 56vB2llc.net
適当にかいた。ここには契約しないとできない


847:となってる。個人利用でもソニーから開発環境提供してもらわないとムリなのか? PlayStationRソフトウェアの提案・開発・発売をしたい | PlayStation.com https://support.jp.playstation.com/app/answers/detail/a_id/161



848:名無しさん@お腹いっぱい。
15/09/17 13:18:09.20 Ref/prt+.net
PS4の使い道があまりないのでPC代わりにプログラミングの勉強に使えないかと
思ったが、やっぱりダメみたいだね。
普通にWINDOWS PCを使う事にするよ。
回答ありがとう。

849:デフォルトの名無しさん
15/09/17 13:59:14.02 56vB2llc.net
>>806
やってないけど50個は手強いかと。
総当りだと、2^50 = 1125899906842620とおりで普通のPCでは計算終わらないはず。
工夫したとしても手強いはず。

850:デフォルトの名無しさん
15/09/17 14:06:34.37 56vB2llc.net
確実で最初にやるといいと思える計算削減法は。
たとえば101を生成したいとき、101がデータにあるならばそれを使えばよく、それ以下の和で101を生成すべきではないな。
これは事前に検出しておいたほうがよさげ。

851:デフォルトの名無しさん
15/09/17 17:42:20.70 IC3slnA5.net
求める値が10000( > 2360 * 50 / 13)程度なら、>>805これのfunc1で行ける

852:デフォルトの名無しさん
15/09/20 05:58:43.13 vBjKt0IW.net
「Googleの入社試験」より
正の整数 n が与えられたとき、
0からnの間の、すべての整数に使われている、
1の数を返す関数 f があります
例えば、f(1) = 1; f(13) = 6 など。
今、nが2以上で、f(n) = n となる最小のnを求めよ
参考までに、
f(99) = 20; f(999) = 300; f(199,999) = 200,000
答え、n = 199,981

853:デフォルトの名無しさん
15/09/20 08:06:14.95 f/DwOlJx.net
>>815
「10進法表記で」かい?

854:デフォルトの名無しさん
15/09/20 08:25:53.78 g7ao8Sb7.net
>>815
URLリンク(ideone.com)
C++。とりあえず2通り書いてみたけど、どっちも遅い。
片方は並列化すれば多少早くなるはず。片方はデバッグ投げた。コンビネーションほしい。
最近まともに解けてないな・・・。

855:814
15/09/20 08:37:04.35 vBjKt0IW.net
>>816
もちろん、10進数だよ
f(13) = 6
1, 10, 11, 12, 13で、1を6個使っている
11は、2個で数える

856:デフォルトの名無しさん
15/09/20 09:36:23.85 1JwuQWhK.net
入社試験でパソコン使っていいのか?

857:デフォルトの名無しさん
15/09/20 10:45:18.64 7mBXEM/X.net
>>815 OCaml
URLリンク(ideone.com)
最小のnのみ表示、経過はアウトプットしてない

858:デフォルトの名無しさん
15/09/20 12:10:16.54 4gyZNSF5.net
>>815 C
URLリンク(ideone.com)

859:780
15/09/20 13:29:55.06 Ac94krKF.net
>>815
use feature qw{:5.16};
sub f1 { # 0..10**$d - 1 (0..999など)の間にある総和
 my $d = shift;
 my $i = 10**$d;
 my $n = ($i / 10) * $d;
 ($i, $n) }
sub f2 { # 0..10**$d *2) (0..2000など)最上位が2になるまでの間にある総和
 my $d = shift;
 my $i = 10**$d * 2;
 my $n = $i / 2 + ($i / 10) * $d;
 ($i, $n) }
my $o = 2;
do {
 ($i1, $n1) = f1 $o;
 ($i2, $n2) = f2 $o;
 say "$o: $i1..$i2, $n1 ~ $n2";
 $o++;
} while $n2 < $i2;
$ perl 7_814_0.pl
2: 100..200, 20 ~ 140
3: 1000..2000, 300 ~ 1600
4: 10000..20000, 4000 ~ 18000
5: 100000..200000, 50000 ~ 200000 ← 解はこの間にある
理屈で考えると、最上位桁が1以外の0,2..9の場合はその値までの文字1の総和は
値に漸近しないので、解は最上位が1となる1xxxx ... 1999...の間にある筈。
上記はそれを確認したコード、この考えに基づき再帰的探査で速やかに見つからないかな…
時間があったらやってみたいが引越しの準備で…、ハゲっが。

860:デフォルトの名無しさん
15/09/20 14:17:21.30 W3KPe91F.net
>>815 c
URLリンク(ideone.com)

861:デフォルトの名無しさん
15/09/20 22:12:07.71 w687FJud.net
>>815 Squeak/Pharo Smalltalk
| g f m |
g := [
 | memo |
 memo := OrderedCollection with: 1.
 [:n |
  n - memo size timesRepeat: [
   memo add: (memo last + ((memo size + 1) asString occurrencesOf: $1))].
  memo at: n
 ]
].
f := g value.
m := 1.
[(m := m + 1) = (f value: m)] whileFalse.
^m "=> 199981 "

862:デフォルトの名無しさん
15/09/20 22:53:09.92 g7ao8Sb7.net
高速化しようとしてthreadいじってみたけど、そっちの闇にのまれて全く進まなかった。Orz
真面目に最後までやって終わってるのかすらわからん・・・。

863:デフォルトの名無しさん
15/09/20 23:01:38.16 D6HrfyQE.net
マンカラ= カラハ = 豆まきゲームのAI作成で。自分が強いのを作るので対戦。

マンカラ ( ボードゲーム ):無料Flashゲーム
URLリンク(www.sousakuba.com)

ゲーム「カラー」の説明
それでは、例題として取り上げるゲーム「カラー (Kalah) 」を説明します。
このゲームはルールこそ単純ですが、展開がスリリングで面白いゲームです。
URLリンク(www.geocities.jp)

864:デフォルトの名無しさん
15/09/20 23:15:14.16 7mBXEM/X.net
>>822の検証をしていたら
9が並んだパターンのnは、1の数え上げが不要なことが分かった
下のPython3のコードはnの桁の数から>>815のf(9...9)の場合の値を出してる
import math
def f_9x(n):
 a = math.floor(math.log10(n))
 return (a+1) * pow(10, a)
f_9x(9) # 1
f_9x(99) # 20
f_9x(999) # 300
f_9x(9999) # 4000
f_9x(99999) # 50000
f_9x(999999) # 600000

865:780
15/09/20 23:55:39.69 Ac94krKF.net
>>827
ゴメンチャイ
>>822は間違いがあって
× 最上位桁が1以外の0,2..9の場合はその値までの文字1の総和は値に漸近しない
○ ある値における最上位桁から現在着目している桁までの間に1がない場合は
  その値を右にインクリメントしていっても、文字1の総和は値に漸近しない
たとえば
xxxxxxxxxxooooooooooxxxxxxxxxxx    o o  x o
                        1…1…2…2
0000000000111111111122222222223…0…1…0…1
0123456789012345678901234567890…0…0…0…0 ←着目している桁
図で書くとxのことろに解はなく、oのところに解がある可能性がある
これ2,3桁なのでちょっと分かりにくいかもしれないけど、桁数が多場合を考えると分かりやすいかも
で、その考えに基づいて速やかに解に近づくようなcodeを書こうと
思ったけど、結構骨が折れてまだ完成しないw

866:780
15/09/21 01:39:22.93 jBw1B4c/.net
>>815 Perl
こった解探索アルゴリズムの物はすぐできない感じなので、
愚直に1から探していくバージョンをまずは…
use feature qw{:5.16};
($s, $_) = (1, 1);
do {
 $_++;
 $s += (() = /1/g);
} while $s < $_;
say $_;

$ perl 7_814_x.pl
199981

867:デフォルトの名無しさん
15/09/21 01:53:22.45 j5q7sFQh.net
1を数えるのはそんなに難しそうになくプログラムもなくても出来ないのか?
10区切りで1のケタをみれば、1個しかなくこれがループしてるだけ。
10の位も100の位も似たようなもので精密に数えたら手計算でもできないか?

868:デフォルトの名無しさん
15/09/21 02:12:51.56 GyvZP+14.net
論よりコード。

869:780
15/09/21 02:17:07.55 jBw1B4c/.net
>>830
ある切のいい値、たとえば100とか2000-1とかまでだと机上計算でもすごく簡単なの。
下記はその筆算イメージをcode化したもの、
use feature qw{:5.16};
for ($o = 2; ; $o++) {
 $i1 = 10**$o;
 $n1 = ($i1 / 10) * $o;
 #$i1--; # fix
 $n1++;
 $i2 = 10**$o * 2;
 $n2 = $i2 / 2 + ($i2 / 10) * $o;
 $i2--; # fix
 say "$o: $i1..$i2, $n1 ~ $n2";
 last if $i2 <= $n2;
}
$ perl 7_814_1.pl
2: 100..199, 21 ~ 140
3: 1000..1999, 301 ~ 1600
4: 10000..19999, 4001 ~ 18000
5: 100000..199999, 50001 ~ 200000
これを発展させる形で、切の悪い値も、解の候補の可能性があるものを渡り歩いて
速やかな>815の求解プログラムとするには
モレ的にはもう少し方式検討が要る感じがして、>829で一旦 日和らせてもらた

870:780
15/09/21 02:30:00.52 jBw1B4c/.net
>>832
この弱点は、ある値が与えられたら、1からその値までの文字1の総和を
解析的にというか式で算出することに気がとられ、
そのような計算式にもとづき、切の悪い値の中にある>815の求解に挑む
方向に考えが流されちゃったところかな。
発想を転換した方が良いかもしれないと思った。
和を足し込みながら漸近させて行く方法などと組み合わせるとかね。
さ、寝るわ。

871:デフォルトの名無しさん
15/09/21 03:09:20.39 TV+aglfl.net
>>815
愚直に日本語
0. s=0とする
1.n=0
2. nを10進数であらわしたときに含まれる1の数
を数えそれをdとおく
3. k=0,...9として
4. k=1のときはd+1,それ以外をsに足しn+kに一致したら
出力して終了
5. 3のループを継続
6. n=n+10として1.へ
2.の処理の詳細
d=0;m=n;while(m){ d=(m % 10==1)?1:0; m/=10;}
愚直で効率が悪いのでCで書いても100m秒もかかって
しまった。

872:訂正
15/09/21 03:10:53.01 TV+aglfl.net
4.k=1のときはd+1,それ以外はdをsに足し、sがn+kに一致したら
出力して終了(n+k<2の場合は継続)

873:またもや訂正(スマンコ)
15/09/21 03:12:02.29 TV+aglfl.net
6. n=n+10として2.へ

874:デフォルトの名無しさん
15/09/21 08:29:38.04 K1QACkp5.net
>>831
>論よりコード。
超名言w

875:デフォルトの名無しさん
15/09/21 08:35:28.97 OcjZ8RWa.net
いいね
論よりコード

876:デフォルトの名無しさん
15/09/21 09:05:31.09 QVf3KibQ.net
これは良い。テンプレに入れようず

877:デフォルトの名無しさん
15/09/21 11:10:04.89 K1QACkp5.net
>>815
@Mathematica
URLリンク(ideone.com)
※ナイーブに書き下したので、2時間経っても計算が終わらない orz

878:デフォルトの名無しさん
15/09/21 11:47:33.16 TV+aglfl.net
C語で書き直し
[?]には整数型変数名を入れてください
#include <stdio.h>
static int odai814(void){
int [?]=0,[?]=0,[?],[?],[?];for(;;[?]+=10){[?]=[?],[?]=0;
while([?])[?]+=(([?]%10)==1)?1:0,[?]/=10;
for([?]=0;[?]<10;[?]++)if(([?]+=([?]==1)?[?]+1:
[?])==[?]+[?])if([?]+[?]>1)
return [?]+[?];}}
int main(void) {printf("%d\n",odai814());return 0;}

879:デフォルトの名無しさん
15/09/21 12:17:20.21 zZoSoqbh.net
>>815のnと1の総数の関係が少し面白くて、お題とはちょっとず


880:れるけど f(n)=nとなるnを全て計算してみました >>827を見るとnの桁数が大きくなると1の総数f(n)がnを追い越すことから 有限個と予想はできるのですが、実際計算してみるとf(n)=nとなる数は 0,1を入れると84個っぽい C言語:http://ideone.com/6jwkpQ



881:780
15/09/21 12:39:31.93 jBw1B4c/.net
>>842
面白い結果だね。
13:[200000]
25:[2600000]
28:[35000000]
40:[35200000]
などは一旦 f(n)>n と逆転したあとに、f(n)==nに戻ったところだね

882:デフォルトの名無しさん
15/09/21 13:22:00.66 o5zq47rX.net
>>815 Emacs Lisp
(require 'cl-lib)
cl-lib
(defun f (n &optional m)
(if m (+ m (cl-count ?1 (format "%d" n)))
(cl-loop for i from 0 to n sum (cl-count ?1 (format "%d" i)))))
f
(f 1) 1
(f 13) 6
(f 99) 20
(f 999) 300
(f 199999) 200000
(let* ((n 2) (sum (f (1- n))))
(cl-loop (when (= (setq sum (f n sum)) n) (return n)) (incf n)))
199981

883:デフォルトの名無しさん
15/09/21 14:13:32.12 vwg3dHwd.net
数字1の出現を見抜けるかどうかか
Google問題は
ヒントを知ると容易
ヒントが無ければ、f(1)=1, f(13)=6で一生悩む
>>842
深いな

884:780
15/09/21 16:14:22.83 jBw1B4c/.net
>>833 >815 のお題で1の出現回数を0から足し込んでいくのではなく
ある値が与えられたら、0からその値までの間に出現する1の個数を式で一気に求めることができた。
言語:perl
use feature qw{:5.16};
sub fn {
 my ($o, $w, $s) = (0 x 3);
 my $d = shift;
 if (defined $d) {
  $s = fn(@_);
  $o = scalar @_; # aboid $#_ problem
  $w = 10**$o;
  $s += $d * $o * $w / 10
   if $o > 0;
  if ($d > 1) {
   $s += $w;
  } elsif ($d == 1) {
   $s += 1 + join '', @_; # `1 +' means including 0
  }
  #say "$d, $o, $w: $s";
 }
 $s
}
@vals = qw{1 10 11 13 99 100 110 111 199 200 999 1000 19999 199980 199981 199982};
say "$_ : ", fn(split '', $_)
 for @vals;

885:780
15/09/21 16:16:19.84 jBw1B4c/.net
>>846 の実行例(行が多すぎたので2レスに分割)
$ perl 7_814.pl
1 : 1
10 : 2
11 : 4
13 : 6
99 : 20
100 : 21
110 : 33
111 : 36
199 : 140
200 : 140
999 : 300
1000 : 301
19999 : 18000
199980 : 199979
199981 : 199981
199982 : 199982
あとは解の候補があり得る値の所を飛び飛びで上手にわたって行くようなmainを作ることができれば、
0から足し込んで探すナイーブな解法に対し、演算量を劇的に低減できるかもしれない。
時間があったらやって見ますワ

886:デフォルトの名無しさん
15/09/21 23:29:01.05 TV+aglfl.net


887:814
15/09/22 06:19:38.15 0pZRAY1l.net
非公認 Googleの入社試験、竹内薫、2008。
竹内さんは、NHKの「サイエンスZERO」に出ている人だね
Googleが試験問題を公表していないから、
外国のサイトを見まくって、問題を探し出して、
仲間と頭をひねりながら、解答を作って、
本にまとめてくれたことに感謝します
日本人のサイトでは、
あまりGoogleの試験問題は載っていないようだから、
本にまとめるのに苦労したみたい

888:デフォルトの名無しさん
15/09/22 06:46:32.71 8xBEIW2I.net
つまり試験を受けた人のブログをコピペして、外国語だからばれないだろう
みたいな感じで佐野ったのか。

889:814
15/09/22 07:08:18.21 0pZRAY1l.net
竹内さんは、外人のブログをコピペしてはいない



890:外人は試験問題を、正確には書いていないから、 どういう問題が出たのか、色々なサイトを見て、 推測して書いているのだろう それにブログに書いてある解答も、 たいてい間違っているらしい



891:デフォルトの名無しさん
15/09/22 07:27:00.80 8xBEIW2I.net
>>851
だからコピーじゃなくて佐野ったんだろ?

892:デフォルトの名無しさん
15/09/22 07:58:51.34 8xBEIW2I.net
フォントが違うからコピーじゃないとかなんとか。

893:839
15/09/22 09:34:36.06 hBy/MoF0.net
一晩放置したら答えが出てました。
ということで、コードを微調整。
@Mathematica
URLリンク(ideone.com)
※最後の結果に +1 してます。

894:839
15/09/22 11:55:24.83 hBy/MoF0.net
連投スマソ。>>847 を参考に改良。
@Mathematica
URLリンク(ideone.com)
変更点:
1. n と nまでに含まれる”1”の個数 の差を
  次に計算する n の推定(guess)に利用。
2. FixedPoint で解が収束するまで計算。
結果:
・約80ステップで解に収束。
・計算時間が約20時間 → 1分弱に改善。

895:780
15/09/22 13:57:33.62 ungOuZXX.net
>>855
先に作られてしもたw その収束アルゴリズムはよく理解できていないけど、やるな…
解が埋もれているかもしれない範囲を飛ばすことなく速やかにかつ確実に解に漸近していくアルゴリズムを
考え込んでしまい、モレはまだmainができていないよ。下記のようなn, fn(n), 差分f(n)-n, 差分f(n)-n
の増加/減少トレドを見るmain書いて眺めてた。それはそれで結構面白かったけど。
use feature 'say';
sub fn {
 my ($d, $o, $w, $s) = (undef, 0 x 3);
 if (defined ($d = shift)) {
  $s = fn(@_);
  $o = scalar @_; # avoid shifted $#_ problem
  $w = 10**$o;
  $s += $d * $o * $w / 10;
  if ($d > 1) {
   $s += $w;
  } elsif ($d == 1) {
   $s += 1 + join '', @_; # `1 +' includes 0
  } #say "$d, $o, $w: $s";
 } $s }
my ($i0, $fn0, $diff0, $sign0, $indi) = (1,1,1,1,0);
for my $i (1..200000) {
 my $fn = fn(split '', $i);
 my $diff = $fn - $i; my $sign = $diff0 cmp $diff;
 if ($sign != $sign0) {
  say "$i0 p $fn0; $diff0: $sign0" unless $indi;
  say "$i : $fn; $diff: $sign";
  $indi = 1;
 } else {
  $indi = 0;
 }
 ($i0, $fn0, $diff0, $sign0) = ($i, $fn, $diff, $sign);
}

896:デフォルトの名無しさん
15/09/22 18:55:55.46 gQIVdZQM.net
お題:正の整数n が与えられたとき,√n を連分数展開せよ
連分数:URLリンク(ja.wikipedia.org)

897:デフォルトの名無しさん
15/09/22 19:18:25.94 0pZRAY1l.net
「Googleの入社試験」より
ネイピア数 e の連続した桁で見つかる、
最初の10桁の素数は?
参考までに、
その数nを、11桁(100億)の平方根、
6桁(10万)までの素数で割って、
割り切れなければ素数である
10万までの素数の数は、素数定理により約、
100,000 / log 100,000 = 8,686
答え 7,427,466,391
ただし、計算に1時間かかるらしいので、
もう少し桁数を少なくして、
また円周率PIについても、同様に求めてください。
e,PI、素数表は、どこかのサイトで探して

898:デフォルトの名無しさん
15/09/22 19:41:21.21 fdpESrCr.net
1時間もかかる??
100ミリ秒とかからず終わったけど
$ time ruby e.rb
7427466391 is prime at 98
ruby e.rb 0.07s user 0.02s system 100% cpu 0.089 total

899:デフォルトの名無しさん
15/09/22 19:58:30.28 81sVtoLn.net
>>858 Java
URLリンク(ideone.com)

900:デフォルトの名無しさん
15/09/22 20:03:13.08 uU2JaX25.net
やってないからわからないけど、手間・計算時間はある程度かかるはずだろ。短縮不可能な。
10ケタ最小fは一瞬だったら、11ケタ、12ケタの最小素数にしたらどうか?

901:デフォルトの名無しさん
15/09/22 21:11:01


902:.82 ID:2QChAl7u.net



903:デフォルトの名無しさん
15/09/22 21:17:43.58 uU2JaX25.net
円周率、Eは計算が面倒で、このような後ろに順番を追加していく数ならどうか?
これでなるべく数字を追加せずに、11ケタの素数部分を見つける問題。本質的な探索部分は同じでは。

1
12
123
・・・
123456789
12345678910
1234567891011

904:デフォルトの名無しさん
15/09/22 21:38:02.27 fdpESrCr.net
>>862
10桁の数のうち素数は5%くらいなんだから
50個ぐらい見つかるのは期待値通り

905:デフォルトの名無しさん
15/09/22 22:01:37.16 81sVtoLn.net
>>863
45678910111

906:デフォルトの名無しさん
15/09/22 22:23:27.01 uU2JaX25.net
自分のは簡単だったな

907:デフォルトの名無しさん
15/09/22 22:52:27.25 vtuBryJI.net
>>858 Emacs Lisp
(require 'cl-lib)
cl-lib
(defun primep (n)
(if (= n 2) t
(let ((d 2))
(cl-loop (when (= (% n d) 0) (cl-return nil)) (when (<= n (* d d)) (cl-return t))
(incf d)))))
(defun e (column) ; スレリンク(tech板:695番)
(let* ((D 10000) (a (make-string D ?0)))
(cl-block aaa
(cl-loop for j from 3333 downto 1 do
(let ((k 1))
(cl-loop for i from 0 below D do (progn
(setq k (+ (* (% k j) 10) (- (aref a i) ?0))) (setf (aref a i) (+ (/ k j) ?0))
(when (and (= j 1) (<= (1- column) i))
(let ((x (string-to-number (substring a (- i (1- column)) (1+ i)))))
(when (primep x) (cl-return-from aaa (format "%d is prime at %d" x (- i (1- column))))))))))))))
e
(e 2)
"71 is prime at 0"
(e 10)
"7427466391 is prime at 98"
(e 11)
"75724709369 is prime at 36"

908:857
15/09/22 22:56:05.44 0pZRAY1l.net
>>859
Rubyで、0.1秒ですか?
2008年の本に、マセマティカのFactorIntegerで、
1時間かかったと書いてあったので
暇なら、e,PI,√2,√3などの数列を使って、
素数を求めてくだされ

909:デフォルトの名無しさん
15/09/22 23:01:55.10 2QChAl7u.net
eの計算以外の部分はそんなところ
多くが小さな素数で割れる合成数だし。

910:デフォルトの名無しさん
15/09/22 23:19:06.09 uU2JaX25.net
数列計算は瞬時で、素数判定がキモでは?
フルイで素数表をつくろうとすると、10ケタがギリギリで11ケタは厳しくないか。
奇素数限定で、1つの数を1bitで表現したとしても10ケタの表は、
10^10 * 1/2 *1/8 * 1/2^20 メガバイト = 596メガバイト。
11ケタ全体にするとこの10倍容量。メモリもループ回数も厳しい。
表は持たずに判定してくしかないか。

911:デフォルトの名無しさん
15/09/22 23:26:00.73 2QChAl7u.net
10桁の合成数でも最大素因子は高々5桁
なので、100000までの素数を篩で求めてお
いて、小さい素数から片っ端から割っていく
方法でも、十分だった

912:デフォルトの名無しさん
15/09/22 23:28:35.29 2QChAl7u.net
ゴメソ 最小素因子の間違いね

913:デフォルトの名無しさん
15/09/23 07:48:02.68 HiyuM5m6.net
>>858
@Mathematica
URLリンク(ideone.com)
※ 計算時間は3msでした。

914:デフォルトの名無しさん
15/09/23 09:06:06.22 o5eDyHvE.net
>>858 C
URLリンク(ideone.com)

915:デフォルトの名無しさん
15/09/23 11:14:10.28 o5eDyHvE.net
>>857 C
URLリンク(ideone.com)

916:デフォルトの名無しさん
15/09/23 14:11:29.28 ByrCNK4a.net
eでだとえば一分以内に11ケタや、12ケタは計算完了できるか?

917:780
15/09/23 14:26:50.38 22OCfLbN.net
>>876 何言ってるの君は、十数桁までの算出なら_秒のレンジでしょに
一番簡単なatanの式でも
例、言語: MIT C Scheme
(* 4 (atan 1.0))
;Value: 3.141592653589793
doubleまでをサポートする言語でも16桁くらいまでは一瞬だよ。

918:780
15/09/23 14:28:33.20 22OCfLbN.net
>>877
おと間違えた、こりゃπだ。
でもeも同様に桁数が余り長くなければ_秒だよ。

919:デフォルトの名無しさん
15/09/23 14:50:46.49 ByrCNK4a.net
eの部分列が、だとえば一分以内に11ケタや12ケタの素数となるのを発見するのはできるか?

920:デフォルトの名無しさん
15/09/23 16:08:06.43 0scTCNwp.net
多項式時間アルゴリズムならできるんじゃね?AKSとか。
AKSの実装みたことねーな。

921:デフォルトの名無しさん
15/09/23 16:09:56.27 m6puvBDg.net
>>815
Ruby
答えの桁が少ないから終わるけど桁が増えるともっと工夫しないとダメだろうな
てかこんなんでいいのか
URLリンク(ideone.com)

922:880
15/09/23 16:13:24.63 m6puvBDg.net
あ、間違えてた
こうだな
URLリンク(ideone.com)

923:デフォルトの名無しさん
15/09/24 11:37:12.32 NZgcXNyR.net
>>118
亀レスですみません。
シルバーウィークで暇だったので面白そうな奴を組んでみました。
ほぼ計算結果は同じですが、違っていた奴
11個:半径=5.00
(0,0)(1,3)(0,6)・・・以下略
17個:半径=72.50
(0,0)(1,12)(0,24)・・・以下略
18個:半径=25.00
(0,0)(13,9)(20,10)・・・以下略
19個:半径=25.00
(0,0)(13,9)(18,24)・・・以下略
34個:半径=145.00
(0,0)(5,5)(18,16)・・・以下略
35個:半径=145.00
(0,0)(13,11)(18,16)・・・以下略

924:デフォルトの名無しさん
15/09/24 19:16:18.59 MUn8GANW.net
>>883
見逃してる点があるだけじゃね?
半径5 中心(-4,3) 12個
(0,0)(1,3)(0,6)(-1,7)(-4,8)(-7,7)(-8,6)(-9,3)(-8,0)(-7,-1)(-4,-2)(-1,-1)

925:デフォルトの名無しさん
15/09/25 19:32:25.19 RV77AIll.net
>>881,881 を Python で。
URLリンク(ideone.com)
短っ!

926:デフォルトの名無しさん
15/09/26 02:51:47.44 i0zKrV8k.net
お題:以下を出力する
1
12
123
1234
12345
123456
1234567
12345678
123456789

927:デフォルトの名無しさん
15/09/26 03:32:13.06 P25DxxnJ.net
>>886 Python3
for i in range(1,10):print('123456789'[:i])
43文字

928:デフォルトの名無しさん
15/09/26 03:43:25.43 nw7tAYJX.net
>>886
Ruby
a=0;9.times{|i|p a=a*10-~i}
27文字

929:デフォルトの名無しさん
15/09/26 03:46:20.54 VXPsa0vt.net
>>886
+++>>+++++++[<+++++++<+>>-]+++++++++[>+[>+<<<.+>>-]>[<+<<->>>-]<<<<.>>><-]

930:デフォルトの名無しさん
15/09/26 03:50:47.76 P25DxxnJ.net
>>886 Go
package main;func main(){for i:=1;i<10;i++{println("123456789"[:i])}}
69文字

931:デフォルトの名無しさん
15/09/26 03:53:30.71 VXPsa0vt.net
>>889
><とか全く無意味なところが残ってた恥ずかしい

932:デフォルトの名無しさん
15/09/26 04:18:45.09 P25DxxnJ.net
>>886 OCaml
let p,s=print_endline,"123456789"
let rec f=function|9->p s|n->p(String.sub s 0 n);f(n+1)
f 1
改行2回含んで93文字

933:デフォルトの名無しさん
15/09/26 04:19:39.31 MTElpeKZ.net
>>886
URLリンク(ideone.com)
C++。ワンライナーにはかなわんな。

934:デフォルトの名無しさん
15/09/26 04:34:02.86 P25DxxnJ.net
let p,s=print_endline,"123456789"
let rec f=function|9->p s|n->p(String.sub s 0 n);f(n+1);;f 1
>>892はミス、94文字に修正

935:デフォルトの名無しさん
15/09/26 04:43:12.51 P25DxxnJ.net
>>886 Bash
for i in {1..9};do s=$s$i;echo $s;done
38文字、sが空の状態であることが条件

936:デフォルトの名無しさん
15/09/26 04:56:05.75 LKYoiOWF.net
>>886 C++
URLリンク(ideone.com)

937:デフォルトの名無しさん
15/09/26 05:08:10.78 i8DjA5eB.net
>>886
@Mathematica
Range[9]//Map[{StringTake["123456789",#]}&,#]&//Grid
52文字

938:デフォルトの名無しさん
15/09/26 05:21:25.74 OT+


939:Fkj/0.net



940:デフォルトの名無しさん
15/09/26 05:41:15.64 VPLzo2d+.net
>>858 Squeak Smalltalk
| len e x delta digits lastPos |
len := 10.
e := 2 asScaledDecimal.
x := 1.
lastPos := 2.
[ | ans |
 [e := e + (delta := 1 / (x := x + 1) factorial). delta log negated > len] whileFalse.
 digits := (e asScaledDecimal: delta log asInteger negated) asString upTo: $s.
 lastPos + 1 to: digits size - len + 1 do: [:pos |
  ((digits at: (lastPos := pos)) ~= $0) ifTrue: [
   ans := (digits copyFrom: pos to: pos + len - 1) asInteger.
   ((Integer primesUpTo: ans sqrt + 1) noneSatisfy: [:p | ans isDivisibleBy: p])
    ifTrue: [^ans]
  ]
 ]
] repeat "=> 7427466391 "

941:デフォルトの名無しさん
15/09/26 06:05:35.48 i0zKrV8k.net
>>886 Io
for(i,2,10,writeln(((10**i-1)/9-i)/9))

942:デフォルトの名無しさん
15/09/26 06:08:21.02 VPLzo2d+.net
>>886 GNU Smalltalk
(1 to: 9) inject: 0 into: [:prev :i | (prev * 10 + i) printNl]
URLリンク(ideone.com)

943:デフォルトの名無しさん
15/09/26 06:36:11.10 8isGWqIv.net
>>889
ナイスとしかいいようがない,ideoneに実行系があるよ
URLリンク(ideone.com)

944:デフォルトの名無しさん
15/09/26 06:47:48.50 wxxd8WLg.net
暗号系言語って何らかのトランスレータがあるんだろうか?

945:780
15/09/26 11:54:35.31 HlXxu/MY.net
>>886 Perl
say 1..$_ for 1..9;

946:デフォルトの名無しさん
15/09/26 11:54:36.10 gfTU519R.net
>>886 c
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 9; i++) printf("%.*s\n", i, "123456789");
return 0;
}

>>886 ruby
puts (1..9).map {|i| "123456789"[0, i]}

947:デフォルトの名無しさん
15/09/26 12:10:27.50 s3bG5fjE.net
>>886
C#
namespace Odai885
{
class Program
{
static void Main(string[] args)
{
Enumerable.Range(1, 9).Select(l => { Console.WriteLine("123456789".Substring(0, l)); return 0; }).ToArray();
}
}
}

948:デフォルトの名無しさん
15/09/26 12:29:53.29 i0zKrV8k.net
>>886 R
for(i in 1:9)cat(1:i,sep="",fill=T)

949:デフォルトの名無しさん
15/09/26 13:24:18.37 Bwgz8l1o.net
>>886 Rust
fn main() {
for i in 1..10 {
for j in 1..i+1 {
print!("{}", j);
}
println!("");
}
}

950:デフォルトの名無しさん
15/09/26 15:15:42.63 O4axx1wD.net
>>886 Emacs Lisp
((lambda (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))) (reverse '(1 2 3 4 5 6 7 8 9)))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t

951:デフォルトの名無しさん
15/09/26 15:26:42.53 O4axx1wD.net
>>886 Emacs Lisp
>>909 は間違えました。
(require 'cl-lib)
cl-lib
(cl-labels ((f (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))))
(f (reverse '(1 2 3 4 5 6 7 8 9))))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t

952:デフォルトの名無しさん
15/09/26 19:11:36.57 nw7tAYJX.net
>>886
Clojure
(doseq [x (range 1 10)] (println (subs "123456789" 0 x)))

953:デフォルトの名無しさん
15/09/26 19:17:34.86 O4axx1wD.net
>>886 Emacs Lisp
>>909 で誤って依存していた大域関数f
(defun f (l) (when l (f (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri)))
をYコンビネータ導出の手順を使用して変形し、fへの依存をなくしました。
(require 'cl-lib)
cl-lib
(funcall (funcall #'(lambda (procedure)
(lexical-let ((procedure procedure))
(lambda (l) (when l (funcall (funcall procedure procedure) (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri)))))
#'(lambda (procedure)
(lexical-let ((procedure procedure))
(lambda (l) (when l (funcall (funcall procedure procedure) (cdr l)) (mapcar (lambda (x) (princ x)) (reverse l)) (terpri))))))
(reverse '(1 2 3 4 5 6 7 8 9)))
1
12
123
1234
12345
123456
1234567
12345678
123456789
t


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

617日前に更新/308 KB
担当:undef