Сегодня решил зайти на свою старую почту и за полгода накопилось столько спама. Какая-то Регина поняла, что я ее принц и скинула ссылку на какой-то интимный ресурс. Danilka_44 (что говорит о том, что это парень) нашла меня тоже на каком-то фейковом сайте и т.п. спам (в полной части скину скрины).
Но, среди этого всего хлама, я наткнулся на интересное письмо.
Написали мне 1-го апреля, а зашел на почту только сегодня. Признаюсь честно, но я не помню, что писал этой компании. Не подумайте, что похвастаюсь тем, что компании мне пишут сами. Если бы...
Когда был на втором курсе, я перешел на заочное отделение и начал искать работу на HeadHunter, JobRu и т.п., возможно там и подавал резюме, кто помнит :). В прочем, не важно.
Само письмо меня заинтересовало не только тем, что компания под названием «Лайтсофт» мне предложила работу PHP-программиста (удаленно). А именно тестом, который они мне дали. Я не скажу, что он мега-овер-крутой и сложный, а я такой, типа, умный тру-программист выполнил все задания.
Больше всего мне понравилось последнее задание:
Написать программу на php, которая определяет является ли строка текста палиндромом (читается с обеих сторон одинаково) и осуществляет вывод строки следующим способом: а) если строка является палиндромом, то она выводится полностью; б) если строка не является палиндромом - выводится самый длинный подпалиндром этой строки, т.е. самая длинная часть строки, являющаяся палиндромом; в) если подпалиндромы отсутствуют в строке - выводится первый символ строки.
В университете я делал подобное на C++, но, только с числами. У нас была преподавательница, которая меня очень сильно бесила, вот она и придумывала такие задания. В те годы, для меня это была тяжелая задача, ибо я только поступил в университет и тут надо делать такое. Самое тяжелое было то, что я не знал C++, только Delphi (Object Pascal). Благодаря Delphi, я хоть немного понимал логику синтаксиса C++ (даже учитывая то, что у Delphi и C++ почти ничего схожего).
К сожалению, я по своей глупости не сохранил тест. Но, выложу вопросы которые там были в конце статьи.
Говоря уже о самом задании, вроде я с ними справился. Но, со SQL у меня слабовато, вероятно там допустил ошибки. Последнее задание я хотел выложить в своем блоге. Может кому-нибудь пригодится.
Мне лень описывать подробно как работает моя функция, ибо на часах почти 3 ночи. Данное решение, я выложу на 3 языках программирования: PHP, JavaScript, C#. В качестве практики, я решил вспомнить немного C# и накатал код на этом языке тоже. Думаю разберетесь сами.
P.S.: Кстати, тестировал C# код на онлайн компиляторе CodingGround. Там есть еще много других компиляторов на разные языки.
_28<?php_28_28$text = 'Sum summud mud';_28_28function isPal($text){_28 $text_1 = preg_replace( "'\s'", "", strtolower( $text ) );_28 $text_2 = iconv("windows-1251", "utf-8", strrev(iconv("utf-8", "windows-1251", $text_1)));_28 if ( $text_1 == $text_2 ) return true; else return false;_28]_28_28function Palindrom($text){_28_28 if ( !isPal( $text ) ) {_28_28 $words = explode( " ", $text );_28 $max = "";_28_28 for ($i = 0; $i < count($words); $i++) _28 if ( isPal( $words[$i] ) && strlen( $words[$i] ) > strlen( $max ) ) $max = $words[$i];_28_28 if ( $max ) return $max; else return $text[0];_28_28 } else return $text;_28}_28_28echo Palindrom($text);_28_28?>
_37using System.IO;_37using System;_37_37class Program_37{_37_37 public static bool isPal(string text) {_37 string text_1 = text.Replace(" ","").ToLower();_37 char[] arr = text_1.ToCharArray();_37 Array.Reverse(arr);_37 string text_2 = new string(arr);_37 if ( text_1 == text_2 ) return true; else return false;_37 }_37_37 public static string Palindrome(string text){_37_37 if ( !isPal( text ) ) {_37_37 string[] words = text.Split(' ');_37 string max = "";_37_37 for (int i = 0; i < words.Length; i++) _37 if ( isPal( words[i] ) && words[i].Length > max.Length ) max = words[i];_37_37 if ( !String.IsNullOrEmpty(max) ) return max; else return text[0].ToString();_37_37_37 } else return text;_37_37 }_37_37 static void Main()_37 [_37 string text = "Sum summus mud";_37 Console.WriteLine( Palindrome(text) );_37 ]_37]
_24var text = 'Sum summud mud';_24_24function isPal(text){_24 var text_1 = text.replace(" ", "").toLowerCase();_24 var text_2 = return text_1.split("").reverse().join("");_24 if ( text_1 == text_2 ) return true; else return false;_24}_24_24function Palindrom(text){_24_24 if ( !isPal( text ) ) {_24_24 var words = text.split(" ");_24 var max = "";_24_24 for (var i = 0; i < words.length; i++) _24 if ( isPal( words[i] ) && words[i].length > max.length ) max = words[i];_24_24 if ( max ) return max; else return text[0];_24_24 } else return text;_24}_24_24alert(Palindrom(text));
Дано:
table .c { color: red } .a .c { color: green } <table id="t"> <tr> <td class="c">Текст</td> </tr> </table>
Задача: написать JavaScript код, делающий "Текст" зелёным, предложите как минимум три варианта (можно больше) (1-2 могут использовать JS библиотеки) только самого кода (копировать задание в ответ не нужно).
Дана таблица с деревом категорий CREATE TABLE category ( id integer not null primary key, parent_category id integer references category(id), name varchar(100) not null ); Напишите запросы (БД - “правильная”, умеющая делать подзапросы, различные соединения и прочее): 1. На выборку всех категорий верхнего уровня, начинающихся на “авто” 2. На выборку всех категорий, имеющих не более трёх подкатегорий следующего уровня (без глубины) 3. На выборку всех категорий нижнего уровня (т.е. не имеющих детей) Напишите индексы, которые позволят сделать эти запросы быстрее.
Дана строка текста. Написать программу на php, которая определяет является ли строка текста палиндромом (читается с обеих сторон одинаково) и осуществляет вывод строки следующим способом: а) если строка является палиндромом, то она выводится полностью; б) если строка не является палиндромом - выводится самый длинный подпалиндром этой строки, т.е. самая длинная часть строки, являющаяся палиндромом; в) если подпалиндромы отсутствуют в строке - выводится первый символ строки. Примеры палиндромов: - Аргентина манит негра - Sum summus mus
А вот и сами письма которые я хотел выложить в конце статьи :)