Farklı görevler, aynı karakterler


36

Bu zorlukla aynı karakter grubunu kullanarak 4 farklı görevi çözmeniz gerekiyor. Karakterleri yeniden düzenleyebilirsiniz, ancak karakter ekleyemez veya kaldıramazsınız.

Kazanan, en az sayıda karakter kullanarak tüm görevleri çözen teslim olacak. Tüm görevler aynı dilde çözülmelidir.

Not o karakterlerin küçük sayı değil, en küçük sayı olmasından eşsiz karakterlerle.

Görev 1:

NHer üçüncü bileşik sayının ilk numaralarını verin . Aşağıdaki kod bloğu, ilk satırdaki ilk 19 kompozit sayıyı ve aşağıdaki satırdaki her üç kompozit sayıyı gösterir.

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

Eğer N=5öyleyse, çıktı olması gerekir 4, 9, 14, 18, 22. Desteklemelisin 1<=N<=50.

Bileşik sayılar, asal sayılar veya 1 olmayan pozitif sayılardır.

Bunun sonucu 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

Görev 2:

Bir N-by-Nçarpım tablosu çıktı. Desteklemelisin1<=N<=20

Örnek:

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

Çıktı formatı isteğe bağlıdır, aşağıdakiler kabul edilebilir çıktıdır [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]].

Görev 3:

Bir sayının bir Fibonacci numarası olup olmadığını belirleyin . NDilinizin varsayılan tamsayı sınırına kadar pozitif desteği sağlamalısınız . Hem 32 bit tam sayılar hem de 64 bit tam sayılar varsa, o zaman en kısa kod gerektiren olanı kullanmayı seçebilirsiniz. Örneğin , bir seçeneğiniz varsa , intyerine kullanın long int. Varsayılan olmadıkça 32 bit'ten daha küçük bir tam sayı seçemezsiniz (32 bit varsayılansa 8 bit tam sayı kullanamazsınız).

true/false, false/true, 1/0, 1/-1, a/bYeter ki tutarlı olarak tüm kabul edilebilir çıkıştır.

Görev 4:

NGirdi olarak alın ve sonucu çıktı 1^1+2^2+3^3+...N^N. Desteklemelisin 1<=N<=10.

10 farklı sonuç:

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

Bu , bu yüzden her dilde en kısa sürede gönderim kazanıyor!

Bu Stack Snippet, çözümünüzü kontrol etmeye yardımcı olacaktır. Dört çözümü de dahil etmek için gereken minimum karakter kümesini ölçer ve kalan karakterleri gösterir.


1
İkili: iki karakter
saat

@coredump Evet, iki benzersiz karakter ...
Stewie Griffin

Yanıtlar:


12

Python, 88 87 bayt

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

Karakterleri veya golfleri kendileri paylaşmak için fazla çaba harcamamış olsaydınız, bu neredeyse kesinlikle yenilecek.


1
Her range(11*n)zaman yeterince kompozit içerecek mi?
FlipTack

1
@FlipTack Evet, 5*nyeterli.
Martin Ender

12

Jelly , 19 18 17 karakter

Görev 1

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

Çevrimiçi deneyin!

Görev 2

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

Çevrimiçi deneyin!

Görev 3

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

Çevrimiçi deneyin!

Görev 4

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

Çevrimiçi deneyin!

Nasıl çalışır

Jelly programındaki her satır ayrı bir link (fonksiyon) tanımlar . Sonuncusu ana bağlantıdır ve program yürütüldüğünde otomatik olarak çağrılır. Ana link diğerlerine referans vermediği sürece, hiçbir etkisi olmaz. Çağrılmamış bağlantıların bile ayrıştırıcı hataları içeremeyebileceğini unutmayın.

Görev 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.

Görev 2

Bunun önemsiz: ×çarpım atomu ve hızlı þ(tablo) ×sol ve sağ argümandaki her bir element kombinasyonuna uygulanır . Eğer argümanlar tamsayılarsa (buradalarsa), aynı zamanda onları ilk sıraya yerleştirir.

Görev 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.

Görev 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.

Gördüğüme sevindim ÆḞ, zaten faydalı olduğunu kanıtladı!
Lynn

9

Mathematica, 60 karakter

Görev 1: Kompozitler

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

Görev 2: Çarpım Tablosu

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

Görev 3: Fibonacci

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

Görev 4: Güçlerin toplamı

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

Her gönderim, verilen görevi uygulayan adsız bir işlev tarafından izlenen ve yok sayılan bir ifade kümesidir.

Bir yorum hazırlayarak ham çözümleri "optimal olarak" birleştiren basit bir CJam betiği yazdım . Daha sonra her bir yorumdan manuel olarak kurtularak (her durumda geçerli bir sözdizimi elde etmek için bir miktar yeniden düzenleme gerektiren) bunun üzerine üç bayt tasarruf ettim. Senaryo, genel puanı düşürüp düşürmeyeceklerini görmek için çözümlerin basit çeşitlemelerini denemeyi çok daha kolaylaştırdı. Senaryoyu kendin kullanmaktan çekinme.


Bir yorumum var ama kodun kendisi ile ilgili değil: P. (Güzel cevap, btw). Kişisel CJam komut dosyası basit kusur bakan: Ben girerseniz abve bakomut dosyaları gibi, beni verecektir (**)abve (**)bayerine, abve ba.
HyperNeutrino,

@AlexL. Evet, (**)başka programlarda kullanılıyorsa, bazı karakterleri kapsayacak şekilde kullanılabileceği gerçeğini de göz önüne almaz .
Martin Ender

9

MATL , 29 28 26 karakter

Görev 1 (her üçüncü bileşik numara)

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

Çevrimiçi deneyin!

Görev 2 (çarpım tablosu)

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

Çevrimiçi deneyin!

Görev 3 (Fibonacci dedektörü)

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

Bu, sırasıyla Fibonacci / Fibonacci olmayan 1/ görüntüler 0.

Çevrimiçi deneyin!

Görev 4 (güçlerin toplamı)

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

Çevrimiçi deneyin!

Kontrol

Bu program dört dizeyi girer ve aynı karakterleri kullandıklarını görsel olarak kontrol etmek için sıralanır.

açıklamalar

%yorum sembolüdür. Sağındaki her şey göz ardı edilir.

Görev 1 (her üçüncü bileşik numara)

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

Görev 2 (çarpım tablosu)

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

Görev 3 (Fibonacci dedektörü)

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

Görev 4 (güçlerin toplamı)

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

Mücadeleye ilk baktığımda, Hey MATL would be perfect for this!beni yendiğini sanıyordum . +1
DJMcMayhem

@DJMcMayhem Üzgünüm, çok fazla cevap verme eğilimindeyim. Bir dahaki sefere bana ping atıp ben üzerinde çalışıyorsan kaçınacağım :-) Neyse, neden devam etmiyorsun? Belki bunu yenebilirsin
Luis Mendo

3
@DJMcMayhem, lütfen Luis'i aşmayı başaramasanız bile, lütfen bir cevap gönderin. Keşke daha fazla insan, ilkini geçmeyi başaramasalar bile, zaten kullanılmış olan dillerde cevaplar yayınlayabilselerdi.
Stewie Griffin,

@Stewiegriffin Haha, tamam elbette. Henüz geçerli bir cevabım yok, ancak bir tane alırsam (ve yeterince farklı) cevap veririm.
DJMcMayhem

7

Perl 6 , 61 bayt

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

İkincisi ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))verildiğinde geri döner4

Perl 6'da maksimum bir tamsayı yok, ancak üçüncüsü anında bir girdiyle çalışıyor 15156039800290547036315704478931467953361427680642. Tek sınırlayıcı faktörler hafıza ve zaman olacaktır.

Aksi halde, hepsi gerekenin ötesindeki girdiler için "anında" çalışacaktır.

Çevrimiçi deneyin


6

JavaScript (ES6), 101 100 95 93 91 bayt

(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

Düzenleme: 0Bir Fibonacci numarası olarak destekleyerek 1 bayt kaydedildi . Değişkenleri yeniden adlandırarak 5 bayt artı 2 bayt (1 @ Arnauld sayesinde) kaydedildi. Arasında geçiş yaparak 2 bayt Kaydedilen +1, ++ve +=1.


cDeğişkenin tüm oluşumlarını değiştirmek Abir bayttan tasarruf etmelidir.
Arnauld

(Ben de yerini alabilir önermek üzereydim dile y, ama dmuhtemelen o ilk düzeltmek istiyorum böylece, güncel sürümü tanımlanmamış)
Arnauld

@Arnauld işaret için teşekkürler, ama yeniden adlandırarak düzeltme süslemeye ve başka bir byte tasarruf başardı aiçin m.
Neil

4

MATL , 30 karakter

Birlikte gittiğim karakter kümesi:

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

Diğer MATL cevabını alamadım ama bu çözümü bulmak için eğlendim.

Görev 1:

Üçüncü bileşik sayılar.

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

Çevrimiçi deneyin!

Görev 2:

Çarpım tablosu. MATL'nin çalışmasından dolayı kesinlikle en kolay iş

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

Çevrimiçi deneyin!

Görev 3:

Fibonacci test cihazı. Gerçeğe uygun girişler için pozitif bir tam sayı (1 veya 2), sahte girişler için 0 yazdırır.

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

Çevrimiçi deneyin!

Görev 4:

Güçlerin toplamı

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

Çevrimiçi deneyin!

Daha sonra daha ayrıntılı bir açıklama yapacağım, ancak %şimdilik, yorum karakteri olduğunu not etmelisiniz , yani programlar gerçekten:

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

4

PowerShell , 95 94 bayt

( TimmyD yine domuz pastırmamı koruyor )

Görev 1:

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

Çevrimiçi deneyin!


Görev 2:

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

Çevrimiçi deneyin!


Görev 3:

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

Çevrimiçi deneyin!


Görev 4:

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

Çevrimiçi deneyin!


Oh, bunun "$args"yerine dize etmek $args[0]zekice. Bunu bundan sonra kullanacağım.
AdmBorkBork

@TimmyD Evet, bunu tek baytlık tasarruf için, tek parametreli bir şey için kullanıyorum.
Britanist

@TimmyD iyi nokta! Emin olmak için hepsini tekrar yazmak zorunda kalırdım, tekrar ziyaret edip uygulayabilirim. Bir keresinde 4'ümü de bitirdim, optimizasyon konusunda kibar oldum.
briantist

TIO bağlantılarını ve benzerlerini yeniden yapmak istemiştim ama FINE @TimmyD Tembel olmayı bırakacağım ve yaptığım kadar iş yapmayan cömert önerinizi kullanacağım! (değiştirildi) :-p
briantist

Başka bir genel baytı kaydetmek ;için hesaplamayı değiştirerek Görev 4'ten elemeyi kaldırabilirsiniz ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s).
AdmBorkBork

3

Haskell , 77 76 karakter

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

Çevrimiçi deneyin!

--Bir satır yorumu başlatır, bu nedenle dört program da formdadır <program>--<unused chars>.

Görev 1:

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

En uzun program. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]sonsuz bir bileşik sayı listesi 1ve 0 indekslemesini düzelten bir başlangıç ​​verir . Kullanımı:

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

Görev 2:

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

Kullanımı:

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

Görev 3:

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

İade [0]truthy için ve []falsy için. Kullanımı:

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

Görev 4:

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

Kullanımı:

Prelude> o 5
3413

3

05AB1E , 21 bayt

Görev 1

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

Çevrimiçi deneyin!

Görev 2

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

Çevrimiçi deneyin!

Görev 3

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

Çevrimiçi deneyin!

Görev 4

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

Çevrimiçi deneyin!

açıklamalar

Tüm görevler qiçin programı sonlandırır, böylece aşağıdaki kod asla çalıştırılmaz.

Görev 1

Bu en büyük bayt domuzu. Buradaki küçük bir gelişme uzun bir yol kat edebilir.

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

Görev 2

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

Görev 3

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

Görev 4

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

1

Ruby, 83 82 80 78 karakter

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

Not: Fibonacci numaraları, Wikipedia'da açıklanan mükemmel kare yöntemi kullanarak dedektör: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers


yazılacak karakterler varsa, neden dize yerine bir yorumu kullanmıyorsunuz? Satır başına 2 karakter kazandırır '';vs#
Alexis Andersen

Teşekkürler, ama bana hile gibi geliyor.
GB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.