Вступление
Ваша задача сегодня (вдохновленная этой задачей ) состоит в том, чтобы написать несколько фрагментов, функций или полных программ, каждая из которых выводит различные смайлики ascii, без повторного использования символов.
Вызов
Список действительных смайликов ascii для этой задачи находится здесь и в блоке кода внизу этого поста.
Каждый фрагмент должен быть на отдельной строке в вашем представлении.
Вы можете использовать только один язык для всех фрагментов.
Каждый фрагмент должен либо выводить в stdout, либо возвращать строку, содержащую смайлик и необязательную завершающую новую строку, и ничего больше .
Вы не можете использовать какой-либо символ более одного раза во всех фрагментах, однако использование символа несколько раз в одном фрагменте - это нормально.
Вы не можете использовать любой символ, отсутствующий в кодовой странице вашего языка (или ascii, если ваш язык не использует пользовательскую кодовую страницу) ни в одном из фрагментов. Другими словами, вы ограничены только символами, которые могут быть закодированы одним байтом.
Никакой фрагмент не может принимать никакой информации.
Стандартные лазейки запрещены.
Ваша оценка - это количество уникальных фрагментов, каждый из которых печатает свой смайлик ascii в текстовом файле выше.
Самый высокий балл побеждает!
Удачи!
Разрешенные смайлики, разделенные пробелом:
:-) :) :-] :] :-3 :3 :-> :> 8-) 8) :-} :} :o) :c) :^) =] =) :-D :D 8-D 8D x-D xD X-D XD =D =3 B^D :-)) :-( :( :-c :c :-< :< :-[ :[ :-|| >:[ :{ :@ >:( :'-( :'( :'-) :') D-': D:< D: D8 D; D= DX :-O :O :-o :o :-0 8-0 >:O :-* :* ;-) ;) *-) *) ;-] ;] ;^) :-, ;D :-P :P X-P XP x-p xp :-p :p :-b :b d: =p >:P :-/ :/ :-. >:\ >:/ :\ =/ =\ :L =L :S :-| :| :$ :-X :X :-# :# :-& :& O:-) O:) 0:-3 0:3 0:-) 0:) 0;^) >:-) >:) }:-) }:) 3:-) 3:) >;) |;-) |-O :-J #-) %-) %) :-###.. :###.. <:-| ',:-| ',:-l <_< >_>
РЕДАКТИРОВАТЬ: Извинения, был символ Unicode в одном из смайликов, которые я пропустил. С тех пор я удалил смайлик, содержащий его. Надеюсь, это не доставит слишком много неудобств.
источник
Ответы:
Ленгуаг , 131
Я поместил все смайлики, которые я представляю, в формат, в
<emoticon> <byte> <length>
котором программа<byte>
повторяется<length>
.источник
×
!Хаскелл , 3
Вот начало решения Haskell.
XD
Попробуйте онлайн!
Это просто обычная строка, в которой используются символы
"xD
:]
Попробуйте онлайн!
Это строка, не содержащая аргументов, с использованием аргументов cons для создания списка символов. Он использует смайлик,
:]
потому что оба:
и]
уже используются. В общей сложности это использует символы':][
.8)
Попробуйте онлайн!
Здесь вещи начинают становиться немного интереснее. Так как нам нужен способ сделать строку без символов
"
или'
мы используемshow
функцию.show
берет что-то показное и делает из него строку Здесь мы показываем кортеж(88,8,8,8)
. В частности, это в кортеже заканчивается8)
той строкой, которую мы хотим, поэтому мы8
удаляем первые символы из строки, используяdrop 8
. Уникальные символы в этом решенииdrop 8(shw,)
Если бы мы могли найти какой-то другой способ сделать
Char
s, я бы, вероятно, смог сделать 4-й.mempty
, можно использовать вместо[]
ответа 2, и есть способы извлечь,
из ответа 3.источник
chr
сData.Char
, превратить каждый символ в строку с:[]
и затем++
их все вместе.Древесный уголь, 10
Это только те, которые я могу сделать без использования
cat
способности, подобной Charcoal , которая позволила бы мне добавлятьXP
и|-0
.Попробуйте их онлайн! Я добавил
D⎚
команды для разделения фрагментов, которые сортируют их, хотя это и не идеально, так как код должен быть на одной строке. Объяснение:←
Вызывает строковый литерал)%
, печатаемые влево , т.е. обращенный.Код символа для
:
58. Код characer для(
5 умножен на 8. (Они оба здесь отменяются на случай, если позже мне понадобится разделитель.):
Является буквальным.¹
Печатает линию длиной 1 по горизонтали, что это просто-
.↓
Вызывает вторую линию , которая будет напечатана вертикально, что дает|
.⮌
Переворачивает строковый литерал];
.<_
Является строка символов , и‖O
приводит к тому ,<
чтобы отражаться на другой стороне_
.=
Является строковым и↗÷χχ
рисует линию длиной 10/10 т.е. 1 по диагонали, то есть/
.Числа
9-1
и0
преобразуются в строку и, таким образом, печатаются как цифры, в то время0
как посередине логически отрицается, превращая его в1
другой способ печати a-
. (И я даже еще не использовал это как буквальный!)Это берет строковый литерал
D^B
и преобразует его в массив, который обычно печатается вертикально, однако направление печати переопределяется на вертикальное, что приводит к ... обратному выводу снова!Это ищет символы в позициях 3 и 23 в верхнем регистре алфавита (с 0 индексами).
В
↶⁴
вращает направление печати на 180 ° , таким образом , вызывая строковый литерал ,px
чтобы быть распечатано отменено еще раз.источник
↶⁴px
когдаxp
будет работать так же хорошо.Желе , 6
+1 впереди ?? Дилнан предложил использовать
ṭ
для освобожденияȮ
, но можно ли это использовать?Шесть полных программ:
;] xp ; D : 0 XP 8-0
“;]
⁾xp
⁽8Ạb⁹Ọ
”:®ṭ
24,16ịØA
7‘.NṾṖ⁺
Используется 31 байт, подтверждение здесь .
источник
”:ṭ@¬
позволит вам использоватьȮ
в другой программе”:®ṭ
тоже короче.0”:0
работает слишком освобождая тактику-
.¶
и символ новой строки отображается на один и тот же байт).Руби , 7
= \ Попробуйте онлайн! Строковый литерал
> _> Попробуйте онлайн! Еще один строковый литерал
: p Попробуйте онлайн! Печатает
:p
символ, включая синтаксис (:
), так как он используетp
метод%) Попробуйте онлайн! Еще один строковый литерал
XP Попробуй онлайн! Здесь обозначение документа (в основном многострочный строковый литерал)
;] Попробуйте онлайн! Массив из 2 символов (
':'
и']'
), соединенный с'-'
D8 Попробуйте онлайн! Исходная строка регулярного выражения
__
Похвальное упоминание Попробуйте онлайн! Выполняет код в bash, возвращает
emoticon
трейлинг\n
источник
Python 2, 4
Этот ответ - довольно простое начало. Для первых двух мы просто используем два разных строковых синтаксиса Python. Для третьего мы используем тот же метод, что и в моем ответе на Haskell, где мы заставляем кортеж получить его строковое представление и нарезать его на части. В последней части мы используем
chr
функцию , чтобы символы:
и)
добавить их вместе.XD
знак равно
8)
:)
источник
=/
.R , 4
Попробуйте онлайн!
Первая попытка R решения. Необходимость использования скобок для любого вызова функции серьезно уменьшает возможности. Первый фрагмент - это вызов,
quote
который просто возвращает свой аргумент - спасибо @BLT за то, что он показал мне способ сделать это без скобок, что позволило мне использоватьintToUtf8
следующую строку.Я использовал другой трюк, который @Giuseppe упомянул в комментарии к другому вопросу, чтобы записать
quote
безo
иt
.источник
mtcars[4,5]
), но пока без кубиков.intToUtf8
и т. Д.), Использовать скобки.+
= quote; + XP, чтобы освободить скобки? (не уверен, как заставить его отображаться без форматирования Markdown - + окружен черточками)Деление , 3
| ;-)
Попробуйте онлайн!
XP
Попробуйте онлайн!
: о
Попробуйте онлайн!
Есть только 3 способа вывести что-то в Fission, поэтому здесь мы
источник
Perl 5, 6
:-)
:)
: -3
знак равно
B ^ D
XP
Попробуйте онлайн .
источник
Javascript, 5
Три тривиальных, потом два интересных:
XD
XP
<_ <
: 3
Никаких символов для строковых литералов не осталось для четвертого, поэтому мы получаем строки путем конкатенации с массивом. Двоеточие происходит от написания функции, которая использует двоеточие, а затем преобразует ее в строку.
8)
Этот работает очень похоже на четвертый, но использует немного другие методы, чтобы сделать все.
Спасибо @ steve-bennett за предложение использовать
String
конструктор и.slice
как альтернативу объединению с массивами и индексации. Удалось выжать из него +1 очко.источник
String.fromCharCode(58)+String.fromCharCode(91)
вероятно, будет более простой версией последнего.String(D=>1).slice(0,2)
/>_>/.source
new RegExp().toString().substring(3,5)
[((new Date)+[]).charAt(18), ~2].join(name)
0+String(-3)