Problem 40

Problem 40

An irrational decimal fraction is created by concatenating the positive integers:

0.12345678910[color=red]1[/color]112131415161718192021…

It can be seen that the 12th digit of the fractional part is 1.

If dn represents the nth digit of the fractional part, find the value of the following expression.

d1 * d10 * d100 * d1000 * d10000 * d100000 * d1000000

naiwne ale działa :wink:
ruby1.9

[code]ciag = “”

0.upto(1000001) {|a| ciag << a.to_s}

a = ciag[10].to_i
b = ciag[100].to_i
c = ciag[1000].to_i
d = ciag[10000].to_i
e = ciag[100000].to_i
f = ciag[1000000].to_i
puts “wynik to #{abcde*f}”[/code]

[code=ruby]d = “0”
i = 0
while d.size < 1000001
d << (i+=1).to_s
end

p (0…6).map{|e| d[10**e].to_i}.inject(:*)[/code]
Tez dziala :stuck_out_tongue:

Teamon, raz jeszcze pytanie o użyte symbole? :slight_smile:
:* To rozumiem inject z mnożeniem? Pewnie jest jeszcze :-, :/?
Gdzieś jest tego opis, bo w dokumentacji nie znalazłem?

Np Dave Thomas o tym napisal:
http://pragdave.pragprog.com/pragdave/2005/11/symbolto_proc.html

http://api.rubyonrails.org/classes/Symbol.html

Akurat inject(:) to nie to samo co inject(&:) :stuck_out_tongue: (chociaż oba działają).

tjeden, prócz lektury zaproponowanej przez okiego, przeczytaj http://www.ruby-doc.org/core-1.9/classes/Enumerable.html#M002884. W skrócie chodzi o to, że inject robi obj.send(sym) dla każdego elementu tablicy (dodatkowo wykorzystuje memo do zbierania ostatecznej wartości). Przykład symbolu i send:

[code=ruby]a = [1,2,3]
puts a.send(:size)
puts a.send(:[], 1)

itp[/code]

‘send’ jest podstawą OOP w ruby.

Fajne toto, dzięki. :slight_smile:
I już wiem, czemu w mojej dokumentacji ciężko było to znależć:
szukałem pod http://www.ruby-doc.org/core zamiast http://www.ruby-doc.org/core-1.9