सूची में उनके सूचकांकों की संख्या मापांक की एक सूची


25

एक साधारण: इनपुट के रूप में सकारात्मक पूर्णांक की एक सूची लें और संख्याओं को सूची में उनके 1-आधारित सूचकांक को मापें।

यदि इनपुट पूर्णांक हैं, {a, b, c, d, e, f, g}तो आउटपुट होना चाहिए {a%1, b%2, c%3, d%4, e%5, f%6, g%7}जहां %मापांक ऑपरेटर है।


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

10  9  8  7  6  5  4  3  2  1
 0  1  2  3  1  5  4  3  2  1

8 18  6 11 14  3 15 10  6 19 12  3  7  5  5 19 12 12 14  5
0  0  0  3  4  3  1  2  6  9  1  3  7  5  5  3 12 12 14  5

1
0

1  1
0  1

जवाबों:



9

ऑपरेशन फ्लैशपॉइंट स्क्रिप्टिंग भाषा, 73 बाइट्स

f={l=_this;r=[];i=0;while{i<count l}do{r=r+[(l select i)%(i+1)];i=i+1};r}

के साथ बुलाना:

numList = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
hint format["%1\n%2", numList, numList call f];

आउटपुट:


1
क्या ... यह एक बात है?
JAD

2
@JarkoDubbeldam हाँ। खेल खिलाड़ियों को अपने स्वयं के परिदृश्य बनाने की अनुमति देता है, और मिशन डिजाइनिंग को पूरक करने के लिए डिज़ाइन इन-गेम स्क्रिप्टिंग भाषा है। हालाँकि, चूंकि भाषा ट्यूरिंग-पूर्ण है, आप इसके साथ जो चाहें कर सकते हैं।
स्थिर

8

पायथन 2 , 35 बाइट्स

i=1
for x in input():print x%i;i+=1

इसे ऑनलाइन आज़माएं!

मेरी एक टिप के अनुसार, इंडेक्स को मैन्युअल रूप से गिनता है ।


1
यदि आप एक त्रुटि के साथ बाहर निकल सकते हैं (मैं भूल गया कि डिफ़ॉल्ट है) तो आप एक युगल बाइट्स दाढ़ी कर सकते हैं ।
FryAmTheEggman

7

जेली , 2 बाइट्स

%J

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

%J
 J List 1 .. len(input). This is results in a list of the indexes.
%  Modulo.

मूल रूप से, कोड इंडेक्स की सूची द्वारा मूल सूची को मापता है।


2
जैसे ही मैंने यह प्रश्न देखा, मैंने सोचा कि "वह %Jजेली में है, मुझे आश्चर्य है कि क्या किसी ने उस उत्तर के साथ जवाब दिया है?"। मुझे लगता है कि किसी और का एक ही विचार था :-D

1
@ ais523 आपको लगता है कि आप केवल एक ही थे? फिर से विचार करना!
एरिक द आउटगलर

6

आर, 24 18 बाइट्स

pryr::f(x%%seq(x))

फ़ंक्शन का मूल्यांकन:

function (x) 
x%%seq(x)

जो seq_along()एक ही लंबाई का वेक्टर बनाने के लिए उपयोग करता है x, जो 1 से शुरू होता है, और फिर %%मोडुलो लेने के लिए।

seqएक वेक्टर के साथ प्रस्तुत किए जाने पर डिफ़ॉल्ट व्यवहार seq(along.with = x)जो कि आउटपुट के समान होता है seq_along(x), लेकिन 6 बाइट्स छोटे होते हैं।


seq(x)के बाद से मैं हमेशा उपयोग कर रहा हूँ के आसपास एक आसान बात है 1:length(x)
ग्यूसेप

@Giuseppe हाँ मैं थोड़े आश्चर्यचकित था।
JAD

6

आर, 27 बाइट्स

x=scan();cat(x%%1:sum(1|x))

@Jarko के लिए 5 बाइट्स धन्यवाद बचाया

@Giuseppe के लिए 4 और धन्यवाद सहेजे गए

@Taylor Scott को 2 और धन्यवाद दिए

@Returnbull को 2 और धन्यवाद दिए गए


35 यह है - अनावश्यक अंतिम
विदाई

1
आपको ' 'अंत में (स्थान) की आवश्यकता नहीं है cat; यह डिफ़ॉल्ट विभाजक है
Giuseppe

2
आप इसे कम करने के लिए 33 को प्राप्त करने के लिए 2 बाइट्स छोड़ सकते हैं x<-scan();cat(x%%1:length(x)," ")- ओह और एक जोड़ी स्वरूपण युक्तियां, 1) आपको केवल अपने कोड के बाईं ओर 4 रिक्त स्थान की आवश्यकता है इसके लिए ठीक से इंडेंट और चिह्नित 2) आप एक <!-- language-all: lang-r -->झंडा जोड़ सकते हैं इससे पहले कि आपके कोड को हाइलाइट किया जाए (हालांकि इस उदाहरण में यह थोड़ा बदल जाता है) 3) आपको अपनी भाषा के नाम के चारों ओर ब्रैकेट की आवश्यकता नहीं है 4) ओह और जब आप किसी पोस्ट में संपादन करते हैं तो आपको टिप्पणी करने की आवश्यकता नहीं है
टेलर स्कॉट

2
(1) आप बाइट बचाने =के <-लिए उपयोग कर सकते हैं । (2) विनिर्देश "प्रिंट" के बजाय "आउटपुट" कहता है, जिससे आप संभवतः cat()5 बाइट्स बचा सकते हैं । (3) sum(1|x)एक बाइट से छोटा है length(x)
13 सितंबर

5

APL (Dyalog) , 5 बाइट्स

⍳∘≢|⊢

इसे ऑनलाइन आज़माएं!

 सूचकांकों

 का

 तर्क की लंबाई

| वह मापांक

 बहस


हमेशा आश्चर्य होता है कि "मुख्यधारा" की भाषा इतनी किफायती हो सकती है। एपीएल का तरीका स्वाभाविक रूप से कोड गोल्फ लगता है: उदा। (~T∊T∘.×T)/T←1↓⍳R ⍝ primes up to Rयाlife←{↑1 ω∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂ω} ⍝ Game of Life

@ यमीनरॉन्ग आप बेहतर कर सकते हैं: Primes to R: (⊢~∘.×⍨)1↓⍳Rऔर GoL (संस्करण 16.0 में): K∊⍨⊢∘⊂⌺3 3जहां K एक स्थिरांक है।
अदम

@ YiminRong यहाँ खोजकर्ताओं की कोशिश करो !
अदम

5

क्यूबिक्स , 19 बाइट्स

;ww.1I!@s%Ow;)Sow.$

इसे ऑनलाइन आज़माएं!

    ; w
    w .
1 I ! @ s % O w
; ) S o w . $ .
    . .
    . .

देखो यह भागो

एक काफी सीधे आगे कार्यान्वयन।

  • 1 इंडेक्स शुरू करने के लिए स्टैक पर 1 पुश करें
  • I!@ पूर्णांक इनपुट प्राप्त करें और यदि 0 रुका हुआ है
  • s%Ow इंडेक्स अप, मॉड, आउटपुट परिणाम और परिवर्तन लेन को स्वैप करें
  • ;) परिणाम और वेतन वृद्धि सूचकांक निकालें
  • Sow पुश 32, आउटपुट स्पेस और चेंज लेन (ओ से नीचे जा रहा है)
  • $O उत्पादन कूदो
  • w;wलैंग बदलें, स्टैक से 32 निकालें और Iइनपुट पर लेन बदलें

5

05AB1E , 2 बाइट्स

ā%

इसे ऑनलाइन आज़माएं! या सभी परीक्षणों का प्रयास करें

ā  # Push the range(1, len(a) + 1)
 % # Mod each element in the input by the same one in this list

दिलचस्प है, मुझे लगा कि यह DgL%अच्छा होगा।
मैजिक ऑक्टोपस Urn

@carusocomputing मैं मूल रूप से था gL%क्योंकि मैं भूल गया था ā
रिले

मन āमेरे लिए थोड़ा और अधिक गहराई में जा रहा है ? मेरा मानना ​​है कि मैंने कभी भी इसका उपयोग नहीं किया है यह सिर्फ for eachएक 1 to n+1तरह से है vy<code>})लेकिन निहित है vy<code>})?
मैजिक ऑक्टोपस Urn

@carusocomputing यह एक सरणी को पॉपअप सरणी की लंबाई के मान 1 के साथ धकेलता है। इसके बराबर है gLटीआईओ
रिले

क्या यह भी इनपुट को धोखा देता है? या निहित इनपुट अब निकटतम उपलब्ध इनपुट के लिए स्वचालित रूप से विस्तारित है?
मैजिक ऑक्टोपस Urn


4

तारों से , 75 70 बाइट्स

      +`  , + +   *    +  + +      +*   +    *  .               + + .'

इसे ऑनलाइन आज़माएं!

व्याख्या

यह एक अनंत लूप है जो इनपुट से संख्याओं को पढ़ता रहता है और काउंटर को बढ़ाता है 1। इनपुट और काउंटर के प्रत्येक जोड़े के लिए, मापांक की गणना और मुद्रित किया जाता है।

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

      +              Push 1. This is the initial value of the counter
`                    Mark label
  ,                  Read number from input and push it. Gives 0 if no more input
 +                   Duplicate top of the stack
 +                   Duplicate top of the stack
   *                 Pop two numbers and push their division. Error if divisor is 0
    +                Pop (discard) top of the stack
  +                  Swap top two numbers
 +                   Duplicate top of the stack
      +              Push 1
*                    Pop two numbers and push their sum. This increases the counter
   +                 Rotate stack down, to move increased counter to bottom
    *                Pop two numbers and push their modulus
  .                  Pop a number and print it as a number
               +     Push 10
 +                   Duplicate top of the stack
 .                   Pop a number (10) and print it as ASCII character (newline)
'                    If top of the stack is non-zero (it is, namely 10) go to label



3

जाप, 5 4 बाइट्स

®%°T

कोशिश करो


व्याख्या

     :Implicit input of array U
®    :Map over the array
%    :Modulo of the current element
°T   :T (0, initially) incremented by 1

1
मुझे लगता है कि आप एक बाइट को बचा सकते हैं ®%°T(वास्तव में, Yअगर आप चाहते थे तब भी आप वहां उपयोग कर सकते हैं )
ETHproductions

अहा। धन्यवाद, @ETHproductions
झबरा

3

आर, 22 बाइट्स

pryr::f(x%%1:sum(x|1))

मापांक करने से पहले आर 1: लंबाई (x) करता है।


साथ अच्छा लगा sum(x|1)!
JAD

1
बस पता चला है कि एक ही बात के seq()बजाय का उपयोग कर seq_along()। ताकि कुछ बाइट्स फिर से कम हो।
JAD

1
मैं आपको वह बताने जा रहा था, लेकिन मुझे टिप्पणी करने की जरूरत नहीं थी। मुझे ख़ुशी है कि तुमने उसे ढूँढ लिया।
Shayne03



2

गणितज्ञ, 21 बाइट्स

#~Mod~Range@Length@#&

इसे ऑनलाइन आज़माएं!

या 20 बाइट्स (मार्टिन द्वारा)

#~Mod~Range@Tr[1^#]&

Tr[1^#]के लिए Length@#
मार्टिन एंडर

वह गणित पर काम नहीं करता है, इसलिए मैं उन दोनों को रख रहा हूं
J42161217

आप #अपने पहले उत्तर में दूसरे अंतिम पात्र के रूप में याद कर रहे हैं ।
इयान मिलर

2

एक्सेल VBA, 59 46 बाइट्स

golfed

अनाम VBE तत्काल विंडो फ़ंक्शंस जो एक स्थान लेता है ( ) श्रेणी से इनपुट के रूप में सीमांकित सरणी स्ट्रिंग [A1]और संख्याओं को आउटपुट करता है 1-आधारित इंडेक्स को शुरुआती सूची में VBE तत्काल विंडो में मापता है

For Each n In Split([A1]):i=i+1:?n Mod i;:Next

इनपुट आउटपुट:

[A1]="10 9 8 7 6 5 4 3 2 1" ''# or manually set the value
For Each n In Split([A1]):i=i+1:?n Mod i;:Next
 0  1  2  3  1  5  4  3  2  1 

पुराना Subरूटीन वर्जन

सबरूटीन जो इनपुट को पारित सरणी के रूप में लेता है और VBE तत्काल विंडो को आउटआउट करता है।

Sub m(n)
For Each a In n
i=i+1
Debug.?a Mod i;
Next
End Sub

इनपुट / ऑपुट:

m Array(10,9,8,7,6,5,4,3,2,1)
 0  1  2  3  1  5  4  3  2  1 

Ungolfed

Option Private Module
Option Compare Binary
Option Explicit
Option Base 0 ''# apparently Option Base 1 does not work with ParamArrays

Public Sub modIndex(ParamArray n() As Variant)
    Dim index As Integer
    For index = LBound(n) To UBound(n)
        Debug.Print n(index) Mod (index + 1);
    Next index
End Sub

इनपुट आउटपुट:

Call modIndex(10,9,8,7,6,5,4,3,2,1)
 0  1  2  3  1  5  4  3  2  1 

1

CJam , 9 बाइट्स

{_,,:).%}

बेनामी ब्लॉक जो स्टैक पर एक सरणी की उम्मीद करता है और इसे आउटपुट सरणी द्वारा बदल देता है।

इसे ऑनलाइन आज़माएं!

व्याख्या

{       }    e# Define block
 _           e# Duplicate
  ,          e# Length
   ,         e# Range, 0-based
    :)       e# Add 1 to each entry
      .%     e# Vectorized modulus





1

जीएनयू एपीएल 1.2, 9 बाइट्स

(⍳⍴R)|R←⎕

एपीएल दाएं से बाएं ओर संचालित होता है, इसलिए कोष्ठक।

R←⎕वेक्टर को उपयोगकर्ता इनपुट प्रदान करता है R

⍴Rवेक्टर की लंबाई देता है; ⍳⍴R1 से उस लंबाई (ताकि सूचकांकों) के सभी नंबरों के साथ एक वेक्टर देता है।

|मॉड ऑपरेटर ( a|bपैदावार b%a) है। एपीएल सरणियों पर काम करता है, इसलिए कोड स्निपेट एक वेक्टर होता है जिसमें उपयोगकर्ता के इनपुट मॉड से प्रत्येक तत्व होता है।





1

ब्रिंगोल्फ , 18 बाइट्स

V1R&,{v.m1+v%}&,=;

इसे ऑनलाइन आज़माएं!

व्याख्या

V1R&,{v.m1+v%}&,=;  Implicit input from commandline args
V1R                 Create stack2, push 1 to it, and return to stack1
   &,               Reverse stack1
     {.......}      Foreach loop, runs for each item in stack1
      v             Switch to stack2
       .m           Duplicate last item on stack and move duplicate to stack1
         1+         Increment last item on stack
           v%       Return to stack1, pop last 2 items and push modulus result
              &,    Reverse stack1
                =   Output stack1
                 ;  Suppress implicit output

1

जावा 8 / सी #, 39 बाइट्स

a->{for(int i=0;i<a.length;a[i]%=++i);}

इसे यहाँ आज़माएँ।

इसके अलावा की जगह सी # में काम करता है ->के साथ =>और lengthसाथ Length:

a=>{for(int i=0;i<a.Length;a[i]%=++i);}

इसे यहाँ आज़माएँ।

स्पष्टीकरण:

a->{                       // Method with integer-array parameter and no return-type
  for(int i=0;i<a.length;  //  Loop over the indexes of the array (0-indexed)
      a[i]%=++i            //   And replace every integer with itself mod (1+i)
  );                       //  End of loop
}                          // End of method

इनपुट-सरणी को संशोधित करता है, इसलिए रिटर्न की कमी है।


1
अनिवार्य रूप से मैं C # +1 में क्या करूंगा, क्या आप C # के लिए काम करने के बारे में भी टिप्पणी कर सकते हैं यदि आप इसे बदलते ->हैं =>और कैपिटलाइज़ करते हैं length
द लीथेलकोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.