Uploaded even earlier gdscript implementation.
This commit is contained in:
36
Euler.gd
Normal file
36
Euler.gd
Normal file
@@ -0,0 +1,36 @@
|
||||
class_name EulerCalculator extends Control
|
||||
|
||||
|
||||
|
||||
func _on_test_button_down() -> void:
|
||||
var answer:int = calc_biggest_palindromic_number(2)
|
||||
show_result(answer)
|
||||
|
||||
func _on_calculate_button_down() -> void:
|
||||
var answer:int = calc_biggest_palindromic_number(3)
|
||||
show_result(answer)
|
||||
|
||||
func show_result(answer:int) -> void:
|
||||
$VBoxContainer/Label.text = str(answer)
|
||||
|
||||
func calc_biggest_palindromic_number(digits:int) -> int:
|
||||
var highest_palindrome:int = -1
|
||||
var min:int=pow(10,digits-1)
|
||||
var max:int=pow(10,digits)
|
||||
for a in range(min, max):
|
||||
for b in range(min, max):
|
||||
var p:int = a*b
|
||||
var arr:Array = [0]
|
||||
for k in range(1, digits*2+1):
|
||||
var unit:int = p % (pow(10,k) as int)
|
||||
unit /= (pow(10,k-1) as int)
|
||||
arr.append(unit)
|
||||
arr.remove_at(0)
|
||||
if arr.size() != digits*2:
|
||||
continue
|
||||
var is_palindrome:bool = true
|
||||
for k in range(0,digits):
|
||||
is_palindrome = is_palindrome and arr[k] == arr[digits*2-k-1]
|
||||
if is_palindrome and highest_palindrome<p:
|
||||
highest_palindrome = p
|
||||
return highest_palindrome
|
||||
Reference in New Issue
Block a user