Різні завдання, однакові персонажі


36

У цьому завданні вам потрібно вирішити 4 різні завдання, використовуючи один і той же набір символів. Ви можете переставити символи, але ви не можете додавати або видаляти символи.

Переможцем стане подання, яке вирішує всі завдання, використовуючи найменшу кількість символів. Усі завдання повинні бути вирішені однією мовою.

Зауважте, що це найменша кількість символів, а не найменша кількість унікальних символів.

Завдання 1:

Виведіть перші Nчисла кожного третього складеного числа . Кодовий блок нижче показує перші 19 складених чисел у першому рядку та кожне третє складене число у рядку нижче.

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30
4,       9,         14,         18,         22,         26,         30

Якщо N=5тоді вихід повинен бути 4, 9, 14, 18, 22. Ви повинні підтримати 1<=N<=50.

Складені числа - це додатні числа, які не є простими числами або 1.

Результат для N=50:

4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 57, 62, 65, 69, 74, 77, 81, 85, 88, 92, 95, 99, 104, 108, 112, 116, 119, 122, 125, 129, 133, 136, 141, 144, 147, 152, 155, 159, 162, 166, 170, 174, 177, 182, 185, 188, 192

Завдання 2:

Виведіть N-by-Nтаблицю множення. Ви повинні підтримати1<=N<=20

Приклад:

N = 4
1   2   3   4
2   4   6   8
3   6   9  12
4   8  12  16

Формат виходу необов'язковий, прийнятним є наступний [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]].

Завдання 3:

Визначте, чи є число числом Фібоначчі . Ви повинні підтримувати додатний показник Nдо цілого ліміту вашої мови за замовчуванням. Якщо є як 32-бітні цілі числа, так і 64-бітні цілі числа, тоді ви можете вибрати те, що вимагає найкоротшого коду. Наприклад, використовуйте intзамість, long intякщо у вас є вибір. Ви не можете вибрати менші цілі числа, ніж 32-розрядні, якщо це не за замовчуванням (ви не можете використовувати 8-бітні цілі числа, якщо 32-бітні за замовчуванням).

true/false, false/true, 1/0, 1/-1, a/bВсе прийнятно вихід до тих пір , як вона послідовна.

Завдання 4:

Взяти Nза вхід і вивести результат 1^1+2^2+3^3+...N^N. Ви повинні підтримати 1<=N<=10.

10 різних результатів:

1, 5, 32, 288, 3413, 50069, 873612, 17650828, 405071317, 10405071317

Це , тому найкоротше подання на кожній мові виграє!

Цей фрагмент стека допоможе перевірити ваше рішення. Він вимірює мінімальний набір символів, необхідний для включення всіх чотирьох рішень, і показує залишки символів.


1
Двійкові: два символи
coredump

@coredump Так, два унікальних персонажа ...
Стюі Гріффін

Відповіді:


12

Пітон, 88 87 байт

lambda n:[a for a in range(11*n)if any(a%b<1for b in range(2,a))][:3*n:3]#1,,,=====bd++
lambda n:[[a*b for b in range(1,n+1)]for a in range(1,n+1)]#,,::ybaaa(*i%n< =====2)d33f
f=lambda n,a=1,b=1:a<n and f(n,b,a+b)or n==a#2eerrrfo::((**iii11[[aannn+     ]]y))%33gg
f=lambda n,a=1:a<=n and a**a+f(n,a+1)#::ooeeiii]]      y))bbbgg,,rrrra((11[[nnnnf==2%33

Не доклавши занадто великих зусиль для спільного використання персонажів чи самих гольфів, це майже напевно буде бито.


1
range(11*n)Завжди буде містити достатню кількість композитів?
FlipTack

1
@FlipTack Так, 5*nдостатньо.
Мартін Ендер

12

Желе , 19 18 17 символів

Завдання 1

Ḟþe*S
×5µḊḟÆRm3ḣ³

Спробуйте в Інтернеті!

Завдання 2

5µḊḟÆRm3ḣ³Ḟe*S
×þ

Спробуйте в Інтернеті!

Завдання 3

5µḊḟmḣþ*S
×3RÆḞ³e

Спробуйте в Інтернеті!

Завдання 4

×5ḊḟÆm3ḣ³þe
Rµ*ḞS

Спробуйте в Інтернеті!

Як це працює

Кожен рядок програми Jelly визначає окрему ланку (функцію). Остання є основною ланкою і викликається автоматично при виконанні програми. Якщо ця основна посилання якось не посилається на інших, вони не мають ефекту. Зауважте, що навіть незвані посилання можуть не містити помилок аналізатора.

Завдання 1

×5µḊḟÆRm3ḣ³  Main link. Argument: n

×5           Yield 5n.
  µ          Begin a new chain, with argument 5n.
   Ḋ         Dequeue; yield [2, ..., 5n].
     ÆR      Prime range; yield all primes in [1, ..., 5n].
    ḟ        Filter; remove the elements to the right from the ones to the left.
       m3    Pick every third element.
         ḣ³  Keep the first n results.

Завдання 2

Це тривіально: ×це атом множення, а швидкий þ(таблиця) застосовується ×до кожної комбінації елементів у лівому та правому аргументах. Якщо аргументи є цілими числами (які вони є тут), вони також підкидають їх до першого діапазону.

Завдання 3

×3RÆḞ³e  Main link. Argument: n

×3       Yield 3n.
  R      Range; yield [1, ..., 3n].
   ÆḞ    Fibonacci; yield [F(1), ... F(3n)].
     ³e  Test if n exists in the result.

Завдання 4

Rµ*ḞS  Main link. Argument: n

R      Range; yield [1, ..., n].
 µ     Begin a new chain with argument [1, ..., n].
   Ḟ   Floor; yield [1, ..., n].
  *    Yield [1**1, ..., n**n].
    S  Take the sum.

Радий бачити, що ÆḞце вже виявляється корисним!
Лінн

9

Математика, 60 символів

Завдання 1: Композити

#/AFF^abcinoruy{};Select[Range[2,9#],!PrimeQ@#&][[;;3#;;3]]&

Завдання 2: Таблиця множення

!29;F@FPQRS[];a^b;c[c[e]];eeegiilmnnotu;Array[3##&,{#,#}]/3&

Завдання 3: Фібоначчі

##&;239;A/PS[]^e[];lmrtuy;{,};!FreeQ[Fibonacci@Range[3#],#]&

Завдання 4: Сума повноважень

!###&;23/39;A@F;F[P[Q[]]];Raabccegiilnnorrty;Sum[e^e,{e,#}]&

Кожне подання - це набір виразів, які ігноруються, за якими слідує неназвана функція, яка реалізує задане завдання.

Я написав простий скрипт CJam, який "оптимально" поєднує необроблені рішення, попередньо додаючи коментар. Тоді я закінчив зберегти три байти поверх цього, вручну позбувшись кожного коментаря (що вимагало певної перестановки, щоб отримати дійсний синтаксис у кожному випадку). Сценарій значно спростив випробування простих варіантів рішень, щоб побачити, чи не знизить загальний бал. Сміливо використовуйте сценарій самостійно.


У мене є коментар, але справа не в самому вашому коді: P. (Приємна відповідь, btw). Ваш CJam скрипт випускає простий недолік: Якщо я ввійду abі baяк сценарії, він видасть мені(**)ab і (**)ba, замість abі ba.
HyperNeutrino

@AlexL. Так, він також не враховує той факт, що (**)сам може бути використаний для покриття деяких символів, якби вони використовувалися в будь-якій іншій програмі.
Мартін Ендер

9

MATL , 29 28 26 символів

Завдання 1 (кожне третє складене число)

6*:tZp~)G:3*q)%G"$]vwm^sl+

Спробуйте в Інтернеті!

Завдання 2 (таблиця множення)

:l$*%6*tZp~)G:3q)G"]vwm^s+

Спробуйте в Інтернеті!

Завдання 3 (детектор Фібоначчі)

l6Zp~G:"3q$t+]vGwm%):*)^s*

Це відображає 1/ 0для Фібоначчі / не-Фібоначчі відповідно.

Спробуйте в Інтернеті!

Завдання 4 (сума повноважень)

:t^s%6*Zp~)G:3*q)G"$]vwml+

Спробуйте в Інтернеті!

Перевірка

Ця програма вводить чотири рядки та відображає їх сортовані, щоб візуально перевірити, чи використовуються вони однакові символи.

Пояснення

%є символом коментаря. Все праворуч ігнорується.

Завдання 1 (кожне третє складене число)

6*    % Input N. Multiply by 6
:     % Range [1 2 ... 6*N]. This is enough because every even number is composite,
      % so this contains at least 3*N composite numbers
t     % Duplicate
Zp    % Isprime
~     % Negate
)     % Use as index to select composite numbers, including 1, from [1 2 ... 6*N]
G:    % Push [1 2 ... N]
3*q   % Multiply by 3 and subtract 1: gives [2 5 ... 3*N-1]
)     % Pick those composite numbers. Implicitly display

Завдання 2 (таблиця множення)

:     % Input N. Range [1 2 ... N]
l     % Push 1
$     % Specify that next function will take 1 input
*     % Product of array. With 1 input it produces all pair-wise products
      % Implicitly display

Завдання 3 (детектор Фібоначчі)

l     % Push 1
6     % Push 6
Zp    % Isprime. Gives false
~     % Negate. Gives true, or 1
G:    % Push [1 2 ... N], where N is the input
"     % For each
  3q  %   3, subtract 1
  $   %   Specify that next function will take 2 inputs
  t   %   Duplicate the top two elements of the stack
  +   %   Add
]     % End
v     % Vertically concatenate the entire stack. This produces a column vector
      % with a sufficient amount of Fibonacci numbers
G     % Push input N
w     % Swap
m     % Ismember. Gives true if input is in the vector of Fibonacci numbers
      % Implicitly display

Завдання 4 (сума повноважень)

:     % Implicitly input N. Push [1 2 ... N]
t     % Duplicate
^     % Power, element-wise
s     % Sum of array. Implicitly display

Коли я вперше подивився на виклик, я подумав, що Hey MATL would be perfect for this!ти перемогла мене. +1
DJMcMayhem

@DJMcMayhem Вибачте, я схильний відповідати багато. Наступного разу пінг мені, і я утримаюсь, якщо ви над цим працюєте :-) Як би там не було? Можливо, ви можете перевершити це
Луїс Мендо

3
@DJMcMayhem, будь ласка, опублікуйте відповідь, навіть якщо вам не вдалося перевершити Луїса. Я б хотів, щоб більше людей публікували відповіді мовами, які вже використовуються, навіть якщо їм не вдається перевершити перший.
Стюі Гріффін

@stewiegriffin Ха-ха, добре. У мене поки немає достовірної відповіді, але якщо я отримаю (і це досить інша), я опублікую її.
DJMcMayhem

7

Perl 6 , 61 байт

{(4..*).grep(!*.is-prime)[0,3...^*>=$_*3]}#$$&+1==>X[]__oot{}
{[X*](1..$_,!0..$_).rotor($_)}#&***+-..334===>>[]^eegiimpps{}
{(1,&[+]...*>=$_)[*-!0]==$_}#$()**....334>X^_eegiimoopprrst{}
{[+]((1..$_)>>.&{$_**$_})}#!**,-....0334===X[]^eegiimoopprrst

Другий повертається, ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))коли дається4

Perl 6 насправді не має максимального цілого числа, але третє працює миттєво із введенням 15156039800290547036315704478931467953361427680642. Єдиними обмежуючими факторами були б пам’ять та час.

Інакше всі вони будуть працювати «миттєво» для входів, що перевищують необхідне.

Спробуйте в Інтернеті


6

JavaScript (ES6), 101 100 95 93 91 байт

(n,r=[],a=(y,m)=>n?y%m?a(y,++m):a(y+1,2,y==m||n--%3||r.push(y)):r)=>a(4,2,n*=3)//>....p*A&&
n=>[...Array(n)].map((r,y,m)=>m.map((s,n)=>y*++n,y+=1))//22334(,,,,===ayy)??%%::||||--uh*&&
r=(n,y=1,a=2)=>n==y||n>y&&r(n,a,y+a)//2334((((,,,,r=[]ayymmmm))))>??%%++::||--.....ppush**A
r=y=>y&&y**y+r(y-1)//22334(((((nnnn,,,,,,,,r=====[]aaaaymmmm)))))>>??%%++::||||-.....ppushA

Редагувати: Збережено 1 байт, не підтримуючи 0як число Фібоначчі. Збережено 5 байт плюс ще 2 байти (1 завдяки @Arnauld) шляхом перейменування змінних. Збережені 2 байта, перемикаючись між +1, ++і +=1.


Заміна всіх входжень cзмінної на Aзбереження одного байта.
Арнольд

(Я збирався запропонувати , що ви також можете замінити dзy , але dне склала поточної версії, так що ви , ймовірно , хочете , щоб виправити це перший)
Arnauld

@Arnauld Дякую за вказівку на це, але мені вдалося виправити речі та зберегти подальший байт шляхом перейменування aна m.
Ніл

4

MATL , 30 символів

Набір персонажів, з якими я пішов:

!%))*+001233::<=GGQZ\]^`pstvyy~

Я не міг перевершити іншу відповідь MATL, але мені було весело, придумавши це рішення.

Завдання 1:

Треті складені числа.

4t^:QtZp~)G3*:3\1=)%!`yy+<]vGs

Спробуйте в Інтернеті!

Завдання 2:

Таблиця множення Однозначно найпростіша задача, завдяки тому, як працює MATL

:t!*%4QZp~)G3:3\1=)`yy+<]vGs^t

Спробуйте в Інтернеті!

Завдання 3:

Тестер Фібоначчі. Друкує додатне ціле число (1 або 2) для вхідних даних та 0 для помилкових входів.

1t`yy+tG<]vG=s%4:QZp~)3*:3\)!^

Спробуйте в Інтернеті!

Завдання 4:

Сума повноважень

:t^s%1`yy+tG<]vG=4QZp~)3*:3\)!

Спробуйте в Інтернеті!

Я опублікую більш ретельне пояснення пізніше, але поки що ви повинні зауважити, що %це характер коментаря, тому програми дійсно:

4t^:QtZp~)G3*:3\1=)
:t!*
1t`yy+tG<]vG=s
:t^s

4

PowerShell , 95 94 байт

( ТімміД ще раз спавив моє бекон)

Завдання 1:

(""..999|?{'1'*$_-match'^(?=(..+)\1+$)..'})[(0..("$args"-1)|%{$_*3})]#|$$$$===ss%``iiex!!nnnq;

Спробуйте в Інтернеті!


Завдання 2:

($s=1.."$args")|%{"`$s|%{$_*`$_}"|iex}#0113999((((......??''''*$$$--match^===++))))\[]i!!nnnq;

Спробуйте в Інтернеті!


Завдання 3:

!!(($i="$args")..($s=1)|?{($n=($s+=$n)-$n)-eq$i})#0113999......||?{''''**__match^+\}[""%%]``x;

Спробуйте в Інтернеті!


Завдання 4:

"$args"..1|%{$s+="$_*"*$_+1|iex};$s#013999(((((......|??{''''$$$--match^===)))))\}[%]``i!!nnnq

Спробуйте в Інтернеті!


О, ця строфікація "$args"замість $args[0]геніальна. Я буду використовувати це звідси.
AdmBorkBork

@TimmyD Так, я використовував це для заощадження в одному байті на чому-небудь з одним параметром.
британіст

@TimmyD хороший момент! Я повинен був би переписати їх усі, щоб бути впевненим, я можу переглянути його і застосувати це. Після того, як я закінчив усі 4, я начебто замислився з точки зору оптимізації.
британіст

Ну, я мав на увазі повторне використання посилань на TIO і таке, але FINE @TimmyD Я перестану лінуватися і використаю ваші щедрі пропозиції, які зовсім не так сильно працюють, як я це роблю! (відредаговано) :-p
британіст

Ви можете усунути завдання ;із завдання 4, маніпулюючи обчисленням, ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)щоб зберегти ще один загальний байт.
AdmBorkBork

3

Haskell , 77 76 символів

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]--2 n===y();^
s n=[(*y)<$>[1..n]|y<-[1..n]]--0112234mmm  ====[[[xxxx||<<--..]]],,/uod!!y;^
n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]--4[[[....]]]/o!!*^
o n=sum[x^x|x<-[1..n]]--01112234mm  n====[[[[x||<<<--....]]]],,/d$>!!yyy*();

Спробуйте в Інтернеті!

--починається коментар до рядка, тому всі чотири програми мають форму <program>--<unused chars>.

Завдання 1:

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]

Найдовша програма. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]виходить нескінченний список складених чисел плюс стартовий, 1який виправляє 0-індексацію. Використання:

Prelude> m 5
[4,9,14,18,22]

Завдання 2:

s n=[(*y)<$>[1..n]|y<-[1..n]]

Використання:

Prelude> s 5
[[1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15],[4,8,12,16,20],[5,10,15,20,25]]

Завдання 3:

n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]

Повертається [0]до правди і []для помилки . Використання:

Prelude> d 5
[0]
Prelude> d 6
[]

Завдання 4:

o n=sum[x^x|x<-[1..n]]

Використання:

Prelude> o 5
3413

3

05AB1E , 21 байт

Завдання 1

3ÅFOL¦DâPÙï{3ôø¬¹£qåm

Спробуйте в Інтернеті!

Завдання 2

LDâP¹ôq3m¦Ùï{3ø¬£ÅFåO

Спробуйте в Інтернеті!

Завдання 3

3mÅF¹åqL¦DâPÙï{3ôø¬£O

Спробуйте в Інтернеті!

Завдання 4

LDmOq3¦âPÙï{3ôø¬¹£ÅFå

Спробуйте в Інтернеті!

Пояснення

Для всіх завдань q закінчується, тому код, який слід, ніколи не виконується.

Завдання 1

Це найбільший байт-свиня. Невелике поліпшення тут може пройти довгий шлях.

3ÅFO                 # sum the first 4 fibonacci numbers
    L¦               # range [2 ... above]
      Dâ             # cartesian product with itself
        P            # product
         Ù           # remove duplicates
          ï{         # sort
            3ô       # split in pieces of size 3
              ø      # transpose
               ¬     # get the first lits
                ¹£   # get the first input-nr elements of the list

Завдання 2

L       # range [1 ... input]
 D      # duplicate
  â     # cartesian product
   P    # product
    ¹ô  # split in pieces of input size

Завдання 3

3m      # input**3
  ÅF    # get a list of that many (+1) fibonacci numbers
    ¹å  # check if input is in that list

Завдання 4

L     # range [1 ... input]
 D    # duplicate
  m   # elementwise power of ranges
   O  # sum

1

Рубі, 83 82 80 78 символів

->m{'*+-=';[*0..m-1].map{|b|(4..516).select{|p|(2...p).any?{|n|p%n==0}}[3*b]}}
->n{'()%**+--......00123456==?[[]]clmnsty{||}';(b=1..n).map{|e|b.map{|p|e*p}}}
->m{'%+-......001236bclnnpt[[]]{{||||}}';(1..e=m*m).any?{|p|(p*p-5*e).abs==4}}
->n{'%*.......023456=?[]abbceelnsty{{||||}}';((m=0)..n).map{|p|m+=p**p}[-1]-1}

Примітка: детектор чисел Фібоначчі за допомогою ідеального квадратного методу, описаного у Вікіпедії: https://en.wikipedia.org/wiki/Fibach_number#Recogising_Fibach_numbers


якщо у вас є символи для запису, чому б не використати коментар наприкінці замість рядка? Це економить 2 символи на рядок '';проти#
Алексіс Андерсен

Дякую, але мені здається, що це обман.
ГБ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.