Diferentes tareas, mismos personajes.

36

En este desafío, debes resolver 4 tareas diferentes usando el mismo conjunto de caracteres. Puede reorganizar los caracteres, pero no puede agregar o eliminar caracteres.

El ganador será el envío que resuelve todas las tareas utilizando el menor número de caracteres. Todas las tareas deben resolverse en el mismo idioma.

Tenga en cuenta que es el número más pequeño de caracteres, no el número más pequeño de caracteres únicos .

Tarea 1:

Salida de los primeros Nnúmeros de cada tercer número compuesto . El siguiente bloque de código muestra los primeros 19 números compuestos en la primera fila y cada tercer número compuesto en la fila a continuación.

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

Si N=5entonces la salida debería ser 4, 9, 14, 18, 22. Debes apoyar 1<=N<=50.

Los números compuestos son números positivos que no son números primos o 1.

El resultado para N=50es:

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

Tarea 2:

Salida de una N-by-Ntabla de multiplicar. Debes apoyar1<=N<=20

Ejemplo:

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

El formato de salida es opcional, lo siguiente es salida aceptable [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]] .

Tarea 3:

Determine si un número es un número de Fibonacci . Debe admitir positivo Nhasta el límite entero predeterminado de su idioma. Si hay enteros de 32 bits y enteros de 64 bits, puede elegir usar el que requiera el código más corto. Por ejemplo, use en intlugar de long intsi tiene la opción. No puede elegir enteros más pequeños que 32 bits a menos que sea predeterminado (no puede usar enteros de 8 bits si 32 bits es predeterminado).

true/false, false/true, 1/0, 1/-1, a/bSon todos de salida aceptable siempre y cuando sea consistente.

Tarea 4:

Tomar Ncomo entrada y salida el resultado de 1^1+2^2+3^3+...N^N. Debes apoyar 1<=N<=10.

Los 10 resultados diferentes son:

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

Este es el , por lo que gana la presentación más corta en cada idioma.

Este fragmento de pila ayudará a verificar su solución. Mide el conjunto mínimo de caracteres necesarios para incluir las cuatro soluciones y muestra los caracteres sobrantes.

Stewie Griffin
fuente
1
Binario: dos caracteres
coredump
@coredump Sí, dos personajes únicos ...
Stewie Griffin

Respuestas:

12

Python, 88 87 bytes

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

No se esforzó demasiado para compartir personajes o los campos de golf en sí, seguramente será mejor.

orlp
fuente
1
¿ range(11*n)Siempre contendrá suficientes compuestos?
FlipTack
1
@FlipTack Sí, 5*nes suficiente.
Martin Ender
12

Jalea , 19 18 17 caracteres

Tarea 1

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

Pruébalo en línea!

Tarea 2

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

Pruébalo en línea!

Tarea 3

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

Pruébalo en línea!

Tarea 4

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

Pruébalo en línea!

Cómo funciona

Cada línea en un programa Jelly define un enlace (función) separado . El último es el enlace principal. y se llama automáticamente cuando se ejecuta el programa. A menos que ese enlace principal haga referencia a los demás de alguna manera, no tienen ningún efecto. Tenga en cuenta que incluso los enlaces no invocados pueden no contener errores del analizador.

Tarea 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.

Tarea 2

Este es trivial: ×es el átomo de multiplicación, y se þaplica la tabla rápida× a cada combinación de elementos en el argumento izquierdo y derecho. Si los argumentos son enteros (que están aquí), también los convierte en rango primero.

Tarea 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.

Tarea 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.
Dennis
fuente
¡Me alegra ver ÆḞque ya está demostrando ser útil!
Lynn el
9

Mathematica, 60 caracteres.

Tarea 1: Compuestos

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

Tarea 2: tabla de multiplicación

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

Tarea 3: Fibonacci

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

Tarea 4: Suma de poderes

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

Cada envío es un conjunto de expresiones que se ignoran, seguidas de una función sin nombre que implementa la tarea dada.

Escribí un script simple de CJam que "óptimamente" combina soluciones en bruto al anteponer un comentario. Luego terminé guardando tres bytes además de eso, deshaciéndome manualmente de cada comentario (lo que requería un reordenamiento para obtener una sintaxis válida en cada caso). El guión hizo que fuera mucho más fácil probar variaciones simples de las soluciones para ver si bajaban el puntaje general. Siéntase libre de usar el guión usted mismo.

Martin Ender
fuente
Tengo un comentario, pero no se trata de su código en sí: P. (Buena respuesta, por cierto). Su secuencia de comandos CJam pasa por alto una falla simple: si ingreso aby bacomo las secuencias de comandos, me dará (**)aby (**)ba, en lugar de aby ba.
HyperNeutrino
@AlexL. Sí, tampoco tiene en cuenta el hecho de que (**)podría usarse para cubrir algunos caracteres si se usaran en cualquiera de los otros programas.
Martin Ender
9

MATL , 29 28 26 caracteres

Tarea 1 (cada tercer número compuesto)

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

Pruébalo en línea!

Tarea 2 (tabla de multiplicar)

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

Pruébalo en línea!

Tarea 3 (detector de Fibonacci)

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

Esto muestra 1/ 0para Fibonacci / no Fibonacci respectivamente.

Pruébalo en línea!

Tarea 4 (suma de poderes)

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

Pruébalo en línea!

Comprobar

Este programa ingresa las cuatro cadenas y las muestra ordenadas, para verificar visualmente que usan los mismos caracteres.

Explicaciones

%es el símbolo de comentario Todo a su derecha es ignorado.

Tarea 1 (cada tercer número compuesto)

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

Tarea 2 (tabla de multiplicar)

:     % 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

Tarea 3 (detector de Fibonacci)

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

Tarea 4 (suma de poderes)

:     % Implicitly input N. Push [1 2 ... N]
t     % Duplicate
^     % Power, element-wise
s     % Sum of array. Implicitly display
Luis Mendo
fuente
Cuando vi el desafío por primera vez, pensé Hey MATL would be perfect for this!que me superaste. +1
DJMcMayhem
@DJMcMayhem Lo siento, tiendo a responder mucho. La próxima vez hágame ping y me abstendré si está trabajando en ello :-) De todos modos, ¿por qué no seguir adelante? Tal vez puedas superar esto
Luis Mendo
3
@DJMcMayhem, por favor publicar una respuesta demasiado, incluso si no se las arreglan para outgolf Luis. Desearía que más personas publicaran respuestas en los idiomas que ya se utilizan, incluso si no logran superar al primero.
Stewie Griffin
@stewiegriffin Jaja, está bien, claro. Todavía no tengo una respuesta válida, pero si obtengo una (y es lo suficientemente diferente) la publicaré.
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

El segundo regresa ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))cuando se da4

Perl 6 realmente no tiene un número entero máximo, pero el tercero funciona instantáneamente con una entrada de 15156039800290547036315704478931467953361427680642. Los únicos factores limitantes serían la memoria y el tiempo.

De lo contrario, todos se ejecutarán "instantáneamente" para entradas mucho más allá de lo necesario.

Pruébalo en línea

Brad Gilbert b2gills
fuente
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

Editar: guardado 1 byte al no admitir 0como un número de Fibonacci. Se guardaron 5 bytes más otros 2 bytes (1 gracias a @Arnauld) al cambiar el nombre de las variables. Se guardaron 2 bytes al cambiar entre +1, ++y +=1.

Neil
fuente
Reemplazar todas las apariciones de la cvariable con Adebería guardar un byte.
Arnauld
(Yo estaba a punto de sugerir que también se puede sustituir dcon y, pero dno está definido en la versión actual, por lo que es probable que desee arreglar eso primero)
Arnauld
@Arnauld Gracias por señalar eso, pero logré arreglar las cosas y guardar un byte adicional al cambiar el nombre aa m.
Neil
4

MATL , 30 caracteres

El conjunto de caracteres con el que fui es:

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

No pude superar la otra respuesta de MATL, pero me divertí con esta solución.

Tarea 1:

Terceros números compuestos.

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

Pruébalo en línea!

Tarea 2:

Tabla de multiplicación. Definitivamente la tarea más fácil, debido a la forma en que funciona MATL

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

Pruébalo en línea!

Tarea 3:

Probador de Fibonacci. Imprime un número entero positivo (1 o 2) para entradas verdaderas y 0 para entradas falsas.

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

Pruébalo en línea!

Tarea 4:

Suma de poderes

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

Pruébalo en línea!

Publicaré una explicación más detallada más adelante, pero por ahora, debe tener en cuenta que ese %es el carácter del comentario, por lo que los programas son realmente:

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

PowerShell , 95 94 bytes

( TimmyD mi tocino una vez más)

Tarea 1:

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

Pruébalo en línea!


Tarea 2:

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

Pruébalo en línea!


Tarea 3:

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

Pruébalo en línea!


Tarea 4:

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

Pruébalo en línea!

briantista
fuente
Oh, esa stringificación en "$args"lugar de $args[0]es brillante. Voy a usar eso de aquí en adelante.
AdmBorkBork
@TimmyD Sí, lo he estado usando para ahorrar un solo byte en cualquier cosa con un solo parámetro.
briantist
@TimmyD buen punto! Sin embargo, tendría que volver a escribirlos todos para estar seguro, podría volver a visitarlo y aplicarlo. Una vez que terminé los 4, me desvanecí en términos de optimización.
briantist
Bueno, me refería a volver a hacer los enlaces de TIO y demás, pero FINE @TimmyD ¡Dejaré de ser flojo y usaré tu generosa sugerencia que no es tanto trabajo como pretendo que sea! (editado) :-p
briantist el
Puede eliminar el ;de la Tarea 4 manipulando el cálculo con ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)para guardar otro byte general.
AdmBorkBork
3

Haskell , 77 76 caracteres

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

Pruébalo en línea!

--comienza un comentario de línea, por lo que los cuatro programas tienen la forma <program>--<unused chars>.

Tarea 1:

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

El programa más largo. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]produce una lista infinita de números compuestos más un comienzo 1que corrige la indexación 0. Uso:

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

Tarea 2:

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

Uso:

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

Tarea 3:

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

Retornos [0]por verdad y []por falsedad. Uso:

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

Tarea 4:

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

Uso:

Prelude> o 5
3413
Laikoni
fuente
3

05AB1E , 21 bytes

Tarea 1

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

Pruébalo en línea!

Tarea 2

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

Pruébalo en línea!

Tarea 3

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

Pruébalo en línea!

Tarea 4

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

Pruébalo en línea!

Explicaciones

Para todas las tareas, qfinaliza el programa para que el código que sigue nunca se ejecute.

Tarea 1

Este es el byte-hog más grande. Una pequeña mejora aquí podría recorrer un largo camino.

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

Tarea 2

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

Tarea 3

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

Tarea 4

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

Ruby, 83 82 80 78 caracteres

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

Nota: Detector de números de Fibonacci utilizando el método de cuadrado perfecto descrito en Wikipedia: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers

GB
fuente
Si tiene caracteres para grabar, ¿por qué no usar un comentario al final en lugar de una cadena? Le ahorra 2 caracteres por línea '';vs#
Alexis Andersen
Gracias, pero para mí se siente como hacer trampa.
GB