Учитывая список целых чисел, создайте логическую маску так, чтобы истинные индексы могли использоваться для фильтрации различных значений из списка. Какой индекс выбран как истинный, не имеет значения, если только один из них выбран для каждого набора индексов, соответствующих одинаковым значениям.
Входными данными будет непустой список неотрицательных целых чисел в формате, подходящем для вашего языка, а выходными данными будет список логических значений в соответствии с приведенной выше спецификацией. Вам разрешено использовать ваши собственные определения истинных и ложных значений в списке вывода.
В моих примерах ниже я определяю, 1
чтобы быть правдивым и 0
быть ложным.
[5, 4, 7, 1] Input
[1, 1, 1, 1] Output
Select only the values with with true indicies in the sieve
[5 4 7 1] Contains zero duplicate values
[5, 9, 7, 5, 6, 0, 5]
[0, 1, 1, 1, 1, 1, 0]
[ 9, 7, 5, 6, 0 ]
Тестовые случаи
Когда есть or
, это означает, что есть несколько допустимых выходов. Если ...
после символа есть завершающий многоточие or
, это означает, что не все возможные выходные данные были перечислены.
[0] = [1]
[55] = [1]
[32, 44] = [1, 1]
[0, 0] = [1, 0] or [0, 1]
[9001, 9001, 9001] = [1, 0 , 0] or [0, 1, 0] or [0, 0, 1]
[5, 4, 7, 1] = [1, 1, 1, 1]
[1, 2, 3, 4, 3, 5] = [1, 1, 1, 1, 0, 1] or
[1, 1, 0, 1, 1, 1]
[5, 9, 7, 5, 6, 0, 5] = [1, 1, 1, 0, 1, 1, 0] or
[0, 1, 1, 1, 1, 1, 0] or
[0, 1, 1, 0, 1, 1, 1]
[0, 8, 6, 6, 3, 8, 7, 2] = [1, 1, 1, 0, 1, 0, 1, 1] or
[1, 0, 0, 1, 1, 1, 1, 1] or
[1, 0, 1, 0, 1, 1, 1, 1] or
[1, 1, 0, 1, 1, 0, 1, 1]
[45, 47, 47, 45, 24, 24, 24, 8, 47, 41, 47, 88]
= [1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1] or ...
[154, 993, 420, 154, 154, 689, 172, 417, 790, 175, 790, 790, 154, 172, 175, 175, 420, 417, 154, 175, 172, 175, 172, 993, 689, 993, 993, 790]
= [1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] or ...
правила
- Это код-гольф, поэтому выигрывает самое короткое решение.
- Встроенные разрешены!
- Вам разрешено использовать ваши собственные определения истинных и ложных значений в списке вывода. Если вы решите сделать это, пожалуйста, укажите ваши определения.
- Входными данными будет непустой список неотрицательных целых чисел.
- Вы можете выбрать между выводом только одного из сит или нескольких или даже всех из них. Пока каждое сито действует, оно будет принято.
[0, 8, 6, 6, 3, 8, 7, 2]
, должны ли[1, 0, 0, 1, 1, 1, 1, 1]
быть добавлены в список допустимых результатов?Ответы:
MATL,
764 байта1 байт сохранен благодаря @Luis
2 байт сохранен благодаря @Dennis
Мы определяем,
1
чтобы быть правдивым, а все остальные ценности - ложнымиПопробуйте онлайн
Все тесты
объяснение
источник
&=Rs1=
l=
.Желе , 4 байта
Благоприятствует последним событиям. Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Python 3,
47353936 байтИзвлекает первый элемент из списка, проверяет, существует ли он где-либо еще в списке, и вставляет
True
илиFalse
в новый список.Для этой функции
False
указывает отдельное значение, аTrue
в противном случае (True=0
иFalse=1
)Спасибо Деннису за тонну байтов
Оригинал, 47 байт:
Попытайся
источник
lambda n:[1-(n.pop()in n)for x in n*1]
сохраняет несколько байтов.lambda n:[n.pop()in n for x in n*1]
работает..pop(0)
или маска выходит в обратном порядке..pop()
обрабатывает последний элемент первым, поэтому они расположены в обратном порядке.Pyth, 6 байт
Выводит список bools (
True
иFalse
). Проверяет каждый элемент на входе, если его индекс равен индексу первого вхождения значения. Другими словами, это проверка того, является ли каждый элемент первым.В питоническом псевдокоде:
Проверьте это здесь.
источник
J , 2 байта
Это было то, откуда идея для этого вызова возникла. Встроенный
~:
вызываетсяNub-Sieve
в J и создает логический список, который выполняет операцию, описанную в вызове. Здесь1
представляетtrue
и0
представляетfalse
.источник
05AB1E , 8 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
APL, 6 байт
Попытайся
Объяснение:
источник
C #, 63 байта
Я мог бы также сделать так, чтобы он возвращал 1 или 0, и, соответственно, сделать параметр и тип возвращаемого значения одинаковыми, что позволило бы мне сделать это лямбда-выражением само по себе?
некоторые рекомендации будут оценены
код того же типа
источник
Python, 35 байт
Пользы
True
как ложное значение иFalse
истинное значение. Отмечает последнее появление каждого элемента.Выбирает первый элемент, только если он не отображается среди оставшихся элементов, а затем возвращается к остальной части списка, если он не пуст.
l.pop(0)
Извлекает первый элемент , а также его удаления.источник
Сетчатка , 23 байта
Ввод - это разделенный пробелами список. (На самом деле, другие форматы, такие как
[1, 2, 3]
, также будут работать до тех пор, пока перед каждым номером есть пробел, кроме первого.)Попробуйте онлайн!(Работает на нескольких тестовых примерах, разделенных переводом строки).
Мы просто превращаем каждый элемент в
0
более позднюю копию во входных данных и в1
противном случае.источник
PowerShell v2 +, 40 байт
Создает пустой массив
$a
. Затем мы берем список ввода через$args[0]
и передаем его в цикл|%{...}
. Каждая итерация мы выбираем либо1
или0
из псевдо-трехкомпонентной на основе того , является ли текущий элемент в$a
или нет. Эти выборы остаются на конвейере. Затем мы добавляем текущий элемент в массив$a
. Элементы конвейера собраны, и вывод в виде массива является неявным.Пример:
(вывод здесь с разделителем новой строки, так как это по умолчанию
.ToString()
для массива)источник
JavaScript (ES6), 31 байт
Ноль правдив, а другие числа ложны.
источник
Mathematica,
5331 байтСпасибо миль за то, что дали мне идею, которая сэкономила 22 байта.
источник
MapIndexed
над предыдущими списками?MapIndexed[s[[;;#-1&@@#2]]~FreeQ~#&,s=#]&
занимает 41 байт.MapIndexed
для этого случая, и вам даже не нужно извлекать или уменьшать индексPerl 5
источник
..
обеспечивает скалярный контекст, поэтому вам не нужно~~
. 2.grep
возвращает истину / ложь, поэтому вам не нужно?1:0
. 3.grep/.../,@a
короче чемgrep{/.../}@a
. 4. Вам не нужно финал;
. 5. Тебе не нужны круглые скобки1..@a
. 6. Вы не показываете, откуда поступает или выводится информация: см. Meta.codegolf.stackexchange.com/q/2447Java, 96 байт
Изменяет массив на месте. Благоприятствует последнему появлению.
Истинная ценность - в
1
то время как фальшивая ценность0
.Проверьте все тестовые случаи .
Ungolfed:
источник
На самом деле, 11 байтов
Попробуйте онлайн!
Объяснение:
источник
Пайк, 4 байта
Попробуй это здесь!
источник
C ++, 242 байта
По общему признанию решение для избыточного количества, поскольку это работает на любом стандартном контейнере любого заказанного типа:
Ungolfed:
(и далее обобщено)
Тестирование:
источник
TSQL 52 байта
скрипка
источник
PHP,
666239 байтза исключением значений со значением false (false, 0, "") и числовых строк ("1" равно 1)
новая версия (программа, 37 + 2 байта)
превосходит Java и (теперь снова) C #. Даже почти превосходит Python сейчас. Счастливый.
0
(true) и1
(false)вставки
!
послеprint
инвертированияregister_globals=On
,short_open_tags=On
иerror_reporting=0
вphp.ini
течениеphp-cgi
затем вызова
php-cgi -f <filename> a[]=<value1> a[]=<value2> ...;echo""
;$a
на$_GET[a]
(+6), установитьshort_open_tags=On
иerror_reporting=0
$a
наarray_slice($argv,1)
(+19), удалить<?
(-2)и вызвать
php -d error_reporting=0 -r '<code>' <value1> <value2> ...;echo""
старая версия (функция, 62 байта)
false
для true иtrue
для false; (выводится как пустая строка или1
)вставить
!
после$m[]=
инвертированиятесты (на старой версии)
источник
Haskell,
2927 байтИспользуется
False
как true,True
как false:Возможно, вам придется
import Data.List
использовать,tails
но tryhaskell.org запускает код как есть.источник
\a->[...]
это правильная функция. Если сомневаетесь, дайте ему имяf a=[...]
.import Data.List
. а. это очень скользкий путь, так как вы можете поместить любое количество импорта (или даже определения!) в вашу конфигурацию GHCi. б. рассматривает tryhaskell.org как авторитетную реализацию языка Haskell, но на самом деле это не так. (Опять же, что, если я создам свою собственную онлайн-среду try-Haskell, которая поставляется со всеми импортами и определениями, которые гольфисты могут когда-либо захотеть? Это все еще действительно «Haskell»?)Perl 5 + Perligata , 343 байта
315 байт плюс 28 для
-MLingua::Romana::Perligata
Использовать как
perl -MLingua::Romana::Perligata foo.pl
; input (from stdin) и output (to stdout) - это разделенные подчеркиванием строки десятичных целых чисел. Протестировано на Strawberry 5.20.2 с версией 0.6 Perligata; Я не знаю, работает ли он с Perligata версии 0.50.Очевидно, это ясно, как звонок. Если это не так, запустите его
-MLingua::Romana::Perligata=converte
вместо-MLingua::Romana::Perligata
, иperl
вместо запуска скрипта выведите перевод на обычный Perl:Для анализа токенов, используйте токен
-MLingua::Romana::Perligata=discribe
.Гольф заметки:
.
.scinde
не нуждается во втором аргументе и используетhoc
.ao aum tum nullum addementum da
потому что я не мог получитьmorde
до работы.per ium in qis... ro I da
потому что я не мог получитьvanne
до работы.huic vestibulo perlegementum da
я попытался-pMLingua::Romana::Perligata
, но не смог заставить его работать.Просто для ударов (хотя весь этот ответ был только для ударов):
Huic vestibulo perlegementum da. Qis lacunam scindementa da. Dum qis fac sic ao qis decumulamentum da. Ao aum tum nullum addementum da. Meo io. Meo ro. Per ium in qis fac sic si ium tum aum aequalitas fac sic ro I da cis cis. Ro nullum tum non rum addementum da. Capita bis rum cis. Per in bis fac sic hoc tum lacunam egresso scribe cis.
, Google Translate даетThis court perlegementum grant. QIS gap scindementa grant. While QIS QIS decumulamentum do so ao da. Ao sum and no addementum grant. My io. My ro. Through ium in QIS do so if the sum ium equality do so ro 1 from cis. Ro was not any rum addementum grant. The heads of the bis side. Write, do so as soon as he at that time that in the gap by the Kish was taken.
.источник