За последние 24 часа нас посетили 22588 программистов и 1277 роботов. Сейчас ищут 757 программистов ...

Простая задача.

Тема в разделе "Сделайте за меня", создана пользователем dub13, 15 апр 2017.

  1. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Напиши генератор случайного имени для кошки, собаки, брата или сестры на основе кода ниже.

    PHP:
    1. <?php
    2.  
    3.  
    4. /* Слоги, из которых составляется имя */
    5. $letters = array(
    6.     'ко',   'и',    'дзу',  'ми',
    7.     'са',   'ку',   'ра',   'да',
    8.     'чи',   'а',    'ки',   'ми',
    9.     'на',   'го',   'ха',   'ру'
    10. );
    11.  
    12. /* В эту переменную запишем получившееся имя */
    13. $name = '';
    14.  
    15. /* Гененрируем 4 слога */
    16. for ($i = 1; $i <= 4; $i++) {
    17.     /* Выкидываем случайное число (count - число элементов в массиве) */
    18.     $random = ...;
    19.     $randomText = ...;
    20.  
    21.     echo "Выпало число {$random}, слог {$randomText}\n";
    22.     ....
    23. }
    24.  
    25. echo "------\n";
    26. echo "Советую имя: {$name} - не прогадаешь!\n";
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @dub13 получилось?
     
  3. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Нет. В этот array_rand вообще не въезжаю :(
     
  4. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Я решил !!!!!!:cool:
    PHP:
    1. <?php
    2.  
    3. $letters = array(
    4.     'ko',   'i',    'dzy',  'mi',
    5.     'sa',   'ky',   'ra',   'da',
    6.     'chi',   'a',    'ki',   'mi',
    7.     'na',   'go',   'ha',   'ry'
    8. );
    9.  
    10. for ($i = 1; $i <= 4; $i++) {
    11.  
    12.     $rand = rand(0,count($letters));
    13.     echo $letters[$rand];
    14.  
    15.     }
    16.  
    17. ?>
    Правда с array_rand() до сих пор не разобрался:(
    Надеюсь эта функция редко применяется.
     
  5. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    PHP:
    1. <?php
    2.  
    3.  
    4. $letters = array(
    5.     'ko',   'i',    'dzy',  'mi',
    6.     'sa',   'ky',   'ra',   'da',
    7.     'chi',   'a',    'ki',   'mi',
    8.     'na',   'go',   'ha',   'ry'
    9. );
    10.  
    11. $name = '';
    12.  
    13. for ($i = 1; $i <= 4; $i++) {
    14.  
    15.     $rand = rand(0, count($letters)-1);
    16.     echo 'Chislo '. $rand. ' slog - ';
    17.     echo $letters[$rand];
    18.     echo "<br>";
    19.  
    20.     $name = $letters[$rand];
    21.  
    22. }
    23.  
    24. echo $name;
    25.  
    26. ?>
    Подскажите пожалуйста, как вывести все 4 слога, которые выпали, вместе в отдельной строчке.

    Чтобы получилось, допустим:
    Chislo 8 slog - chi
    Chislo 12 slog - na
    Chislo 0 slog - ko
    Chislo 10 slog - ki

    chinakoki


    И, если это возможно, чтобы первая буква была заглавной.

    Сhinakoki
     
  6. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Почитать про конкатенацию в php и ucfirst()
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @dub13, с ранд довольно все просто, если ты документацию читал.

    PHP:
    1. $letters = array(
    2.     'ко', 'и', 'дзу', 'ми',
    3.     'са', 'ку', 'ра', 'да',
    4.     'чи', 'а', 'ки', 'ми',
    5.     'на', 'го', 'ха', 'ру'
    6. );
    7.  
    8.  
    9. echo array_reduce(array_rand($letters, 4), function($carry, $item) use ($letters) {
    10.     $carry .= $letters[$item];
    11.     return $carry;
    12. });
    Вот один из вариатон реализации твоей задачи.
    --- Добавлено ---
    Получаются какие-то забавные китайские имена.
    --- Добавлено ---
    PHP:
    1. array_rand($letters, 4)
    Тут вторым параметром мы задаем количество выбираемых элементов.
     
    TeslaFeo нравится это.
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    Забавное начинается уже в первой строке темы :D
     
    mahmuzar нравится это.
  9. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Спасибо всем за ответы, но можно решение без использования функций? До этого я еще не дорос :(
    Идеально будет сделать все по образцу:
    upload_2017-4-15_20-49-35.png
    Код: http://codepad.org/mjuhN3fg или http://ideone.com/6RqNUq
    upload_2017-4-15_20-48-54.png
    upload_2017-4-15_20-48-34.png
    Заранее премного благодарен !!! :rolleyes:
     

    Вложения:

  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Ну так там готовое решение, и две встроенные функции для работы с массивами. Переходишь на php.net смотришь доку по этим функциям. )
    Вашпе, вроде у тебя есть уже вариант без использования функций).
    --- Добавлено ---
    @TeslaFeo, клац клац пару раз по кнопке, и готово имя для брата))
     
    TeslaFeo нравится это.
  11. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Есть то оно есть, но полное имя в конце не выдает((
    --- Добавлено ---
    @TeslaFeo, клац клац пару раз по кнопке, и готово имя для брата))

    вот советую, отличное имя
    upload_2017-4-15_21-10-40.png
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    :D
     
  13. dub13

    dub13 Новичок

    С нами с:
    15 апр 2017
    Сообщения:
    22
    Симпатии:
    1
    Я понимаю, что вам наверное насрать, но я сделал!!!! САМ!!!! каефффффф.....
    Спасибо всем за помощь)
    PHP:
    1. <?php
    2.  
    3.  
    4. $letters = array(
    5.     'ko',   'i',    'dzy',  'mi',
    6.     'sa',   'ky',   'ra',   'da',
    7.     'chi',   'a',    'ki',   'mi',
    8.     'na',   'go',   'ha',   'ry'
    9. );
    10.  
    11. $name = '';
    12.  
    13. for ($i = 0; $i <= 3; $i++) {
    14.  
    15.     $rand = rand(0, count($letters)-1);
    16.     echo 'Chislo '. $rand. ' slog - ';
    17.     echo $letters[$rand];
    18.     echo "<br>";
    19.  
    20.     $name[$i] = $letters[$rand];
    21.  
    22.  
    23. }
    24.  
    25. $finally = implode('',$name);
    26. echo 'Ispolzyi ima - '.$finally.'! Ne progadaesh!';
    27.  
    28. ?>
    upload_2017-4-15_21-34-53.png
    Вот бы еще с большой буквы имя сделать... Ну не все сразу ;)
     
  14. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @dub13, сделал через жопу.
    Тебе уже подсказку давали выше) Беда в том, что ты не вникаешь).
    --- Добавлено ---
    PHP:
    1. $letters = array(
    2.     'Ко', 'и', 'дзу', 'ми',
    3.     'са', 'ку', 'ра', 'да',
    4.     'чи', 'а', 'ки', 'ми',
    5.     'на', 'го', 'ха', 'ру'
    6. );
    7.  
    8. /**
    9. * Формат возвращаемых данных:
    10. *
    11. * array (
    12. * 'syllables' =>
    13. * array (
    14. *  3 => 'ми',
    15. *  8 => 'чи',
    16. *  10 => 'ки',
    17. *  11 => 'ми',
    18. * ),
    19. * 'word' => 'Мичикими',
    20. * )
    21. *
    22. * @param array $letters
    23. * @param int  $syllables количество слогов для формирования слова
    24. * @return array массив со слогами и словом
    25. */
    26. function generateName($letters, $syllables) {
    27.     return array_reduce(array_rand($letters, $syllables), function($carry, $item) use ($letters) {
    28.         $carry['syllables'][$item] = $letters[$item];
    29.         if (!isset($carry['word'])) {
    30.             $carry['word'] = mb_convert_case($letters[$item], MB_CASE_TITLE, "UTF-8");
    31.         } else {
    32.             $carry['word'] .= $letters[$item];
    33.         }
    34.         return $carry;
    35.     });
    36. }
    37.  
    38. //Использование
    39. $result = generateName($letters, 4);
    40. foreach ($result['syllables'] as $key => $val) {
    41.     echo "Выпал ключ <b>$key</b> слог <b>$val</b><br>";
    42. }
    43. echo "<br>";
    44. echo "Слово: {$result['word']}";

    Вот законченное решение.
     
  15. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    клац, клац, и сломал брату жизнь по братски ))
     
    mahmuzar нравится это.