Палиндром - число, буквосочетание, слово или текст, одинаково читающееся в обоих направлениях. Например, число 101; слова «топот» в русском языке и фин. saippuakivikauppias (продавец мыла; торговец щёлоком) — самое длинное слово-палиндром в мире; текст «а роза упала на лапу Азора» и пр. - это с википедии. А мы это дело реализуем на Питоне в две строки.
Когда-то я учил язык С, и мне как-то было не по себе когда я видел вот такое:
#include
int main() {
int n, reversedN = 0, remainder, originalN;
printf("Enter an integer: ");
scanf("%d", &n);
originalN = n;
// reversed integer is stored in reversedN
while (n != 0) {
remainder = n % 10;
reversedN = reversedN * 10 + remainder;
n /= 10;
}
// palindrome if orignalN and reversedN are equal
if (originalN == reversedN)
printf("%d is a palindrome.", originalN);
else
printf("%d is not a palindrome.", originalN);
return 0;
}
Говорят что на С++ это выглядит вот так:
#include
using namespace std;
int main()
{
int n, num, digit, rev = 0;
cout << "Enter a positive number: ";
cin >> num;
n = num;
do
{
digit = num % 10;
rev = (rev * 10) + digit;
num = num / 10;
} while (num != 0);
cout << " The reverse of the number is: " << rev << endl;
if (n == rev)
cout << " The number is a palindrome.";
else
cout << " The number is not a palindrome.";
return 0;
}
Да и на Java не проще:
class PalindromeExample{
public static void main(String args[]){
int r,sum=0,temp;
int n=454;//It is the number variable to be checked for palindrome
temp=n;
while(n>0){
r=n%10; //getting remainder
sum=(sum*10)+r;
n=n/10;
}
if(temp==sum)
System.out.println("palindrome number ");
else
System.out.println("not palindrome");
}
}
Всё это решение одной задачи на разных языках. И на это чертовски страшно смотреть. Теперь посмотрим, что нам предлагает Питон.
Сразу применим небольшою хитрость. Число, которое мы хотим проверить, будет вводится как строка:
num = str(1232)
Затем мы его просто переворачиваем и даём ему новое имя:
num_test = num[::-1]
Теперь осталось только сравнить:
if num == num_test:
print("Is a palindrome")
else:
print("Is NOT a palindrome")
Полный код:
num = str(1232)
num_test = num[::-1]
if num == num_test:
print("Is a palindrome")
else:
print("Is NOT a palindrome")
А теперь тоже самое запишем в две строки:
num_test = int(str(num)[::-1])
print(("Is NOT a palindrome", "Is a palindrome")[num == num_test])
Строка 1 - вводимое число преобразуется в строку, переворачивается, заново преобразуется в строку и ему приписывается новое имя.
Строка 2 - If ... esle - тернарный оператор - подробнее в моём блоге.
Всё, и не надо пугать людей.
Всем добра!!
Слушай, очень круто!!!!!
ОтветитьУдалить