Создайте толпу подозрительно счастливых лиц Ленни (͡ ° ͜ʖ ͡ °)


25

Я проходил странную тему в Reddit и наткнулся на это:

(͡ ° (͡ ° ͜ʖ (͡ ° ͜ʖ ͡ °) ʖ ͡ °) ͡ °)

Он представляет группу людей, которые несколько подозрительно улыбаются.

(Однако в приведенном ниже задании пробелы слева от правого глаза как-то упали, пока я писал задание. Обратите внимание на спецификацию).


Ваша цель состоит в том, чтобы создать группу улыбающихся лиц Ленни nглубоко по следующим правилам:

  1. На первой глубине ( ͡° ͜ʖ ͡°)отображается анфас ( ).
  2. На глубине два показаны половинки. С левой стороны изображено чуть более половины лица ( ( ͡° ͜ʖ). Тем не менее, справа показана правая сторона, а рот опущен ( ʖ ͡°))
  3. Более глубокие, и только стороны головы и глаз показаны ( ( ͡°и ͡°). Между глазом и левой стороной головы есть промежуток, но, несмотря на видимости, с правой стороны нет пробелов. Интервал обусловлен ͡символом, который немного портит вещи.

Входные данные:

  • n, показывая, сколько слоев глубоких граней, чтобы показать.
  • nвсегда будет в диапазоне 0 <= n <= 500. Вы не обязаны обрабатывать что-либо за пределами этого диапазона.
  • nможет быть смещено на 1, так что 0 означает одну грань, а не грани. Вы должны будете обработать -1 тогда, хотя.

Выход:

  • Строка или массив символов, или что-либо удаленно сопоставимое (например, список односимвольных строк в Python / Javascript). Это может также быть напечатано непосредственно. Задний пробел в порядке.

Вы можете отправить полную программу или функцию.


Так как трудно понять, какие персонажи участвуют, вот это изложено в Python:

>> [ord(c) for c in '( ͡° ͜ʖ ͡°)']
[40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41]

>> [ord(c) for c in '( ͡°( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°)͡°)͡°)']
[40, 32, 865, 176, 40, 32, 865, 176, 40, 32, 865, 176, 32, 860, 662, 40, 32, 865, 176, 32, 860, 662, 32, 865, 176, 41, 662, 32, 865, 176, 41, 865, 176, 41, 865, 176, 41]

Тестовые случаи:

face_crowd(0)
''

face_crowd(1)
'( ͡° ͜ʖ ͡°)'

face_crowd(2)
'( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°)'

face_crowd(5)
'( ͡°( ͡°( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°)͡°)͡°)͡°)'

face_crowd(10)
'( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)'

face_crowd(500)
'( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)͡°)'

Вот необычайно наивная рекурсивная справочная реализация (размещена на моем Github). Я старался сделать это как можно более простым для ясности; но есть много дублирования

Я опубликовал это внешне, потому что я хотел обернуть его в спойлер на тот случай, если люди не хотят видеть ссылку, но это усложняет копирование кода. Я полагаю, что на самом деле это не важно для задачи, так что это не имеет большого значения, если она закончится, я могу вставить ее здесь, если она будет сочтена важной.


Это код-гольф, поэтому выигрывает наименьшее количество байтов на каждом языке.


11
Это выглядит еще более подозрительно, когда отображается на TIO. : p
Арнаулд

Спецификация и контрольные примеры кажутся несовместимыми; спецификация имеет пробел в начале правой части последних глубин, в то время как в тестовых примерах этого нет.
tjjfvi

@ Arnauld Ого. Да, везде кажется, что это немного по-другому.
Carcigenicate


1
@Arnauld Я тоже люблю URL-издание: -͡-͜ʖ-͡,
говорит

Ответы:


14

Haskell , 89 87 80 байт

7 байт благодаря xnor

(!!)$"":x:iterate(4#8)(7#6$x)
x="( ͡° ͜ʖ ͡°)"
(a#b)y=take a x++y++drop b x

Попробуйте онлайн!

Для начала мы назначим (͡ ° ͜ʖ ͡ °) строку xдля удобства.

x="( ͡° ͜ʖ ͡°)"

Затем мы строим список ответов и индексируем его, чтобы найти решение. Это делается путем жесткого кодирования первых двух ответов в качестве первых двух элементов списка, а затем итерации функции, которая добавляет первые 4 символа и последние 4 символа вперед и назад строки через третий ответ.

(!!)$"":x:iterate(4#8)(7#6$x)

У нас также есть специальная функция, (#)которая добавляет указанное количество (͡ ° ͜ʖ ͡ °) к передней и задней части строки:

(a#b)y=take a x++y++drop b x

8

JavaScript (ES6), 66 байт

f=n=>n?"( ͡°"+(--n>1?f(n):" ͜ʖ"+(n?f(n)+"ʖ ":" "))+"͡°)":""

Попробуйте онлайн!

Или попробуйте следующий фрагмент кода для лучшего рендеринга.

комментарии

В следующем коде мы используем набор символов "eEMN"(бровь, глаз, рот и нос соответственно), чтобы сохранить форматирование.

f = n =>           // f is a recursive function taking the number n of remaining
                   // faces to draw
  n ?              // if n is greater than 0:
    "( eE" + (     //   append the left cheek + a space + the left eye
      --n > 1 ?    //   decrement n; if it's still greater than 1:
        f(n)       //     append the result of a recursive call
      :            //   else (n = 0 or 1):
        "MN" + (   //     append the mouth and the nose
          n ?      //     if n = 1:
            f(n)   //       append the result of a recursive call
            + "N " //       followed by the nose + a space
          :        //     else (n = 0):
            " "    //       append a space and stop recursion
        )          //
    )              //
    + "eE)"        //   append the right eye + the right cheek
  :                // else:
                   //   the special case n = 0 is reached only if the original
    ""             //   input is 0; just return an empty string


6

Excel, 85 байт

=IF(A1>1,REPT("( ͡°",A1-1)&" ʖ( ͡° ͜ʖ ͡°)ʖ "&REPT("͡°)",A1-1),REPT("( ͡° ͜ʖ ͡°)",A1))

Наивное решение для n>1. Второе повторение требуется для обработки 0теста.


Вам нужно последнее REPT?
Нил

Последнее REPTтребуется для рассмотрения 0дела.
Верниш

5

Сетчатка 0.8.2 , 56 байт

.+
$*< $&$*>
 >>
 >ʖ >
<(?=<? )
< ͜ʖ
<
( ͡°
>
͡°)

Попробуйте онлайн! Объяснение:

.+
$*< $&$*>

Создайте щеки, но используйте <s и >s, потому что (s и )s должны быть указаны в кавычках. Пространство посередине заканчивается между носом среднего человека и левым глазом.

 >>
 >ʖ >

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

<(?=<? )
< ͜ʖ

Добавьте рот и нос человеку посередине и мужчине справа, если есть. Мы не видим левого глаза человека справа от него, поэтому ему не нужно пространство, и мы дали человеку в середине пространство на первой сцене.

<
( ͡°

Исправьте правильные щеки и добавьте правильные глаза.

>
͡°)

Зафиксируйте левые щеки и добавьте левые глаза.


1
@Arnauld Фу, это заняло у меня некоторое время, но я думаю, что мне удалось исправить это только для одного дополнительного байта!
Нил


4

Сообщите 7 , 262 байта

To say x:say "[Unicode 865][Unicode 176]".
To say y:say Unicode 860.
To say z:say Unicode 662.
To say p (N - number):say "( [x][p N minus 1][x])".
To say p (N - 2):say "( [x] [y][z][p 1][z][x])".
To say p (N - 1):say "( [x] [y][z] [x])".
To say p (N - 0):say "".

Это использует перегрузку функции Inform 7: будет выполняться самая специфическая перегрузка, и функция, которая принимает число (любое целое число) в качестве аргумента, менее специфична, чем функция, которая принимает число два (и только два) в качестве аргумента. ,

Есть некоторые повторяющиеся фрагменты текста, такие как «([x]», которые потенциально могут быть абстрагированы как собственные функции - но I7 настолько многословен, определение новой функции занимает больше байтов, чем это сохранит! Единственные места, определяющие Похоже, что новая функция сохраняет байты для символов, не относящихся к ASCII, поскольку синтаксис для их печати является даже более подробным, чем синтаксис для определений функций.

Boilerplate для запуска этого:

Foo is a room. When play begins: say p 7.

Замените 7 неотрицательным целым числом по вашему выбору.


Приятно видеть ответ Inform!
Камбала

3

Stax , 42 байта

ü/┐▐Φd¬•U►^τ∩█┴êZ3↔uº'µ3ó(▀◄Ü▒iÇÆ'[∞_¥▄>A√

Запустите и отладьте его

Я думаю, что это не работает в Firefox в Windows. Но это только потому, что шрифтом FF по умолчанию для моно-пространства является Courier, который, кажется, не поддерживает эти причудливые модификаторы Unicode или что-то еще. Я думаю.


3

C ++ (gcc) , 102 байта

#include <string>
std::string f(int n){return n?"( ͡°"+(--n>1?f(n):" ͜ʖ"+(n?f(n)+"ʖ ":" "))+"͡°)":"";}

Попробуйте онлайн!

Бесстыдный порт арнаульдского решения JavaScript.


1
Может быть, вы должны включить #include <string> # 103
AZTECCO

Действительно, спасибо за напоминание :)
Г. Слипен

Предлагаю #import<map>вместо#include <string>
потолок кошка



2

Java 7, 133 90 89 байт

String f(int n){return--n<0?"":"( ͡°"+(n>1?f(n):" ͜ʖ"+(n>0?f(n)+"ʖ ":" "))+"͡°)";}

Порт @ Arnauld рекурсивный ответ JavaScript , так как он короче, чем моя первая первая попытка использования лямбды Java 8+.

Попробуйте онлайн.

Объяснение:

String f(int n){               // Recursive method with integer parameter & String return-type
  return--n                    //  Decrease the input by 1 first
           <0?                 //  And if the input is now -1:
              ""               //   Return an empty string
             :                 //  Else:
             "( ͡°"             //   Return the left part of Lenny's face
             +(n>1?            //   And if the modified input is larger than 1:
                   f(n)        //    Append a recursive call with this now decreased input
                  :            //   Else (the input is here either 0 or 1):
                   " ͜ʖ"        //    Append Lenny's nose
                   +(n>0?      //    And if the input is larger than 0 (thus 1):
                         f(n)  //     Append a recursive call
                         +"ʖ " //     As well as the right part of its nose
                        :      //    Else (thus 0):
                         " "   //     Append a space instead
            ))+"͡°)";}          //   And also append the right part of Lenny's 



1

Древесный уголь , 41 байт

NθP⭆θ✂ʖ ͡°)⊗‹¹ι←⭆θ✂ʖ͜ °͡ (∧‹¹ι³

Попробуйте онлайн! Девербосификатор по какой-то причине пытается заключить в кавычки вторую строку, но это не кажется необходимым, но вот подробная версия, если вы этого хотите. Объяснение:

Nθ

Введите количество лиц.

P⭆θ✂ʖ ͡°)⊗‹¹ι

Напечатайте левые стороны граней (справа от нас, как мы их видим). Они состоят из строки, ʖ ͡°)повторенной до двух раз, а затем эта строка без первых двух символов повторяется оставшееся количество раз.

←⭆θ✂ʖ͜ °͡ (∧‹¹ι³

Напечатайте правые стороны граней (слева от нас, как мы их видим). Они состоят из (перевернутой) строкиʖ͜ °͡ ( повторенной до двух раз, и затем эта строка без первых двух символов повторяется оставшееся количество раз.

Более наблюдательные из вас заметят, что у среднего лица дважды сформирован нос, поэтому я печатаю так, чтобы они перекрывали друг друга.


1

Python 3 , 80 символов, 86 байтов

x='( ͡° ͜ʖ ͡°)'
n=3-1
print(x[:4]*(n-1)+x[:7]*(n!=0)+x+x[6:]*(n!=0)+x[8:]*(n-1))

Попробуйте онлайн!

Чтобы поместить ввод, измените 3 на любой, какой вы хотите, оставив -1 в покое.

Если кто-нибудь знает лучший способ ввода, который уменьшит количество символов, дайте мне знать.

Здесь ничего необычного, только нарезка строк и злоупотребление логическими значениями

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.