Напишите, пожалуйста, программку, которая составляет из цифр введённой строчки число-палиндром

Напишите, пожалуйста, программку, которая сочиняет из цифр введённой строки число-палиндром наибольшей длины (которое читается одинаково слева вправо и справа влево). Если таких чисел несколько, необходимо вывести малое из их. Все имеющиеся числа использовать не обязательно, но количество цифр в ответе обязано быть очень возможным. Язык программирования Паскаль
Входная строчка содержит числа (по последней мере, одну) и, вероятно, иные знаки.
Программка обязана вывести число-палиндром наибольшей длины, которое можно составить из цифр входной строчки.

Образцы
Входные данные
for i:=99921 downto 2
Выходные данные
29192

Задать свой вопрос
2 ответа

PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018

Внимание! Если программка не работает, обновите версию!

begin

 var s := ReadlnString;

 var s1 := s.Where(t -gt; t in ['0'..'9']).Sorted.GroupBy(t -gt; t)

     .Select(c -gt; (c.Key, c.Count)).OrderBy(t -gt; t[0]).ToArray;

 var s2 := s1.Where(t -gt; t[1] gt; 1).Select(t -gt; t[0] * (t[1] div 2))

     .JoinIntoString('').Replace('0', '');

 var s3 := s1.Where(t -gt; t[1] = 1);

 if s3.Count gt; 0 then s2 := s2 + s3.Select(t -gt; t[0]).First + s2.Inverse

 else s2 := s2 + s2.Inverse;

 s2.Println

end.

Пример

for i:=99921 downto 2

29192

program RawTcherv;

 

function IncPost(var I:integer):integer;

begin

 Result:=I;

 Inc(I);

end;

 

// из знаков 1...9 из входной строчки составить палиндром с минимальным значением

function MakeMinPalindromeMaxLength(const S:string):string;

var

 A:array[1..9] of byte;

 I,J,Fino,Cur,Center:integer;

begin

 FillChar(A%H-,sizeof(A),0);

 // вычисляем количество различных цифр, встреченных во введённой строке

 For I:=1 to Length(S) do

   if S[I] in ['1'..'9'] then

     Inc(A[ord(S[I])-ord('0')])

   else

     break;

 // наибольшая длина палиндрома одинакова длине строчки

 Cur:=1;

 Center:=-1;

 SetLength(Result,Length(S));

 // сочиняем палиндром. В начало вставляем половину всех цифр от мин. к макс.

 For I:=1 to 9 do begin

   // поиск малого числа, которое можно воткнуть в центр

   if (A[I] mod 2=1) and (Centerlt;0) then

     Center:=I;

   // вставляем в начало строки половину знаков

   Fino:=A[I] div 2;

   For J:=1 to Fino do

     Result[IncPost(Cur)]:=chr(I+ord('0'));

   // оставшуюся половину вставим позже

   A[I]:=Fino;

 end;

 // вставляем центральный знак

 if Centergt;0 then

   Result[IncPost(Cur)]:=chr(Center+ord('0'));

 // вставляем в обратном порядке знаки палиндрома

 For I:=9 downto 1 do begin

   For J:=1 to A[I] do

     Result[IncPost(Cur)]:=chr(I+ord('0'));

 end;

 // восстанавливаем длину строчки

 SetLength(Result,Cur-1);

end;

 

procedure Test(const S:string);

var

 S1:string;

begin

 S1:=MakeMinPalindromeMaxLength(S);

 Writeln('Orig=',S);

 Writeln('Pal =',S1);

 Writeln('Diff=',Length(S)-Length(S1));

 Writeln;

end;

 

begin

 Test('9998888776665432111');

 Readln;

end.

Danka Adlerov
Повеситься можно....
Вощило Нелли
Ага
Элина Абдыбалиева
Но мы так делалиъ
Коля Эрзин
Я напишу пократче)))
Алина Шишнина
У Вас, я так разумею, процедура для Delphi написана, раз FillChar(A%H-,sizeof(A),0); обозначено? Вы бы хоть намекнули где-то...
Виталик Прикоп
А еще, может я чего не сообразил, но для приведенного образца со строчкой for i:=99921 downto 2 Ваша программка не отдаёт ничего.
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо

Разные вопросы.

Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных

Разные вопросы.

Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей

Математика.

Определить предложения какие они по цели высказывания и по интонации

Русский язык.

"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.

Русский язык.

на одной грядке коротышки посадили 3 ряда морковок по 8 штук

Разные вопросы.

эссе на тему какое образование дается в каждой семье

Қазақ тiлi.

Put the verb in brackets into the Present Indefinite. 1The Volga ,

Английский язык.

Сколько стоит коктейль молочный? Точную цену надо?

Математика.

Составить рассказ Из чего складывался культ монарха помазанника Божьего?

История.

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт