छलांग की न्यूनतम संख्या


14

संख्याओं के अनुक्रम को देखते हुए, प्रारंभिक स्थिति से अंत तक जाने के लिए और फिर से प्रारंभिक स्थिति में वापस आने के लिए न्यूनतम संख्या की छलांग लगाएं।

अनुक्रम का प्रत्येक तत्व अधिकतम चालों को दर्शाता है जो उस स्थिति से आगे बढ़ सकते हैं।

किसी भी स्थिति में, आप अधिकतम k चालों पर छलांग लगा सकते हैं, जहाँ k उस स्थिति में संग्रहीत मान है। अंत तक पहुंचने के बाद, आप कूदने के लिए केवल उन पदों का उपयोग कर सकते हैं जो पहले कूदने के लिए उपयोग नहीं किए गए हैं।

इनपुट को सिंगल-स्पेस द्वारा अलग किए गए नंबरों के अनुक्रम के रूप में दिया जाएगा। आउटपुट एक एकल संख्या होनी चाहिए जो कि उपयोग की जाने वाली कूद की न्यूनतम संख्या है। यदि इसका अंत संभव नहीं है और प्रारंभिक स्थिति में वापस आ जाए, तो -1 प्रिंट करें

इनपुट:

2 4 2 2 3 4 2 2

आउटपुट:

6 (अंत तक पहुंचने के लिए 3 और वापस आने के लिए 3)

इनपुट

१ ०

उत्पादन

-1

ध्यान दें

  • अनुक्रम के सभी नंबरों को गैर-नकारात्मक मान लें

EDIT 1

पंक्ति "इस प्रकार, यह स्पष्ट होना चाहिए कि व्यक्ति हमेशा अंतिम स्थिति से कूद सकता है।" भ्रामक हो सकता है, इसलिए मैंने इसे प्रश्न से हटा दिया। प्रश्न पर इसका कोई प्रभाव नहीं पड़ेगा।

जीत का मानदंड:

विजेता सबसे कम कोड वाला होगा।


3
Thus, it should be clear that one can always jump from the last position.- क्या कोई 1 0प्रतिघात नहीं है?
डेनियल लुबरोव

@Daniel नहीं। जंप की संख्या उस स्थिति में संग्रहीत मूल्य के बराबर होगी। अंतिम स्थिति हमेशा एक उम्मीदवार है जिसमें से एक कूद सकता है क्योंकि इस स्थिति का उपयोग पहले कूदने के लिए नहीं किया गया था।
कोडिंग मैन

1
यह विवरण भ्रमित करने वाला है क्योंकि "जंप" का उपयोग दो अलग-अलग चीजों के अर्थ के लिए किया जाता है, और केवल एक वास्तविक उदाहरण के साथ, यह अवहेलना करना मुश्किल है कि कौन सा अर्थ किस उपयोग के साथ जाता है। मैं एक विवरण पसंद करता हूं, जो कहता है, "कूदता है" और "चाल"। इस शब्दावली के साथ, आप कहेंगे कि प्रत्येक चाल में कुछ संख्या में कूद होते हैं। इनपुट में नंबर अधिकतम संख्या में जंप प्रदान करते हैं, और आउटपुट को न्यूनतम रूप से चाल की संख्या की रिपोर्टिंग के रूप में वर्णित किया जा सकता है।
ब्रेडबॉक्स

1
जीतने की कसौटी क्या है? जैसा कि आपने कोड-गोल्फ के साथ-साथ कोड-चुनौती को भी टैग किया है यह स्पष्ट नहीं है।
हॉवर्ड

@breadbox हाँ। मैं सहमत हूँ, इसके अस्पष्ट। मैं जल्द ही सवाल को अपडेट करूंगा।
कोडिंग मैन

जवाबों:


4

एपीएल (डायलॉग), ११६

f←{{⊃,/{2>|≡⍵:⊂⍵⋄⍵}¨⍵}⍣≡1{(⍴⍵)≤y←⊃⍺:⍵⋄⍵[y]=0:0⋄x←⍵⋄x[y]←0⋄∇∘x¨,∘⍺¨y+⍳y⌷⍵},⍵}
{0≡+/⍵:¯1⋄(⌊/+/0=⍵)-+/0=x}↑⊃,/f¨⌽¨f x←⎕

परीक्षण के मामलों

      2 4 2 2 3 4 2 2
6
      1 0
¯1
      1 1 1 1
¯1
      3 1 2 0 4
3
      1
0

पहुंच

एक पुनरावर्ती कार्य का उपयोग करते हुए दृष्टिकोण एक क्रूर बल खोज है।

स्थिति 1 से शुरू होकर, वर्तमान स्थिति में मान 0 पर सेट करें और उन पदों की एक सरणी उत्पन्न करें जिन्हें वर्तमान स्थिति से कूदना हो। नई स्थिति और संशोधित सरणी को स्वयं पास करें। आधार स्थिति तब होती है जब वर्तमान स्थिति में मान 0 होता है (कूद नहीं सकता) या अंत तक पहुंच रहा है।

फिर, उत्पन्न प्रत्येक सरणी के लिए, इसे उल्टा करें और फिर से खोज करें। क्योंकि जम्प किए गए पद 0 पर सेट हैं, हम फिर से वहां से नहीं जा सकते।

उन सरणी के लिए जो हम अंत तक पहुंचे, उन लोगों को खोजें जिनकी संख्या न्यूनतम 0 है। इसे से घटाकर प्रारंभिक सरणी में 0 की संख्या वास्तविक प्रदर्शन की गई छलांग देती है।


4

गणितज्ञ, 197 193 वर्ण

पाशविक बल।

Min[Length/@Select[Join[{1},#,{n},Reverse@#2]&@@@Tuples[Subsets@Range[3,n=Length[i=FromDigits/@StringSplit@InputString[]]]-1,2],{}⋃#==Sort@#∧And@@Thread[i[[#]]≥Abs[#-Rest@#~Append~1]]&]]/.∞->-1 

बहुत प्रभावशाली काम है। यह क्रूर बल हो सकता है, लेकिन फिर भी यह बहुत सुंदर है।
डेविड

3

गणितज्ञ 351

[नोट: यह अभी तक पूरी तरह से गोल्फ नहीं है; साथ ही, आवश्यक प्रारूप को फिट करने के लिए इनपुट को समायोजित करने की आवश्यकता है। और नो-जंपिंग-ऑन-ए-ही-पोज़िशन-टू-रूल नियम को लागू करने की आवश्यकता है। कुछ कोड स्वरूपण मुद्दे भी हैं जिन्हें संबोधित करने की आवश्यकता है। लेकिन यह एक शुरुआत है।]

प्रत्येक स्थिति के अनुरूप नोड्स के साथ एक ग्राफ का निर्माण किया जाता है, यानी प्रत्येक इनपुट अंक एक छलांग का प्रतिनिधित्व करता है। DirectedEdge[node1, node2]यह दर्शाता है कि नोड 1 से नोड 2 तक कूदना संभव है। सबसे छोटे रास्ते शुरू से अंत तक और फिर अंत से शुरू तक पाए जाते हैं।

f@j_:=
(d={v=FromCharacterCode/@(Range[Length[j]]+96),j}\[Transpose];
w[n_,o_:"+"]:={d[[n,1]],FromCharacterCode/@(ToCharacterCode[d[[n,1]]][[1]]+Range[d[[n,2]]]  
If[o=="+",1,-1])};

y=Graph[Flatten[Thread[DirectedEdge[#1,#2]]&@@@(Join[w[#]&/@Range[8],w[#,3]&/@Range[8]])]];

(Length[Join[FindShortestPath[y,v[[1]],v[[-1]]],FindShortestPath[y,v[[-1]],v[[1]]]]]-2)
/.{0-> -1})

प्रयोग

f[{2,4,2,2,3,4,2,2}]
f[{3,4,0,0,6}]
f[{1,0}]

6
3
-1


यह आंशिक रूप से गलत है क्योंकि यह नंबर दो बार नियम पर कोई कूदने को लागू नहीं करता है, लेकिन यह एक शुरुआत है, इसलिए मैं इसके लिए तैयार रहूंगा। मुझे नहीं पता है कि अगर यह था भी संभव :) था
दरवाज़े

तुम सही हो। मैंने नो-जंपिंग-ऑन-ए-नंबर दो बार नियम को अनदेखा किया कल मैं इसे ठीक करने की कोशिश करूंगा।
3

3

पायथन 304

मुझे लगता है कि यह नया दृष्टिकोण हल करता है (मुझे उम्मीद है!) [2,0] मामले और इसी तरह के सभी मुद्दों के बारे में:

इस संस्करण में अंत तक इनपुट अनुक्रम का पता लगाया जाता है (यदि संभव हो तो) और फिर हम उलटे अनुक्रम के साथ फिर से प्रक्रिया शुरू करते हैं। अब हम यह पुष्टि कर सकते हैं कि हर वैध समाधान के लिए अंतिम तत्व में से एक कूदता है।

## Back and forward version

# Changed: now the possible jumps from a given L[i] position  
# are at most until the end of the sequence 
def AvailableJumps(L,i): return range(1,min(L[i]+1,len(L)-i))

# In this version we add a boolean variable bkw to keep track of the
# direction in which the sequence is being traversed
def Jumps(L,i,n,S,bkw):
    # If we reach the end of the sequence...
    # ...append the new solution if going backwards
    if (bkw & (i == len(L)-1)): 
            S.append(n)
    else:
        # ...or start again from 0 with the reversed sequence if going forward
        if (i == len(L)-1):
            Jumps(L[::-1],0,n,S,True)    
        else:
            Laux = list(L)
            # Now we only have to disable one single position each time
            Laux[i] = 0
            for j in AvailableJumps(L,i):
                Jumps(Laux,i+j,n+1,S,bkw)

def MiniJumpBF(L):
    S = []        
    Jumps(L,0,0,S,False)
    return min(S) if (S) else -1

ये गोल्फ के संस्करण हैं:

def J(L,i,n,S,b):
    if (i == len(L)-1):
        S.append(n) if b else J(L[::-1],0,n,S,True)
    else:
        L2 = list(L)
        L2[i] = 0
        for j in range(1,min(L[i]+1,len(L)-i)):
            J(L2,i+j,n+1,S,b)
def MJ(L):
    S = []        
    J(L,0,0,S,False)
    return min(S) if (S) else -1

और कुछ उदाहरण:

MJ( [2, 4, 2, 2, 3, 4, 2, 2] ) -->  6
MJ( [0, 2, 4, 2, 2, 3, 4, 2, 2] ) -->  -1
MJ( [3, 0, 0, 1, 4] ) -->  3
MJ( [2, 0] ) -->  -1
MJ( [1] ) -->  0
MJ( [10, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 10] ) -->  4
MJ( [3, 2, 3, 2, 1] ) -->  5
MJ( [1, 1, 1, 1, 1, 1, 6] ) -->  7
MJ( [7, 1, 1, 1, 1, 1, 1, 7] ) -->  2

आगे गोल्फ के लिए बड़ी संभावना है। लेकिन इनपुट और आउटपुट की कोई संभाल नहीं है, जो इस समस्या का हिस्सा है।
मोनिका

1
आप टन अनावश्यक खाली स्थान के का ...
दरवाज़े

3

आर - 195

x=scan(nl=1)
L=length
n=L(x)
I=1:(2*n-1)
P=n-abs(n-I)
m=0
for(l in I)if(any(combn(I,l,function(i)all(P[i[c(1,k<-L(i))]]==1,n%in%i,L(unique(P[i]))==k-1,diff(i)<=x[P][i[-k]])))){m=l;break}
cat(m-1)

सिमुलेशन:

1: 2 4 2 2 3 4 2 2   # everything after 1: is read from stdin
6                    # output is printed to stdout

1: 1 0               # everything after 1: is read from stdin
-1                   # output is printed to stdout

डी-golfed:

x = scan(nlines = 1)       # reads from stdin
n = length(x)
index    = 1:(2*n-1)       # 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
position = c(1:n, (n-1):1) # 1  2  3  4  5  6  7  8  7  6  5  4  3  2  1
value    = x[position]     # 2  4  2  2  3  4  2  2  2  4  3  2  2  4  2
is_valid_path = function(subindex) {
  k = length(subindex)
  position[subindex[1]] == 1                  & # starts at 1
  position[subindex[k]] == 1                  & # ends at 1
  n %in% subindex                             & # goes through n (end of vector)
  length(unique(position[subindex])) == k - 1 & # visits each index once (except 1)
  all(diff(subindex) <= value[subindex[-k]])
}
min_length = 0
for(len in index) {
  valid_paths = combn(index, len, FUN = is_valid_path)
  if (any(valid_paths)) {
    min_length = len
    break
  }
}
min_jumps = min_length - 1
cat(min_jumps)             # outputs to stout

2

अजगर 271

यह मेरा समाधान है:

## To simplify the process we unfold the forward-backward sequence
def unfold(L): return L + L[:-1][::-1]

## Possible jumps from a given L[i] position
def AvailableJumps(L,i): return range(1,L[i]+1)

# To disable a used position, in the forward and backward sites
# (the first one is not really necessary)
def Use(L,i):
    L[i] = 0
    L[ len(L) - i - 1] = 0
    return L

def Jumps(L,i,n,S):
    if (i >= len(L)-1): 
        S.append(n)
    else:
        Laux = list(L)
        Use(Laux,i)
        for j in AvailableJumps(L,i):
            Jumps(Laux,i+j,n+1,S)

def MiniJump(L):
    S = []        
    Jumps(unfold(L),0,0,S)
    return min(S) if (S) else -1

उदाहरण:

print MiniJump([2,4,2,2,3,4,2,2])
print MiniJump([0,2,4,2,2,3,4,2,2])

और ये (अब तक आंशिक रूप से) गोल्फ संस्करण हैं:

def J(L,i,n,S):
    if (i >= len(L)-1): S.append(n)
    else:
        La = list(L)
        La[len(La) - i - 1] = 0
        for j in range(1,L[i]+1):
            J(La,i+j,n+1,S)

def MJ(L):
     S = []        
     J(L + L[:-1][::-1],0,0,S)
     return min(S) if (S) else -1

कुछ उदाहरण:

print MJ([2,4,2,2,3,4,2,2])
print MJ([0,2,4,2,2,3,4,2,2])
print MJ([3,4,0,0,6])

गलत। इनपुट [1] पर, आउटपुट 0 होना चाहिए (आपका आउटपुट 1 है)। इनपुट [3,0,0,1,4] पर, आउटपुट 3 होना चाहिए (आपका आउटपुट -1 है)
कोडिंग मैन

@ कोडिंग मैन: ओह, सॉरी। इसमें एक्स्ट्रा जंप की जांच थी। if (i> = len (L) -1): S.append (n) समस्या को हल करने के लिए लगता है
Triadic

फिर भी गलत आउटपुट दे रहा है। Ex: [2,0] ---> 1 (-1 होना चाहिए)।
कोडिंग मैन

@ कोडिंग मैन: मुझे लगता है कि मेरा समाधान "इस प्रकार है, यह स्पष्ट होना चाहिए कि व्यक्ति हमेशा अंतिम स्थिति से कूद सकता है।", जैसा कि मैं [2,0] ---> 1 एक वैध समाधान मानता हूं, क्योंकि यह कूदता भर में अंत।
ट्राइसिक

1
मैं इन सभी गलतियों के लिए माफी मांगता हूं। पंक्ति "इस प्रकार, यह स्पष्ट होना चाहिए कि व्यक्ति हमेशा अंतिम स्थिति से कूद सकता है।" निकाल दिया गया है। इसका उपयोग सिर्फ यह कहने के लिए किया गया था कि जब हम अनुक्रम में आगे बढ़ते हैं तो अंतिम स्थिति का उपयोग कभी नहीं किया गया था। इसलिए, जब हम पीछे की ओर बढ़ते हैं तो इसका इस्तेमाल हमेशा कूदने के लिए किया जा सकता है। लेकिन, [2,0] में अंतिम स्थान पर मान 0 है, आप अधिकतम 0 चालों की छलांग लगा सकते हैं। इसलिए, आप कभी भी शुरुआती स्थिति तक नहीं पहुंच सकते। प्रश्न अद्यतन किया गया है।
कोडिंग मैन

2

रूबी - 246

a=gets.split.map &:to_i
L=a.size;r=[];a.collect!{|v|([1,v].min..v).to_a};S=a[0].product *a[1..-1];S.each{|s|i=0;b=L==1&&s[i]!=0 ?0:1;(L*2).times{|c|r<<c if i==L-1&&b==0;break if !s[i]||s[i]==0;if i==L-1;b=i=0;s.reverse!end;i+=s[i]}}
puts r.min||-1

सिमुलेशन:

2, 4, 2, 2, 3, 4, 2, 2
6

0, 2, 4, 2, 2, 3, 4, 2, 2
-1

0
-1

1
0

2

रूबी - लगभग 700 गोल्फ। मैंने एक गोल्फ संस्करण शुरू किया, जिसमें चर और विधियों के एकल-चरित्र नाम हैं, लेकिन थोड़ी देर बाद मुझे गोल्फ की तुलना में एल्गोरिथम में अधिक रुचि मिली, इसलिए कोड लंबाई को अनुकूलित करने की कोशिश करना बंद कर दिया। न ही मुझे इनपुट स्ट्रिंग मिलने की चिंता थी। मेरा प्रयास नीचे है।

आपको यह समझने में मदद करने के लिए कि यह कैसे काम करता है मैंने टिप्पणियों को शामिल किया है जो दिखाते हैं कि एक विशेष स्ट्रिंग (u = "2 1 4 3 0 3 4 4 3 3 5 0 3") में हेरफेर किया गया है। मैं "स्ट्रीम में चट्टानों" के संयोजन की गणना करता हूं जो कि हॉप करने के लिए उपलब्ध हैं। इन्हें बाइनरी स्ट्रिंग के साथ दर्शाया गया है। मैं उदाहरण 0b0101101010 टिप्पणियों में देता हूं और दिखाता हूं कि इसका उपयोग कैसे किया जाएगा। प्रारंभिक यात्रा के लिए उपलब्ध चट्टानों की स्थिति के लिए 1 का पत्राचार; वापसी यात्रा के लिए 0 है। इस तरह के प्रत्येक आवंटन के लिए, मैं प्रत्येक दिशा में आवश्यक हॉप्स की न्यूनतम संख्या निर्धारित करने के लिए गतिशील प्रोग्रामिंग का उपयोग करता हूं। कुछ संयोजनों को जल्दी खत्म करने के लिए मैं कुछ सरल अनुकूलन भी करता हूं।

मैंने इसे अन्य उत्तरों में दिए गए तार के साथ चलाया है और समान परिणाम प्राप्त करता हूं। यहाँ कुछ अन्य परिणाम प्राप्त हुए हैं:

"2 1 4 3 0 3 4 4 3 5 0 3"                             # =>  8
"3 4 3 5 6 4 7 4 3 1 5 6 4 3 1 4"                     # =>  7
"2 3 2 4 5 3 6 3 2 0 4 5 3 2 0 3"                     # => 10
"3 4 3 0 4 3 4 4 5 3 5 3 0 4 3 3 0 3"                 # => 11
"2 3 2 4 5 3 6 3 2 0 4 5 3 2 0 3 4 1 6 3 8 2 0 5 2 3" # => 14

मुझे यह सुनने में दिलचस्पी होगी कि क्या दूसरों को इन स्ट्रिंग्स के लिए समान परिणाम मिलते हैं। प्रदर्शन उचित है। उदाहरण के लिए, इस स्ट्रिंग का समाधान पाने में एक मिनट से भी कम समय लगा:

"3 4 3 0 4 3 4 4 5 5 3 3 4 4 3 3 0 3 4 5 3 2 2 3 4 1 6 4 2 2 4 4 3 2 2 3 4 1 6 3 0 4 3 4 4 5 5 1"

कोड इस प्रकार है।

I=99 # infinity - unlikely we'll attempt to solve problems with more than 48 rocks to step on

def leap!(u)
  p = u.split.map(&:to_i) # p = [2,1,4,3,0,3,4,4,3,5,0,3]
  s = p.shift        # s=2, p =   [1,4,3,0,3,4,4,3,5,0,3] # start
  f = p.pop          # f=3, p =   [1,4,3,0,3,4,4,3,5,0]   # finish
  q = p.reverse      #      q =   [0,5,3,4,4,3,0,3,4,1]   # reverse order
  # No path if cannot get to a non-zero rock from s or f
  return -1 if t(p,s) || t(q,f) 
  @n=p.size                  # 10 rocks in the stream
  r = 2**@n                  # 10000000000 - 11 binary digits 
  j = s > @n ? 0 : 2**(@n-s) #   100000000 for s = 2 (cannot leave start if combo number is smaller than j)
  k=r-1                      #  1111111111 - 10 binary digits

  b=I # best number of hops so far (s->f + f->s), initialized to infinity
  (j..k).each do |c|
    # Representative combo: 0b0101101010, convert to array
    c += r                     # 0b10 1 0 1 1 0 1 0 1 0
    c = c.to_s(2).split('').map(&:to_i)
                               # [1,0,1,0,1,1,0,1,0,1,0]
    c.shift                    #   [0,1,0,1,1,0,1,0,1,0] s->f: rock offsets available: 1,3,4,6,8
    d = c.map {|e|1-e}.reverse #   [1,0,1,0,1,0,0,1,0,1] f->s: rock offsets available: 0,2,5,7,9
    c = z(c,p)                 #   [0,4,0,0,3,0,4,0,5,0] s->f: max hops by offset for combo c
    d = z(d,q)                 #   [0,0,3,0,4,0,0,3,0,1] f->s: max hops by offset for combo c
    # Skip combo if cannot get from to a rock from f, or can't
    # get to the end (can always get to a rock from s if s > 0).
    next if [s,f,l(c),l(d)].max < @n && t(d,f)
    # Compute sum of smallest number of hops from s to f and back to s,
    # for combo c, and save it if it is the best solution so far.
    b = [b, m([s]+c) + m([f]+d)].min
  end
  b < I ? b : -1 # return result
end

# t(w,n) returns true if can conclude cannot get from sourch n to destination  
def t(w,n) n==0 || (w[0,n].max==0 && n < @n) end
def l(w) w.map.with_index {|e,i|i+e}.max end
def z(c,p) c.zip(p).map {|x,y| x*y} end

def m(p)
  # for s->f: p = [2,0,4,0,0,3,0,4,0,5,0] - can be on rock offsets 2,5,7,9
  # for f->s: p = [3,0,0,3,0,4,0,0,3,0,1] - can be on rock offsets 3,5,8,10
  a=[{d: 0,i: @n+1}]
  (0..@n).each do |j|
    i=@n-j
    v=p[i] 
    if v > 0
      b=[I]
      a.each{|h| i+v < h[:i] ? break : b << (1 + h[:d])}
      m = b.min
      a.unshift({d: m,i: i}) if m < I
    end
  end
  h = a.shift
  return h[:i]>0 ? I : h[:d]
end

0

हास्केल, 173 166 बाइट्स, जीएचसीआई में 159 बाइट्स

यहाँ सामान्य संस्करण है:

डेटा आयात करें

t=length
j[_]=0
j l=y[t f|f<-fst.span(>0)<$>permutations[0..t l-1],u<-f,u==t l-1,all(\(a,b)->abs(b-a)<=l!!a)$zip(0:f)$f++[0]]
y[]=0-1
y l=minimum l+1

यहाँ GHCi का उत्तर दिया गया है (एक समय में एक लाइन डालें):

t=length
y[]=0-1;y l=minimum l+1
j[_]=0;j l=y[t f|f<-fst.span(>0)<$>Data.List.permutations[0..t l-1],u<-f,u==t l-1,all(\(a,b)->abs(b-a)<=l!!a)$zip(0:f)$f++[0]]

बस एक क्रूर। संभावित उत्तर उत्पन्न करें। (यानी शून्य और निम्न तत्व के साथ [0..n-1] का क्रमांकन गिरा दिया गया है। तब उत्तर सही है या नहीं, इसकी जांच करें। न्यूनतम लंबाई प्राप्त करें और एक को जोड़ दें। (चूंकि अग्रणी और अनुगामी शून्य हटा दिया गया है)।

कैसे उपयोग करें: j[3,4,0,0,6]->3


Data.List.permutationsजीएचसी में काम नहीं करता है, लेकिन केवल जीएचसीआई में। हास्केल में हमारे गाइड टू गोल्फिंग नियम के अनुसार , आपको या तो आयात जोड़ना चाहिए या "हास्केल जीएचसीआई" के रूप में अपने उत्तर को चिह्नित करना चाहिए। पहला विकल्प आमतौर पर इस साइट पर हास्केल गोल्फरों द्वारा पसंद किया जाता है।
लकोनी

इसके बजाय a<-permutations[0..t l-1],let f=takeWhile(/=0)a, आप लिख सकते हैं f<-map(takeWhile(/=0))(permutations[0..t l-1]), जो फिर से गोल्फ हो सकता है f<-fst.span(>0)<$>permutations[0..t l-1]। इसके साथ आप आयात को जोड़कर भी 166 बाइट्स पर वापस आ गए हैं: इसे ऑनलाइन आज़माएं!
लैकोनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.