Разные задания, одни и те же персонажи

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 Да, два уникальных персонажа ...
Стьюи Гриффин

Ответы:

12

Python, 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

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

orlp
источник
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

Mathematica, 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. (Хороший ответ, кстати). Ваш сценарий 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 bytes

{(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

The second one returns ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16)) when given 4

Perl 6 doesn't really have a maximum integer, but the third one works instantly with an input of 15156039800290547036315704478931467953361427680642. The only limiting factors would be memory and time.

Otherwise they will all run "instantly" for inputs well beyond what is necessary.

Try it online

Brad Gilbert b2gills
источник
6

JavaScript (ES6), 101 100 95 93 91 bytes

(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

Edit: Saved 1 byte by not supporting 0 as a Fibonacci number. Saved 5 bytes plus a further 2 bytes (1 thanks to @Arnauld) by renaming variables. Saved 2 bytes by switching between +1, ++ and +=1.

Neil
источник
Replacing all occurrences of the c variable with A should save one byte.
Arnauld
(I was about to suggest that you can also replace d with y, but d is undefined in the current version, so you probably want to fix that first)
Arnauld
@Arnauld Thanks for pointing that out, but I managed to fix things up and save a further byte by renaming a to m.
Neil
4

MATL, 30 characters

The character set I went with is:

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

I couldn't outgolf the other MATL answer, but I had fun coming up with this solution.

Task 1:

Third composite numbers.

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

Try it online!

Task 2:

Multiplication table. Definitely the easiest task, due to the way MATL works

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

Try it online!

Task 3:

Fibonacci tester. Prints a positive integer (1 or 2) for truthy inputs, and 0 for falsy inputs.

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

Try it online!

Task 4:

Sum of powers

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

Try it online!

I'll post a more thorough explanation later, but for now, you should note that % is the comment character, so the programs are really:

4t^:QtZp~)G3*:3\1=)
:t!*
1t`yy+tG<]vG=s
:t^s
DJMcMayhem
источник
4

PowerShell, 95 94 bytes

(TimmyD savin' my bacon yet again)

Task 1:

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

Try it online!


Task 2:

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

Try it online!


Task 3:

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

Try it online!


Task 4:

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

Try it online!

briantist
источник
Oh, that stringification "$args" instead of $args[0] is brilliant. I'm going to use that from here on.
AdmBorkBork
@TimmyD Yeah I've been using that for the single byte savings on anything with a single parameter.
briantist
@TimmyD good point! I'd have to re-write all of them to be sure though, I might revisit it and apply that. Once I finished all 4 I kind of petered out in terms of optimizing.
briantist
Well I meant re-doing the TIO links and such but FINE @TimmyD I'll stop being lazy and use your generous suggestion that's not at all as much work as I'm making it out to be! (edited) :-p
briantist
You can eliminate the ; from Task 4 by manipulating the calculation with ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s) to save another overall byte.
AdmBorkBork
3

Haskell, 77 76 characters

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*();

Try it online!

-- starts a line comment, so all four programs are of the form <program>--<unused chars>.

Task 1:

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

The longest program. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]] yields a infinite list of composite numbers plus a starting 1 which corrects the 0-indexing. Usage:

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

Task 2:

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

Usage:

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]]

Task 3:

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

Returns [0] for truthy and [] for falsy. Usage:

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

Task 4:

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

Usage:

Prelude> o 5
3413
Laikoni
источник
3

05AB1E, 21 bytes

Task 1

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

Try it online!

Task 2

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

Try it online!

Task 3

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

Try it online!

Task 4

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

Try it online!

Explanations

For all tasks, the q ends the program so the code that follows never gets executed.

Task 1

This is the biggest byte-hog. An small improvement here could go a long way.

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

Task 2

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

Task 3

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

Task 4

L     # range [1 ... input]
 D    # duplicate
  m   # elementwise power of ranges
   O  # sum
Emigna
источник
1

Ruby, 83 82 80 78 characters

->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}

Note: Fibonacci numbers detector using the perfect square method described on Wikipedia: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers

G B
источник
if you have characters to burn, why not use a comment at the end instead of a string? It saves you 2 characters per line ''; vs #
Alexis Andersen
Thanks, but to me it feels like cheating.
G B