2016-09-08 4 views
-1

Hier ist a link, wo ich das Programm ausführen. Ich rufe Primefunktion, aber es gibt den Fehler wie folgt. Ich bin neu in Ruby, bitte hilf mir.Kann Prime-Funktion in Hackerrank nicht verwenden

Code, den ich ausführe.

prime_pal_array = -> (num) do 
    1.upto(Float::INFINITY).lazy.select{|x| prime?(x) and palindromic?(x)}.first(num) 
end 

puts prime_pal_array.(5) 

Ich erhalte Fehler wie unten.

in `block (2 levels) in 
': undefined method `prime?' for main:Object (NoMethodError) 

Antwort

1

Es gibt keine solche Methode prime? im Core API. Sie müssen entweder selbst eine neue Methode prime? definieren oder die Implementierung Standard Library's verwenden, indem Sie am Anfang Ihres Skripts require 'prime' hinzufügen.

Dies wird jedoch Ihren Code nicht beheben, da es auch keine solche 'palindromic?' Methode in der Core-Bibliothek oder Standard-Bibliothek gibt. Also entweder eins machen oder ein relevantes Juwel unter RubyGems herunterladen und installieren.

Die obigen zwei Schritte helfen Ihnen bei der Korrektur Ihres Codes.

+0

Aber selbst die "Prime" -Bibliothek definiert keine globale 'prime?' - Funktion. – Stefan

+0

@Stefan Nicht sicher, was du meinst? z.B. '5.Prime? # => true, wenn Sie die Datei prime.rb laden, die ['prime?'] enthält (http://ruby-doc.org/stdlib-2.3.1/libdoc/prime/rdoc/Integer.html#method- i-prime-3F) –

+0

Ich meine, dass es keine 'prime? (5)' gibt, wie sie im Code des OP verwendet werden. – Stefan