Jolly Jumper Sequence

15

Sekwencja n> 0 liczb całkowitych nazywana jest zworką, jeśli wartości bezwzględne różnicy między kolejnymi elementami przyjmują wszystkie wartości od 1 do n-1.

Zatem sekwencja [4,1,2,4] ma bezwzględne różnice [3,1,2], które są równoważne zestawowi [1,2,3] (1 do n-1, gdzie n jest długością oryginalnej sekwencji) dlatego jest to wesoły sweter.

Sekwencje mają długość n> 0.

Załóżmy, że n = 1 to wesoły skoczek.

Tryb łatwy: Nie martw się o standardowe wejście / standardowe wyjście. Tylko funkcja, która akceptuje argumenty i zwraca coś , co wskazuje na wesołość lub nie

Tryb trudny: Wejście na stdin (oddzielone spacją), a wyjście to „Jolly” / „Not jolly”. Kwestie kapitalizacji.

To jest kod golfowy.

EDYCJA: Sekwencje mogą zawierać ujemne liczby całkowite, a wejście na standardowe wejście jest oddzielone spacją.

$ jolly 2 -1 0 2
Jolly

$ jolly 19 22 24 25
Jolly

$ jolly 19 22 24 21
Not jolly
eternalmatt
źródło
1
Jak podana jest sekwencja? Jako sznurek? „4124”?
Steven Rumbalski,
Myślę, że separacja przestrzeni byłaby najczęstszą konwencją, więc to powiem.
eternalmatt
6
Mówisz, że wejście jest ustawione na standardowe wejście, ale twoje przykłady przyjmują dane wejściowe jako argumenty wiersza poleceń. Czego możemy się spodziewać?
Gareth,

Odpowiedzi:

3

Haskell

Łatwe 4 znaki

Zwraca listę wesołych liczb całkowitych wtedy i tylko wtedy, gdy jako dane wejściowe podano listę wesołych liczb całkowitych. Jest to legalne w oparciu o „Tylko funkcję, która akceptuje jednak argumenty i zwraca coś, co wskazuje na wesołość lub nie”.

j=id

Alternatywne łatwe rozwiązanie z 61 znakami:

Pobiera listę i zwraca pustą listę, jeśli sekwencja jest wesoła.

import List
j n=zipWith(\x->abs.(x-))n(tail n)\\[1..length n]
Thomas Eding
źródło
1
+1 Dobre zasady prawne. Chociaż powinienem zaznaczyć, że w GolfScript wystarczyłby pusty program ...
Peter Taylor,
Alternatywne rozwiązanie wydaje się dawać zły wynik. [1,3]nie jest wesoły, prawda? Myślę, że length n-1zamiast tego musisz powtórzyć .
Rotsor
2

Ruby, 92 93 znaków

Wersja trudna z wejściem na STDIN.

f=gets.split.each_cons(2).map{|a|eval(a*?-).abs}.sort
$><<(f==[*1..f.size]??J:"Not j")+"olly"

Jeśli zaczniesz od -pa(liczy się 4), możesz zapisać 5 znaków:

f=$F.each_cons(2).map{|a|eval(a*?-).abs}.sort
$_=(f==[*1..f.size]??J:"Not j")+"olly"
Howard
źródło
Ach, niezła poprawa. Nie zdawałem sobie sprawy, że istnieje metoda each_cons.
migimaru
Właśnie zdałem sobie sprawę, że to się nie udaje, gdy sekwencja jest pojedynczą cyfrą. Musisz trzymać się f.size zamiast f [-1].
migimaru
Och, możesz także zapisać 5 znaków, jeśli uruchomisz go z opcjami -pa.
migimaru,
2

Java (twarda)

Zakłada, że ​​dane wejściowe są przekazywane przez standardowe wejście. (nie poprzez argumenty wiersza poleceń jak w przykładzie)

Gra w golfa - 325

class JollyJumper {
public static void main(String[] args) {
String[] in = new Scanner(System.in).nextLine().split(" ");
int[] j=new int[in.length-1],k=j.clone();
for(int i=0;i<in.length-1;i++){j[i]=Math.abs(Integer.parseInt(in[i])-Integer.parseInt(in[i+1]));k[i]=i+1;}
Arrays.sort(j);System.out.println(Arrays.equals(j, k)?"Jolly":"Not jolly");
}
}

Bez golfa

public class JollyJumper {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] jolly;
    String[] in;

    in = sc.nextLine().split(" ");
    jolly = new int[in.length-1];

    for (int i = 0; i < in.length-1; i++)
        jolly[i] = Math.abs(Integer.parseInt(in[i]) - Integer.parseInt(in[i+1]));

    Arrays.sort(jolly);

    for (int i = 1; i <= in.length-1; i++) {
        if (jolly[i-1] != i) {
            System.out.println("Not jolly");
            return;
        }
    }
    System.out.println("Jolly");
}
}
josh-fuggle
źródło
2

Scala, tryb łatwy, 123 znaki

def j(s:String)={var a=s.sliding(2,1).map(x=>math.abs(x(0)-x(1))).toList
for(c<-1 to a.size)
if(!a.contains(c))false
true}

Aby uruchomić lub przetestować na ideone.com:

object Main
{
   def main(args:Array[String])
   {
      def j(s:String):Boolean=
      {
         var a=s.sliding(2,1).map(x=>math.abs(x(0)-x(1))).toList
         for(c<-1 to a.size)
            if(!a.contains(c)) false
         true
      }
      println(j("4124"))
   }
}
Gareth
źródło
Nazwą może być j zamiast skakać.
użytkownik nieznany
@ użytkownik nieznany Tak, wiem. Około pół godziny po tym, jak to opublikowałem, zdałem sobie sprawę, że a) mogę skrócić nazwę metody ib) muszę użyć Listy zamiast Zestawu, inaczej nie będzie działać poprawnie. : -S
Gareth,
Zaktualizowane zasady przewidują, że liczby zostaną podzielone przez spację, 4124 może być jedną, dwiema, trzema lub czterema liczbami.
użytkownik nieznany
@ użytkownik nieznany Oh great. Kolejna osoba zadaje pytanie, a następnie zmienia zasady w połowie.
Gareth,
Usunąłem Boolean typu return, dosłowny „return” przed „false” i zmieniłem Math na matematykę. Zapisywanie od 137 do 123.
użytkownik nieznany
2

Golfscript, tryb łatwy, 21 18 znaków

{.@-abs\}*;0]$.,,=

Akceptuje argumenty jako tablicę liczb całkowitych na stosie, bez żadnych innych elementów na stosie; pozostawia 1 na stosie, jeśli jest wesoły, a 0 w przeciwnym razie. Aby wziąć wejście na stdin jako oddzieloną spacjami listę liczb całkowitych, poprzedź

~]

i wypisać „Jolly” / „Not jolly” (zakładając, że przekształcamy to w program) po zakończeniu

"Not jJ"5/="olly"
Peter Taylor
źródło
Zastanawiałem się, jak to może działać - zajęło mi chwilę uświadomienie sobie, że kiedy piszesz „listę liczb całkowitych na stosie”, naprawdę masz na myśli listę liczb wewnętrznych (tj. [4 1 2 4]Nie 4 1 2 4).
Ilmari Karonen
@IlmariKaronen, nie jestem pewien, dlaczego napisałem „listę”. Zmodyfikowałem „tablicę”, aby była bardziej przejrzysta.
Peter Taylor
2

J (łatwy), 18

(i.@#-:<:/:])|2-/\
   (i. @ # -: <: /:]) | 2 - / \ 2 _1 0 2
1
   (i. @ # -: <: /:]) | 2 - / \ 19 22 24 25
1
   (i. @ # -: <: /:]) | 2 - / \ 19 22 24 21
0

J (trudny), 68

2!:55]1!:2&2'olly',~>('Not j';'J'){~(i.@#-:<:/:])|2-/\".@>2}.ARGV_j_
$ jconsole jumper.ijs 2 -1 0 2
Wesoły
$ jconsole jumper.ijs 19 22 24 25
Wesoły
$ jconsole jumper.ijs 2 19 22 24 21
Nie wesoły
efemeryczny
źródło
2

Brachylog , 11 bajtów (łatwy)

s₂ᶠ-ᵐȧᵐo~⟦₁

Wypróbuj online!

s₂ᶠ-ᵐ - Kolejne różnice

ȧᵐ - Wartości bezwzględne

o - Sortuj

~⟦₁ - Czy wynikiem jest zakres od 1 do czegoś?

sundar - Przywróć Monikę
źródło
1

J, 30 26 tryb łatwy, 81 76 tryb trudny

edycja: obsługa list krótszych niż 3, poprawianie odczytu standardowego

Pierwsza linia zajmuje tryb łatwy, druga dodaje tryb trudny.

j=:[:*/[:(>:@i.@#=/:~)[:|2-/\]
exit('olly',~[:>('Not j';'J'){~[:j 0".}:)&.stdin''

J czyta ogólnie od prawej do lewej:

2-/\ : na każde dwa kolejne numery na liście weź różnicę

| : całkowita wartość

/:~ : sortuj rosnąco

>:@i.@#: 1 do n , dla listy n liczb

= : porównaj posortowane różnice z sekwencją (używając „widelca” J)

*/: pomnóż wszystkie elementy logiczne; jeśli wszystkie porównania były równe 1, ich iloczyn wynosi 1, więc jest wesoły

DCharness
źródło
Rozważ wejście 1 3.
Peter Taylor,
Dzięki, @Peter. Naprawiono ... i nadal nie konkuruje z twoim Golfscript. Dobra robota.
DCharness
1

Rubin, 97102 106 (twardy)

Może również, ponieważ wszyscy inni to:

h,*t=gets.split
d=t.map{|i|h,i=i,h;eval(i+?-+h).abs}.sort
$><<(d==[*1..d.size]??J:"Not j")+"olly"

Dane wejściowe pobrane na standardowe wejście.

migimaru
źródło
Można zastąpić (1..d.size).to_aprzez [*1..d.size]. Przełączanie operandów jest teraz możliwe, zapisuje kolejny (łącznie -5 znaków).
Howard
@Howard Och, więc tak to robisz! Od jakiegoś czasu próbowałem znaleźć sposób na golfa, aby przekonwertować zakresy na tablice. Dzięki!
migimaru,
1

re

łatwe ( 103 83 znaków)

zwraca sumę 1..i. długości na Jolly inną liczbę, jeśli nie (tutaj trochę zasad)

import std.math;auto jolly(I)(I i){int t,l;foreach(r;i){t+=abs(l-r);l=r;}return t;}

twardy (142 znaki)

dane wejściowe są rozdzielane białymi znakami i kończą się na EOF

import std.stdio;import std.math; void main(){int i,j,l,t;while(readf("%d ",&i)>0){t+=abs(l-i);l=i;j++;}write(t==j*++j/2?"J":"Not j","olly");}
maniak zapadkowy
źródło
1

Groovy

Łatwe: 78

j={m=[];it[1..-1].inject(it[0]){p,n->m<<p-n;n};m*.abs().sort()==1..<it.size()}

assert [[2, -1, 0, 2,], [19, 22, 24, 25], [19, 22, 24, 21]].collect { j(it) } == [true, true, false]

Trudny: 151

j={m=[];it[1..-1].inject(it[0]){p,n->m<<p-n;n};m*.abs().sort()==1..<it.size()};System.in.eachLine{println "${j(it.split()*.toLong())?'J':'Not j'}olly"}
Armand
źródło
1

PowerShell, twardy, 117126

('Not j','J')["$(($a=-split$input)|%{if($x-ne$0){[math]::abs($x-$_)}$x=$_}|sort)"-eq"$(1..($a.Count-1)|sort)"]+'olly'

Historia:

  • 2011-11-18 17:54 ( 123 , −3) - Zmieniono $nullna nieistniejącą zmienną
  • 18.11.2011 18:02 ( 117 , −6) - wstawiono wszystkie deklaracje zmiennych
Joey
źródło
1

Scala

Szybkie dźgnięcie - prawdopodobnie możliwe są ulepszenia.

Łatwe: 77

def j(? :Int*)=(?tail,?).zipped.map(_-_).map(math.abs).sorted==(1 to?.size-1)

Trudne: 124

val? =args.map(_.toInt)toSeq;print(if((?tail,?).zipped.map(_-_).map(math.abs).sorted==(1 to?.size-1))"Jolly"else"Not jolly")
Luigi Plinge
źródło
Ok - zgubiliśmy się, Luigi nas znalazł! :) Witamy na CodeGolf. Natychmiast zaczynam się czegoś uczyć. Znak zapytania jako identyfikator? Whooo - kto na to pozwolił? :)
użytkownik nieznany
Tak, i wszyscy golą 1 postać! Jest to różnica między znakami alfanumerycznymi a znakami operatora (patrz stackoverflow.com/q/7656937/770361 ), co oznacza, że ​​czasami możesz pominąć spacje (ale czasami potrzebujesz dodatkowych) i kropek. Code golf jest świetny do nauki - trochę jak akrobacje latające.
Luigi Plinge
1

Q, 64 (trudny), 30 (łatwy)

ciężko

{$[(1_(!)(#)x)~asc abs 1_(-':)x;(-1"Jolly";);(-1"Not jolly";)];}

łatwo

{(1_(!)(#)x)~asc abs 1_(-':)x}
tartin
źródło
1

J (łatwy), 19 znaków

*/(=i.@#)<:/:~|2-/\

Stosowanie:

    */(=i.@#)<:/:~|2-/\4 2 1 4
1

Różni się podobnie do odpowiedzi DCharness , i dodałbym to tylko jako komentarz, ale z uwagi na fakt, że nie odwiedził go od 23 lutego.

2-/\ bierze różnicę między kolejnymi parami liczb,

| pobiera wartość bezwzględną każdej liczby,

/:~ sortuje w kolejności rosnącej,

<: zmniejsza każdą liczbę o 1,

(=i.@#)hak J który generuje sekwencje liczb od 0 do długości listy Różnice - 1 ( i.@#) i porównuje ją z tej listy =.

*/wielokrotności lista 1s i 0s generowane przez poprzedniego czasownika.

Gareth
źródło
Nie zdawałem sobie sprawy, dopóki nie przesłałem odpowiedzi: przyjęliśmy to samo podejście, ale użyłem x-:yzamiast */x=yuratować postać.
ephemient
1

Scala easy: 138153, 170 (był błędny, poprawiony później)

def j(i:String)={
def a(s:Seq[Int])=(s zip s.tail).map(x=>(x._2-x._1))
a(a(i.split(" ").map(_.toInt)).map(math.abs).sorted).toSet.size==1}

bez golfa:

def jolly (input: String) = { 
      val list = input.split (" ").map (_.toInt)

      def stepsize (s: Seq[Int]) = 
        (s zip s.tail).map (x=> (x._2 - x._1))

      val first = stepsize (input.split (" ").map (_.toInt))
      val pos = first.map (math.abs)
      val unique = stepsize (pos.sorted).toSet
      (unique.size) == 1
}

Chodzi o to, że budujemy drugą pochodną:

Original: 4 1 2 4
Stepsize:  -3 1 2 (first)
     abs:   3 1 2
  sorted:   1 2 3 
Stepsize:     1 1 
  to Set:       1 
    size:       1

Scala hard 172 182, 205 (był błędny / poprawiony):

def j{
def a(s:Seq[Int])=(s zip s.tail).map(x=>(x._2-x._1))
println((if(a(a(readLine.split(" ").map(_.toInt)).map(math.abs).sorted).toSet.size==1)"J"else"Not j")+"olly")}
j

mniej więcej tak samo jak powyżej.

nieznany użytkownik
źródło
Dane wejściowe 4 1 2 5zwracają wartość true. Nadal jednak nie udało mi się obejść tego lewego zagięcia ...
Gareth
O tak, znalazłem swój błąd. Musisz to poprawić.
użytkownik nieznany
readLinepobiera dane z konsoli, a nie ze standardowego ... (ale możesz użyć argszamiast tego)
Luigi Plinge,
I j("1")rzucaUnsupportedOperationException: empty.max
Luigi Plinge,
Przepraszam - jak zdefiniować różnicę między standardowym wejściem a „wejściem z konsoli”?
użytkownik nieznany
1

PHP, łatwa, 129

Dla danej tablicy $s liczb całkowitych:

for($i=1;$i<count($s);$i++)$a[abs($s[$i]-$s[$i-1])]=1;
for($i=1;$i<count($s);$i++)if(!isset($a[$i]))die('Not Jolly');echo 'Jolly';

Wersja bez golfa:

for( $i=1; $i<count( $s ); $i++ )
    $a[ abs( $s[$i] - $s[$i-1] ) ] = 1;

for( $i=1; $i < count($s); $i++ )
    if( !isset( $a[$i] ) )
        die( 'Not Jolly' );

echo "Jolly";        
Barry O'Donovan
źródło
1

Galaretka , 7 6 bajtów (łatwa)

IAṢ⁼J$

Wypróbuj online!

IAṢ⁼J$    jolly function on N:
IAṢ       the increment list: get all the Increments, take their Absolute values, and Ṣort them
   ⁼      compare that to...
    J$    range from 1 to len(N) -- this has an extra number, but that's fine because...
          ...the increment list is one shorter, and ⁼ will only compare that many values

Pobiera dane wejściowe jako liczby oddzielone przecinkami w pierwszym argumencie. Zwraca 1, jeśli sekwencja jest wesoła, a 0, jeśli nie!

7-bajtowe rozwiązanie:

LRṖḟIA$

Wypróbuj online!

Pobiera dane wejściowe jako liczby oddzielone przecinkami w pierwszym argumencie. Nic nie zwraca, jeśli lista jest wesołą sekwencją zworek i coś w tym rodzaju jeśli nie jest.

Dodanie tej linii sprawia, że ​​działa ona z twardą specyfikacją:

Galaretka , 27 22 bajtów (twarda, mile widziane opinie!)

ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»

Wypróbuj online!

ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
ɠḲV                     read a line, split on spaces and eValuate the numbers
   IAṢ⁼J$               jolly function: see above!
         ị              ịndex the result into (remember Jelly is one-indexed, so 0 wraps around to the back):
          “¢⁼D“          "Jolly" compressed if true,
              ¡KṀȥƘạ»   or, "Not jolly" compressed if false!

27-bajtowe (twarde) rozwiązanie:

LRṖḟIA$
ɠḲVÇ“¡KṀȥƘạ»“¢⁼D»L?

Wypróbuj online!

Włącza liczby oddzielone spacją stdin i „Jolly” lub „Not jolly”.

Wyjaśnienie:

LRṖḟIA$               jolly function:
LRP                   make a range (R) from 1 to the input length (L), popping off (P) the last number to make it 1 to N-1.
   ḟ                  reverse filter: remove all the elements from that range that are members of...
    IA$               the increment list: get all the increments, take their absolute values (expressed as one monad via '$').
ɠḲVÇ“¡KṀȥƘạ»“¢⁼D»L?    i/o main function:
ɠḲV                   read a line from stdin, split it on spaces and have Python parse each number (handling negative signs)
   Ç             ?    run the above, and use the result on the following conditional:
                L?    if the length of the result is truthy (non-empty):
    “¡KṀȥƘạ»          then, return Jelly compressed string "Not jolly",
            “¢⁼D»     else, return Jelly compressed string "Jolly".

Wszelkie opinie bardzo mile widziane!

Złupić
źródło
1
LRjest J. Jeśli napiszesz coś takiego IAṢ⁼J$, uzyskasz ładny wynik 1/0 i możesz użyć tego do indeksowania w “Not jolly“Jolly”:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
Lynn
@ Lynn Dziękuję, to znacznie lepsze! Sprytna sztuczka z zawijaniem jednego indeksu, a także dowiedziałam się więcej o atomie, przydatna do porównania tylko części list.
Harry
1

Haskell , 59 57 bajtów

f n=all(`elem`map abs(zipWith(-)n$tail n))[1..length n-1]

Tryb łatwy, zwraca radość jako wartość logiczną. Dzięki @Laikoni za dwa bajty.

Wypróbuj online!

Angs
źródło
1

Japt , 32 30 bajtów Hard

-2 bajty od @Shaggy

`not jo¥y`s4*Näa n äa e¥1
hUÎu

Wypróbuj online!

Luis Felipe De Jesus Munoz
źródło
1
30 bajtów . Dopiero w ostatniej sekundzie zauważyłem wymóg kapitalizacji, więc prawdopodobnie można go jeszcze poprawić.
Kudłaty
1

Python 3, 117 (trudny)

l=[*map(int,input().split())]
print(["Not j","J"][{abs(a-b)for a,b in zip(l[1:],l[:-1])}=={*range(1,len(l))}]+"olly")

Wypróbuj online!

Андрей Ломакин
źródło
Wystąpił błąd w twoim programie. Wypróbuj online
mbomb007
To daje złą odpowiedź dla pierwszego przypadku testowego. Sprawdź swój program pod kątem przypadków testowych zawartych w pytaniu.
mbomb007
Wstydź się, bo gdy naprawiona zła wersja zapomniała odwrócić wyjścia; (
Андрей Ломакин
Witamy w PPCG !!
Luis felipe De jesus Munoz
0

JavaScript: 105 (tryb łatwy)

Gra w golfa:

function a(l){for(r=i=1;i<(m=l.length);i++){for(j=t=0;j+1<m;)t+=(d=l[j]-l[++j])*d==i*i;t||(r=0)}return r}

Bez golfa:

function isJolly(list){
    //Iterate over i to list.length-1
    for(r=i=1;i<(length=list.length);i++){
        //Check the differences between all consecutive elements squared minus i squared.  Set t to true if one was found.
        for(j=t=0;j+1<length;)t+=(diff=list[j]-list[++j])*diff==i*i;

        //if t is not true, return value is 0
        t||(r=0)
    }
    return r
}
Briguy37
źródło
0

Perl, 89 (trudny)

86 znaków kodu + 3 do uruchomienia z -popcją

@a=0;$a[abs($1-$2)]=1while s/(\S+) (\S+)/$2/;$_='Jolly';(grep{!defined}@a)&&s/J/Not j/
DCharness
źródło
0

JavaScript (trudny): 138

a=prompt().split(" ")
i=0;b=[];c=[]
while(b[i]=Math.abs(a[i]-a[++i]),c[i-1]=i,i<a.length-1);b.sort()
alert(b+""==c+""?"Jolly":"Not jolly")
Peter Olson
źródło
0
    #!/usr/bin/env python

def main():
    pass

if __name__ == '__main__':
    main()

numbers = []
jolly_list = []

numbers = raw_input("Enter Numbers: ").split()
for count in range ( len(numbers)-1 ) :
    jolly_list.append ( abs( int(numbers[count]) - int(numbers[count+1]) ) )

jolly_list = sorted(jolly_list)
for count in range(len(jolly_list)) :
    flag = 0
    if count+1 == jolly_list[count] :
        flag = 1
    else :
        flag = 0
        print "Not Jolly"
        break
if flag == 1:
    print "Jolly"
John Miller
źródło
2
Witaj John i witaj. Ideą golfa kodowego jest zmniejszenie rozmiaru tak daleko, jak to możliwe. Nie jestem pytonianinem, ale „Enter Numbers” jest zdecydowanie zbyteczne.
użytkownik nieznany
0

R, łatwa, 110

f=function(s){p=NULL;l=length;for (i in 2:l(s))p=c(p,abs(s[i]-s[i-1]));ifelse(all(sort(p)==(1:(l(s)-1))),1,0)}

Stosowanie:

f(c(2, -1, 0, 2))
[1] 1
f(c(19, 22, 24, 25))
[1] 1
f(c(19, 22, 24, 21))
[1] 0
Paolo
źródło
0

Python, 72 (łatwy), 114 (trudny)

Łatwo:

def f(a):return len(set(map(lambda x,y:abs(x-y),a[1:],a[:-1])))>len(a)-2

Trudne :

a=map(int,raw_input().split())
print('Not j','J')[len(set(map(lambda x,y:abs(x-y),a[1:],a[:-1])))>len(a)-2]+'olly'
hallvabo
źródło
0

Python, 255 znaków

r=[19,22,24,25]
i=0
k=[ i+1 for i in range(len(r)-1)]
def jolly(a):
    p=[]
    i=0
    while i<len(a)-1: 
       p.append(abs(a[i+1]-a[i]))
       i+=1
    p.sort() 
    if p==k:
       return 'jolly'
    else:
       return 'Not jolly'

print(jolly(r))
Ashwini Chaudhary
źródło
Dodałem nazwę języka i liczbę znaków do twojej odpowiedzi (działa jako Python, więc zakładam, że tak jest). Podana przeze mnie liczba znaków jest podana przez skrypt użytkownika . Prawdopodobnie możesz obniżyć pierwszy poziom wcięcia do jednego miejsca, aby uratować tutaj kilka postaci.
Gareth
0

C, 119 (trudny), 97 (łatwy)

b,c,a[];main(k){while(~scanf("%d",a+c))k=c++;for(c=k;b<c*c;)k-abs(a[b%c]-a[b++%c+1])?:k--;puts(k?"Not jolly":"Jolly");}

Łatwe rozwiązanie odczytuje dane wejściowe z argumentów i zwraca 0 jako kod wyjścia, jeśli dane wejściowe to wesoła sekwencja zworek:

i,k;main(int c,char**a){for(k=c-=2,a++;i<c*c;)k-abs(atoi(a[i%c])-atoi(a[i++%c+1]))?:k--;exit(k);}
quasimodo
źródło
0

APL ( 50 49 47, twardy)

'Not jolly' 'Jolly'[1+K[⍋K←¯1↓|Z-1⌽Z]≡¯1↓⍳⍴Z←⎕]

Łatwe (24):

{K[⍋K←¯1↓|⍵-1⌽⍵]≡¯1↓⍳⍴⍵}

Funkcja przyjmuje tablicę i zwraca 0 lub 1.

marinus
źródło