37 lines
1022 B
GDScript
37 lines
1022 B
GDScript
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
|