За последние 24 часа нас посетили 22427 программистов и 1159 роботов. Сейчас ищут 733 программиста ...

Сравнение двух строк

Тема в разделе "Сделайте за меня", создана пользователем Abandoned, 16 окт 2019.

  1. Abandoned

    Abandoned Новичок

    С нами с:
    11 окт 2019
    Сообщения:
    2
    Симпатии:
    0
    В тз не понимаю как сделать формат входных данных:


    Вам даются две строки A и B.
    Вам нужно преобразовать строку A в два шага:
    – Сделать некоторые маленькие буквы большими,
    – Удалить оставшиеся маленькие буквы, так, чтобы получить в итоге строку B.
    Задание: Допишите реализацию функции abbreviation. Для каждого тестового случая выведите "YES", если возможно преобразовать строку A в строку B и "NO", если невозможно.

    Формат входных данных:
    В первой строке записано целое число T – количество тестовых случаев.
    В следующих 2*T строках содержится описание тестов.

    Первая строка содержит A. Вторая строка содержит B.
    Ограничения:
    1 ≤ T ≤ 10
    1 ≤ |A|,|B|≤ 1000
    –Строка A состоит из маленьких и больших латинских букв
    – Строка B состоит из больших латинских букв

    Формат выходных данных: Вывести на экран "YES" или "NO".

    Пример:

    Входные данные:
    1
    daBcd
    ABC

    Выходные данные:
    YES
    Решение:
    daBcd->dABCd->ABC.

    мой говнокод:
    function abbreviation($a, $b) {
    if(strripos($a,$b) === false){
    echo 'NO';
    } else{
    echo 'YES <br>';
    $answer_One = $a[mt_rand(0,strlen($a))];
    $answer_One = str_ireplace($answer_One,strtoupper($answer_One),strtolower($a));
    $answer_Two = str_ireplace($b,strtoupper($b),strtolower($answer_One));
    $answer_Three = preg_split('/[a-z]/',$answer_Two);
    $answer_Three = implode('',$answer_Three);
    echo 'Решение:<br>';
    echo $answer_One.'->'.$answer_Two.'->'.$answer_Three;
    }
    }
    abbreviation('ZYTFcxc','YTF');// YES Решение: Zytfcxc->zYTFcxc->YTF
     
    #1 Abandoned, 16 окт 2019
    Последнее редактирование: 16 окт 2019
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. <?php
    2. $a = 'daBcd';
    3. $b = 'ABC';
    4.  
    5. $result = abbreviation($a, $b);
    6. echo $result;
    7.  
    8. function abbreviation ($a, $b)
    9. {
    10.   preg_match("/{$b}/i", $a, $matches);
    11.  
    12.   if( count($matches) > 0)
    13.   {
    14.     $b = str_ireplace($matches[0], $b, $a);
    15.     $c = preg_replace("/[a-z]/", "", $b);
    16.     return "YES {$a}->{$b}->{$c}";
    17.   }
    18.   else
    19.   {
    20.     return "NO";
    21.   }
    22. }
     
    #2 Artur_hopf, 16 окт 2019
    Последнее редактирование: 16 окт 2019
  3. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    Код (Text):
    1. <?php
    2.  
    3. function abbreviation($filename, $outputfilename)
    4. {
    5.     // все строки из файла грузим как массив
    6.     $input_array = file($filename);
    7.  
    8.     // число строк для сравнения, указанных в файле
    9.     $rows_count = (int)$input_array[0];
    10.  
    11.     // фактическое число строк для сравнения (тут имеем ввиду строку с разным регистром букв
    12.     // и след. за ней строку в верхнем регистре)
    13.     $fact_rows_count = (count($input_array) - 1) / 2;
    14.  
    15.     // если кол-во строк в файле меньше 1 или больше 10
    16.     // если кол-во строк нечетно
    17.     // если кол-во строк указанное в файле (в первой строке), не равное их фактическому кол-ву
    18.     if ($rows_count < 1 || $rows_count > 10 || ($rows_count % 2) == 2 || $rows_count != $fact_rows_count) {
    19.         throw new Exception("Число тестовых случаев некорректно");
    20.     }
    21.  
    22.     $search_string = "";
    23.     foreach ($input_array as $index => $item) {
    24.         if ($index == 0) {
    25.             continue;
    26.         }
    27.  
    28.         // первая строка, в ней мы должны сделать разные буквы маленькими и большими в случайном порядке
    29.         if (($index % 2) == 1) {
    30.             $search_string = randomizeCase($item);
    31.         }
    32.  
    33.         if (($index % 2) == 0) {
    34.             if (mb_strtoupper($item) != $item) { // проверяем, все ли буквы в верхнем регистре
    35.                 echo $item, PHP_EOL;
    36.                 throw new Exception("Строка, которая должна быть в верхнем регистре содержит маленькие буквы");
    37.             }
    38.  
    39.             $answer = mb_strpos($search_string, $item) ? 'YES' : 'NO';
    40.             file_put_contents($outputfilename, $answer . PHP_EOL, FILE_APPEND);
    41.  
    42.             echo $search_string, $item, PHP_EOL;
    43.         }
    44.     }
    45.  
    46. }
    47.  
    48. function randomizeCase(string $str)
    49. {
    50.     for ($i = 0, $c = strlen($str); $i < $c; $i++) {
    51.         $str[$i] = (rand(0, 100) > 50
    52.             ? strtoupper($str[$i])
    53.             : strtolower($str[$i]));
    54.     }
    55.  
    56.     return $str;
    57. }
    58.  
    59. abbreviation("input.txt", "output.txt");
     
  4. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    Забыл добавить входной файл input.txt и полученный результирующий файл

    Input.txt - содержимое файла
    3
    afhlKsc
    XSC
    ioJsasD
    SAS
    laksdkd
    SDK

    Output.txt - содержимое файла
    NO
    NO
    YES

    Процесс выполнения скрипта
    [​IMG]
     

    Вложения:

    • input.txt
      Размер файла:
      43 байт
      Просмотров:
      1
    • output.txt
      Размер файла:
      13 байт
      Просмотров:
      1
    • 1.png
      1.png
      Размер файла:
      7,6 КБ
      Просмотров:
      19
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
  6. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    Я это для ТС, чтобы было нагляднее.
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @kazadai90 а пардон, я думал вы ТС =)