100 जावा टपल कक्षाएं उत्पन्न करें


37

एक स्क्रिप्ट लिखें जो मानक आउटपुट, या आपकी भाषा के समकक्ष, 100 पंक्तियों (मान्य) जावा कोड के साथ लिखती है जो इसके साथ शुरू होती है:

class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple5 {public Object _0,_1,_2,_3,_4;}
class Tuple6 {public Object _0,_1,_2,_3,_4,_5;}
class Tuple7 {public Object _0,_1,_2,_3,_4,_5,_6;}
class Tuple8 {public Object _0,_1,_2,_3,_4,_5,_6,_7;}
class Tuple9 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8;}
class Tuple10 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9;}
class Tuple11 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10;}
class Tuple12 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11;}

अंतिम पंक्ति के साथ शुरू होना चाहिए class Tuple100

यह , इसलिए बाइट्स में सबसे छोटा कोड जीतता है!


6
मुझे चुनौती स्वीकार है! वास्तव में, मैं जावा में ऐसा करने जा रहा हूं!
अश्विन गुप्ता

क्या मैं एक फ़ंक्शन लिख सकता हूं या क्या इसे पूरा कार्यक्रम होना चाहिए?
अश्विन गुप्ता

3
मैं एक स्क्रिप्ट के लिए कहा गया साइट के लिए नया हूं, लेकिन मैं सुन रहा हूं कि यह फ़ंक्शन की अनुमति देने के लिए प्रथागत है, और यह जावा के लिए बहुत अधिक समझ में आता है, public static void main(String[] args)ताकि आप चाहें तो एक फ़ंक्शन देने से बचें ।
रे तोल

1
महान! धन्यवाद रे!
अश्विन गुप्ता

यह कहीं भी बहुत छोटे से पास नहीं है, लेकिन मुझे लगता है कि मैंने अपने n-जनरेटर जनरेटर को साझा करने के लिए यह एक आदर्श स्थान है जो मैंने जावा में लिखा था: github.com/kenzierocks/Tuplocity । यह पूरी तरह से सामान्य ट्यूपल उत्पन्न करता है!
ओक्टाविया तोगामी

जवाबों:


8

जोल्फ, 42 बाइट्स

क्या मुझे सर्वश्रेष्ठ स्कोर के साथ जेली की पिटाई के लिए बोनस अंक मिलते हैं? इसमें unprintables शामिल हैं, इसलिए आप इसे यहाँ ऑनलाइन आज़माना चाहते हैं । मैंने पठनीयता के लिए उनके संबंधित ऑल्ट इंडेक्स के साथ अनप्रिंटर्स को बदल दिया।

‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ_ %;}"HRzH",_

व्याख्या

‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ _%;}"HRzH",_
 Μz~1d                                     map the range 1..100 with the following function
      "                                    begin a string
       Ξ/êί                                short for "class"
            Tuple% {               H       string interpolate H (current number)
                    Ξ0î⌂ Ξ2Qμ              short for "public Object"
                              _%;}" RzH    string interpolate with a range from 1..H joined
                                       ",_  by the string ",_" (auto-closed quotes)

1
मुझे लगता है। यदि बाद में कोई नया स्कोर आता है तो क्या इस साइट पर स्वीकृत उत्तर को बदलना उचित है?
रे तोल

6
@RayToal हाँ, यह उचित है और ऐसा करने का सुझाव भी दिया गया है।
कॉनर ओ'ब्रायन ने

इसके लिए चरित्र एन्कोडिंग क्या है? मुझे पता है कि गोल्फिंग भाषाएँ अक्सर अपने स्वयं के एन्कोडिंग का उपयोग करती हैं, लेकिन मैं यह नहीं देख सकता कि कौन सा एन्कोडिंग जोल्फ का उपयोग कर सकता है। मुझे एहसास है कि यह पुराना है।
पुनरावर्ती

@recursive ग्रीक आईएसओ-8859-7, यह एक: en.wikipedia.org/wiki/ISO/IEC_8859-7
कॉनर ओ'ब्रायन

23

vim 56 54 कीस्ट्रोक्स

iclass Tuple1 {public Object _0;}<esc>qyYp<C-a>$y2bPr,<C-a>q98@y

चूंकि V पीछे की ओर संगत है, आप इसे ऑनलाइन आज़मा सकते हैं !

यह विम के लिए एकदम सही काम है! मैं इसे थोड़ा और बाद में गोल्फ कर सकता हूं। यह भी ध्यान दें कि <c-a>कंट्रोल-ए का अर्थ है, और यह एक कीस्ट्रोके के रूप में गिना जाता है।

स्पष्टीकरण:

iclass Tuple1 {public Object _0;}<esc>         'Enter the starting text


qy                          'Start recording in register y
  Yp                        'Yank the current line, the print on the line below
     <C-a>                  'Increment the next digit to occur by one
          $                 'Move to the end of this line
           y2b              '(yank) 2 words (b)ack. This will grab '_0;'
              P             'Print the previously yanked word before the cursor.
               r,           '(r)eplace the char under the cursor with a comma.
                 <c-a>q     'Increment the current digit, then stop recording
                       99@y 'Playback macro 'y' 99 times.

1
यदि आप नियंत्रण-ए को एक कीस्ट्रोके के रूप में गिनते हैं, तो आप इसके yyद्वारा स्थानापन्न कर सकते हैं Y
21

1
@ शेख हाहा, मुझे बस एक ही बात का एहसास हुआ और मैंने आपकी टिप्पणी को देखने से पहले इसे ठीक से संपादित किया। बड़े मन वाले ऐसा सोचते हैं!
डीजेएमकेम

ऐसा लगता है कि class Tuple101नहीं, class Tuple100जैसा कि सवाल पूछता है।
नंबरमैन

1
@numbermaniac सरल ऑफ-बाय-वन त्रुटि। यह बात बताने के लिए धन्यवाद! अब फिक्स्ड :)
DJMcMayhem

10

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

R’j“,_”
“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”
ȷ2RÇ€

मेरा पहला जेली जवाब। इसे ऑनलाइन आज़माएं!


क्या मैं इसे गलत कर रहा हूं या यह सिर्फ एक स्ट्रिंग के बजाय एक विशाल सूची का उत्पादन करता है?
डेन्कर

@DenkerAffe यह अब काम करने लगता है! जेली में एक अस्थायी बग था। (इसके अलावा, लिंक मेरे समाधान के एक पुराने संस्करण के लिए था, इसलिए मैंने इसे अपडेट किया है।)
लिन

अच्छा ... अब तक यह CJam समाधान से 9 बाइट्स छोटा है!
रे तोल

8

पायथ, 53 50 48 बाइट्स

VS100%." }SüÆðQ´Ó3Ô«%&a´4UçõÛ"[Nj",_"UN

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

रेंज (1,100) पर सीधा पुनरावृत्ति और इसे स्वरूपण के माध्यम से पैक स्ट्रिंग से संक्षारक स्ट्रिंग का निर्माण करना।

व्याख्या

VS100%। "} SüÆðQ´Ó3%«% & a }4Uç ["[Nj", _ "UN

वीएस 100 # श्रेणी से अधिक (1,100)
     %। "} SüÆðQ´Ó3Ô«% & aÆð4Uç # "# स्ट्रिंग को अनपैक करें और इसे प्रारूपित करें
                              [# स्वरूपण तर्कों के लिए सूची
                               नल की संख्या #
                                j UN # ऑब्जेक्ट नंबर मिलाएं ...
                                 ", _" # ... सेपरेटर पर ", _"

अनपैक्ड स्ट्रिंग है class Tuple%i {public Object _%s;}


दो गोल्फ: s[उन सभी के बजाय उपयोग करें +[एक मनमाना लंबाई सूची बनाता है, और sइसे संक्षिप्त करता है। इसके अलावा, आप चाहते हैं [1, 2, ... 100], नहीं [0, 1, .. 99], का उपयोग करें VS100, और आप की आवश्यकता नहीं होगी h
isaacg

@isaacg धन्यवाद, -trick के बारे में नहीं पता था S! :) पहले से ही सभी से छुटकारा पाने पर बैठा ++++था, मुझे पता था कि एक बेहतर तरीका है।
डेनकर

आपका स्वागत है। वैसे, आपको लगता है कि "अनावश्यक रूप से एक अनुगामी जोड़ा गया है ।
isaacg

1
@isaacg कोई कारण j<str><int>नहीं है U?
lirtosiast

1
नहीं वास्तव में नहीं। करूँगा।
isaacg

7

कॉफ़ीस्क्रिप्ट, 86 84 बाइट्स

console.log "class Tuple#{i} {public Object _#{[0...i].join ',_'};}"for i in[1..100]

समाधान ऑनलाइन देखें


PPCG में आपका स्वागत है! बस आपको यह बताने की सुविधा है कि उत्तर सुधारने वाले आम तौर पर डूब जाते हैं (और अगर उन्हें समीक्षा पंक्ति में समाप्त हो जाना चाहिए तो खारिज कर दिया जाना चाहिए)। इसलिए यह अधिक संभावना है कि लोग सुझावों के साथ टिप्पणी करेंगे, इसलिए आप स्वयं उनकी समीक्षा कर सकते हैं। :) (जैसा कि वास्तविक सुझावों के लिए मुझे लगता है कि आपको न तो सामने की जगह की जरूरत है और न forही उसके बाद की in।)
मार्टिन एंडर

console.log"काम करता है ? (कॉफ़ी स्क्रिप्ट नहीं जानते, यह एक सामान्य ट्रिक है।
Addison Crump

नहीं, जैसा कि, अंतरिक्ष को हटाने में। : पीआई जानता है कि यह मौजूद है, मुझे नहीं पता कि यह वैध सिंटैक्स है।
Addison Crump

@VoteToClose मैंने पहले की कोशिश की (coffeescript.org पर लाइव ट्रांसपिलर का उपयोग करके) और यह काम नहीं किया)।
मार्टिन एंडर

@VoteToClose ओह क्षमा करें यह नहीं देखा। नहीं, किसी तरह व्याकरण द्वारा स्थान की आवश्यकता होती है, लेकिन यह मेरे लिए बिल्कुल स्पष्ट नहीं है कि क्यों (अभी तक)। उदाहरण के लिए, कॉफीस्क्रिप्ट में बहुत अधिक x? y:zअंतर रखने से , पूरी तरह से अलग है x ? y:z। आप कह सकते हैं console.log?"hello"लेकिन नहीं console.log"hello"। महत्वपूर्ण व्हाट्सएप। कभी अच्छा, कभी अजीब।
रे तोल

7

जावा, 160 , 125 बाइट्स

सुधार के लिए @DenkerAffe, @Denham Coote और @Mathias Ettinger को धन्यवाद।

जावा लेखन जावा (क्योंकि किसी को करना था!)

void z(){String s="_0";for(int i=1;i<101;){System.out.println("class Tuple"+(i++)+" {public Object "+s+";}");s+=",_"+i;}}

और अन-गोल्फ संस्करण

void z(){
    String s = "_0";
    for(int i = 1 ;i < 101;){
        System.out.println("class Tuple" + (i++) + " {public Object "+ s + ";}");
        s += ",_" + i;
        }
    }

2
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! जब तक अन्यथा चुनौती में न कहा गया हो, आप पूर्ण कार्यक्रमों के बजाय कार्यों का उपयोग कर सकते हैं। तो आपको सभी public static void main...सामान को बचाने के लिए एक Java8-lambda (जो परिणाम देता है) का उपयोग करना चाहिए ।
डेनकर

4
PPCG में आपका स्वागत है। इस उत्तर में ऑब्जेक्ट घोषणाओं के अंत में एक अतिरिक्त अल्पविराम शामिल है ...class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
Denham Coote

3
आप (i + 1) के बजाय sysout (++ i) में अपने लूप काउंटर को बढ़ाकर और i++लूप सेटअप से हटाने के लिए एक और 3 बाइट्स बचा सकते हैं
Denham Coote

आपको अपनी शुरुआत करनी चाहिए String s = "_0"ताकि आप s += ",_" + iएक बाइट को बचा सकें । यह ट्रेलिंग कोमा के साथ समस्या को भी हल करेगा। आपको 1कम से कम होने वाले लूप के लिए शुरू करने की आवश्यकता 101होगी और (i+1)केवल आपके आउटपुट संदेश में कनवर्ट करके एक अतिरिक्त 4 बाइट्स निकालने में सक्षम होगा i। जाहिर है, आपको वेतन वृद्धि से पहले प्रिंट करना होगा s
409_Conflict

धन्यवाद, इन सभी चीजों को किया है, और निश्चित रूप से java8-lambda पर एक गणधर होने जा रहा हूं।
सोलोक्स

6

ओरेकल SQL 9.2, 138 137 बाइट्स

SELECT REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,','t ')FROM DUAL CONNECT BY LEVEL<101;

@ क्रेटर 0/1 गलती की ओर इशारा करने के लिए धन्यवाद।

क्वेरी 100 पंक्तियों को उत्पन्न करने के लिए पदानुक्रम के पदानुक्रम के संबंध का उपयोग करें।

LEVEL pseudocolumn में प्रत्येक पंक्ति की पंक्ति संख्या होती है।

SYS_CONNECT_BY_PATH प्रत्येक पैरामीटर की पहली पैरामीटर, पंक्ति संख्या, और विभाजक के रूप में दूसरे पैरामीटर का उपयोग करें।


कृपया कुछ स्पष्टीकरण जोड़ें
Eumel

चतुर :) यह के Object _1बजाय के साथ शुरू होता है Object _0, ताकि एक और दो बाइट्स ( -1) ले जाएगा । हालांकि, _कोन को जोड़ने के SYS_CONNECT_BY_PATHबजाय चार के बाइट में जोड़ा जा सकता है , इसे फिर से दो बाइट्स से कम किया जा सकता है:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
पीटर लैंग

6

बैच, 128 बाइट्स

@set m=_0
@for /l %%t in (1,1,100)do @call:b %%t
@exit/b
:b
@echo class Tuple%1 {public Object %m%;}&set m=%m%,_%1

संपादित करें: @bus के लिए 10 बाइट्स से बचाए गए। @ EʀɪᴋᴛʜᴇG 1 को 1 बाइट धन्यवाद दिया गया।


3
मुझे हमेशा कोड गोल्फ पर बैच देखने में खुशी मिलती है, साथ ही, हर जगह @ का उपयोग करने के बजाय, आप आउटपुट को x नामक फ़ाइल में अपडायरेक्ट कर सकते हैं और आउटपुट के रूप में उपयोग कर सकते हैं
डेनिस वैन

@DennisvanGils दुख की बात यह है कि मानक उत्पादन के लिए प्रतिध्वनित होता है।
नील

enabledelayedexpansion117 बाइट्स के लिए समाप्त : gist.github.com/Elusive138/4cea555114a979954dcb - यदि आप कंसोल विंडो को बंद करने से बुरा नहीं मानते हैं तो आप /barg को हटाकर दो और बचा सकते हैं exit
बॉब

@ नील लोल ठीक है इसलिए मैंने इसे चलाने की कोशिश की और अब मुझे एहसास हुआ कि आपने क्या किया। बहुत चालाक।
अश्विन गुप्ता

शुरुआत में, उपयोग@echo off
इलियट ए।


5

पॉवर्सशेल - 65 बाइट्स

(टिप्पणी के जवाब में संशोधित)

सभी क्रेडिट TimmyD को

1..100|%{"class Tuple$_ {public Object _$(0..($_-1)-Join",_");}"}

वोट कम क्यों? (कृपया ध्यान दें कि यह मेरी पहली पोस्ट है, बहुत अच्छा स्वागत नहीं है?)
बुलेटप्रोफूल


4

आर - 199 132 123 118 बाइट्स

संस्करण 4

p=paste0;for(i in 1:10)cat(p("class Tuple",i," {public Object ",toString(sapply(0:(i-1),function(x)p("_",x))),";}\n"))

संस्करण 3

p=paste0;for(i in 1:8)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}\n"))

संस्करण 2

p=paste0;for(i in 1:100)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}"),sep="\n")

संस्करण 1

for (i in 1:100){
  foo <- paste0("class Tuple", i, " {public Object ")
  for (j in 0:(i - 1)){
    foo <- if (j < (i - 1)) paste0(foo, "_", j, ",") else paste0(foo, "_", j, ";}")
  }
  print(foo)
}

3
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! चूंकि यह एक कोड गोल्फ प्रतियोगिता है, आप अपने कोड को यथासंभव छोटा बनाना चाहेंगे। आप प्रत्येक वर्ण के लिए चर नामों को छोटा करके, व्हाट्सएप को हटाकर, =असाइनमेंट के बजाय उपयोग कर सकते हैं <-
एलेक्स ए।

144 बाइट्स:for(i in 1:100){f=(p=paste0)("class Tuple",i," {public Object ");for(j in 0:(i-1))f=if(j<i-1)p(f,"_",j,",")else p(f,"_",j,";}");cat(f,sep="\n")}
एलेक्स ए।

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

(हालांकि यह कुछ संकेत देने के लिए सार्थक हो सकता है, या तो आपके संपादित सारांश में या पोस्ट में जो आप प्रत्येक संशोधन के साथ बदल गए हैं ताकि अन्य आपकी संशोधन प्रक्रिया से सीख सकें)
क्विंटोपिया


4

जावा, 103 बाइट्स

s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}

मेरी पहली बार यहाँ। नमस्ते! मैं एक जावा 8 लैम्ब्डा अभिव्यक्ति (उर्फ एक अनाम फ़ंक्शन) के लिए गया था।

अनप्लग्ड संस्करण

s -> {
    s = "_0";
    for (int i = 0; i++ < 100; s += ",_" + i)
        System.out.printf("class Tuple%s {public Object %s;}\n", i, s);
}

वास्तव में इसका उपयोग करने के लिए, Java8 में हमेशा की तरह, आपको इसे एक उपयुक्त कार्यात्मक इंटरफ़ेस के एक चर (या इसे कास्ट) को असाइन करना होगा और फिर इसकी विधि को कॉल करना होगा; लेकिन तकनीकी रूप से, कार्य केवल लंबोदर अभिव्यक्ति ही है, इसलिए मैं केवल उसी की गिनती कर रहा हूं।

इसके लिए एक इनपुट पैरामीटर की भी आवश्यकता होती है, जो मुझे एक युगल बाइट्स से बचाता है, क्योंकि मैं इसके प्रकार को निर्दिष्ट किए बिना स्थानीय चर के रूप में इसका दुरुपयोग कर सकता हूं। मुझे यकीन नहीं है कि अगर इसे धोखा माना जाता है, लेकिन मेरे लिए यह नियमों के भीतर प्रतीत होता है: मैंने केवल लोगों को यह बताया कि किसी फ़ंक्शन को पोस्ट करने की अनुमति है, न कि उस फ़ंक्शन को कैसे लागू करने की आवश्यकता है। :) और यह वास्तव में पैरामीटर को नहीं पढ़ता है, इसलिए फ़ंक्शन अभी भी स्व-निहित है; आप इसे करने के लिए किसी भी स्ट्रिंग, या यहां तक ​​कि अशक्त पारित कर सकते हैं, और यह अभी भी सही उत्पादन का उत्पादन करेगा।

और यहाँ इसका उपयोग कैसे करना है:

import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        Consumer<?> r =
            s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}
        ;
        r.accept(null); 
    }
}

3

पायथन 2, 96

def f(n=99):s=n and f(n-1)+',_'+`n`or"class Tuple%d {public Object _0";print s%-~n+';}';return s

पायथन 3, 98

def f(n=99):s=n and f(n-1)+',_%d'%n or"class Tuple%d {public Object _0";print(s%-~n+';}');return s

उपयोग:

f()

Ungolfed:

def javatuple(n=99):
    if n == 0:
        s = "class Tuple%d {public Object _0"
    else:
        s = javatuple(n-1) + ',_' + str(n)
    print(s%(n+1) + ';}')
    return s

formers:

103

r=range
for i in r(100):
 print"class Tuple%d {public Object _%s;}"%(i+1,',_'.join(`j`for j in r(i+1)))

108

def f(n=99):
 if n:f(n-1)
 print"class Tuple%d {public Object _%s;}"%(n+1,',_'.join(`i`for i in range(n+1)))

आपके python2 उत्तर में अंतिम पंक्ति अधूरी लगती है: print f(3) देता है: class Tuple1 {public Object _0;} class Tuple2 {public Object _0,_1;} class Tuple3 {public Object _0,_1,_2;} class Tuple4 {public Object _0,_1,_2,_3;} class Tuple%d {public Object _0,_1,_2,_3
आहार

@ डिटियर अंतिम पंक्ति एक परिणाम है। यह केवल तब मुद्रित होता है जब आप इसे अंतःक्रियात्मक रूप से चलाते हैं।
18


2

ग्रूवी, 74 वर्ण

"join ()" अपराजेय है ... नया समाधान, @yariash का धन्यवाद

100.times{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

पुराना समाधान, 78 वर्ण:

(1..100).each{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

2
आप उपयोग कर सकते हैं 100.times{}के बजाय (1..100).each{}
Krzysztof Atłasik

@ यारीश संकेत के लिए धन्यवाद!
t0r0X


1

लुआ, 128 106 बाइट्स

मैं अभी भी एक मुद्रित मूल्य पर सीधे काम करने का एक तरीका खोजने की कोशिश कर रहा हूं, और एक स्ट्रिंग पर नहीं।

संपादित करें: आंशिक रूप से यह पाया गया! मुझे अभी भी "_0, _1 ..." भाग के लिए एक स्ट्रिंग की आवश्यकता है, लेकिन यह पहले से ही बेहतर है :)।

s=""for i=0,99 do s=(s..",_"..i):gsub("^,",s)print(("class Tuple"..(i+1).." {public Object ")..s..";}")end

पुराने 128 बाइट्स का घोल

s="class Tuple1 {public Object _0;}"print(s)for i=1,99 do s=s:sub(1,s:find";"-1):gsub("e%d+","e"..i+1)..",_"..i..";}"print(s)end

Ungolfed

s=""
for i=0,99
do
  s=(s..",_"..i)              -- concatenate s with ",_i"
      :gsub("^,",s)           -- remove the leading "," for ",_0"
  -- then print the concatenated string
  print(("class Tuple"..(i+1).." {public Object ")..s..";}")
end

1

पायथन 3, 111 109 105 बाइट्स

[print('class Tuple%s {public Object %s;}'%(i,','.join('_%i'%j for j in range(i))))for i in range(1,101)]

यह दुनिया की सबसे छोटी चीज नहीं है, मैं सिर्फ भाग ले रहा हूं।

edit1: नीचे 2 बाइट्स को 0,पहले हटाकरrange

edit2: मैं अनावश्यक रूप से सिर्फ उपयोग intकरने के strबजाय कास्टिंग कर रहा था %i... डाउन टू 105।


आपका स्वागत है, अच्छी शुरुआत! यदि दिलचस्पी है, तो दो बार उपयोग करने के बाद या उसके range(i)स्थान पर प्रयास करें, जल्दी से कोशिश करें, फिर प्रत्येक कॉल को बस (अन्य पायथन समाधानों के रूप में) के साथ देखें। range(0,i)ranger=ranger
रे तोल

ऊ, मैं भूल गया range0 पर डिफ़ॉल्ट रूप से शुरू होता है। 2 बाइट्स के नीचे, हालांकि, r=range;शुरुआत में परिणाम उसी वर्ण गणना में जोड़कर , मैंने कोशिश की है कि! : डी
इस्साक

Dair की तुलना में समान टिप्पणी : ',_'.join(map(str,range(i)))यहां 7 बाइट्स छोटी हैं।
409_Conflict

1

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

{"class Tuple",ToString[#]," {public Object ",StringReplace[ToString[#-1&/@Range@#],{" "|"{" ->"_","}"->";}\n"}]}&/@Range[100]<>""

संकेत: \nएक शाब्दिक newline चरित्र के साथ बदला जा सकता है।
लीजनमोनमल 978

1

स्काला, 85 बाइट्स

for(u<-1 to 100)println(s"class Tuple$u {public Object _${0 to u-1 mkString ",_"};}")

1

जावा, ११६

(केवल मुद्रण कार्य के लिए - कुछ टिप्पणियों के अनुसार, यह नियमों के अनुरूप है)

import static java.lang.System.*;
public class T
{
    public static void main(String[] args)
    {
        T t = new T();
        t.p();
    }

    void p(){String s="_0";for(int i=0;i<100;){out.println("class Tuple"+ ++i+" {public Object "+ s + ";}");s+=",_"+i;}}
}

1

PHP, 112 बाइट्स

<?php for($i=0;$i<100;$i++){$m.=$i==0?'_'.$i:',_'.$i;echo 'class Tuple'.($i+1).' {public Object '.$m.';}<br/>';}

जहाँ संभव हो, डबल कोट्स पर गूंज को स्विच करके आप कुछ बाइट्स बचा सकते हैं:<?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}
Samsquanch

1
@Samsquanch इसके अलावा, echo 'class Tuple'.($i+1)." {public Object $m;}\n";आप उपयोग कर सकते हैं echo'class Tuple',$i+1," {public Object $m;}\n";, जो 3 बाइट्स छोटा है। इसके अलावा, मेटा के अनुसार, आप इसे हटा सकते हैं <?phpऔर मान सकते हैं कि आपके कोड को निष्पादित किया जाएगा php -r "code"। इसके अलावा, आप for(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";80 बाइट्स के लिए कर सकते हैं (आपको \nवास्तविक नईलाइन के साथ बदलने की आवश्यकता है )। इसे यहाँ आज़माएँ: ideone.com/oOzKtP
Ismael Miguel

1

गंभीरता से, 55 बाइट्स

2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'
j

हेक्सडंप (प्रतिवर्ती xxd -r)

00000000: 32e2 95a4 5260 3b72 2224 275f 2b22 c2a3  2...R`;r"$'_+"..
00000010: 4d27 2c6a 406b 2263 e295 99c3 b220 54e2  M',j@k"c..... T.
00000020: 9592 ceb1 2564 207b 7075 e296 9056 204f  ....%d {pu...V O
00000030: 626a 6563 7420 2573 3b7d 22e2 8ca1 2560  bject %s;}"...%`
00000040: 4d27 0a6a                                M'.j

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

हां, वह नई लाइन वहां होनी चाहिए।

स्पष्टीकरण (नई पंक्ति के साथ प्रतिस्थापित \n):

2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'\nj
2╤R                                                       push range [1,100]
   `                                              `M      map:
    ;r                                                      push a, range(a)
      "$'_+"£M                                              map:
       $'_+                                                   stringify, prepend "_"
              ',j                                           join with commas
                 @k                                         swap and push stack as list
                   "c╙ò T╒α%d {pu▐V Object %s;}"⌡           decompress, result is
                                                              "class Tuple%d {public Object %s;}"
                                                 %          string format
                                                    '\nj  join with newlines

1

जाप, 52 बाइट्स

Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z}&}` r&59d} ·

?शाब्दिक बाइट 0x95 होना चाहिए। इसे ऑनलाइन टेस्ट करें!

जाप में है:

  • अपने कोड को छोटा करने में मदद करने के लिए संक्षिप्त वाक्य रचना
  • स्ट्रिंग संपीड़न को आगे भी कम करने में मदद करने के लिए।
  • कीड़े के बहुत सारे आप अपने कंप्यूटर खिड़की से बाहर फेंक करना चाहते हैं बनाने के लिए।

मैं स्ट्रिंग में एक अर्धविराम का उपयोग नहीं कर सकता क्योंकि यह जिस फ़ंक्शन में लिपटा है वह अर्धविराम के बाद सब कुछ वापस करना चाहता है। यह केवल 46 बाइट्स होना चाहिए:

Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z};}`} ·

लेकिन अफसोस, यह नहीं है। मैं देखूंगा कि क्या मैं अगले कुछ घंटों में इन बगों को ठीक कर सकता हूं।

यह काम किस प्रकार करता है

Lo £       }  // Generate the range [0..100), and map each item X in this range to:
`cÓ? TÕà{X}   //  "class Tuple" + X +
\{puÞV Object //  "{public Object" +
{Xò ®'_+Z}    //   Create the range [0..X] and map each item Z to "_" + Z.
              //   Upon stringification, this automatically inserts the commas.
&}`           //  + "&}"
r&59d         //  Replace the "&" with String.fromCharCode(59), or ";".
·             // Join the result with newlines.

बाह! निंजा ~ 18 महीने से! आपको पहले Xतरीके से वेतन वृद्धि करने की आवश्यकता है ।
शैगी

1

जावास्क्रिप्ट, 112 110 बाइट्स

2 बाइट्स धन्यवाद @ CᴏɴᴏʀO'Btes

_=>[...Array(100)].map((x,i)=>`class Tuple${++i} {public Object ${[...Array(i)].map((y,j)=>'_'+j)};}`).join`
`

Ungolfed:

_=>                                         // anonymous function
    [...Array(100)].map((x,i)=>             // 100 times [0..99]
        `class Tuple${++i} {public Object   // Tuple index + 1
            ${[...Array(i)].map(            // (index + 1) times
                (y,j)=>'_'+j                // _+j with j in [0..index]
            )}                              // Array without join prints comma in between
        ;}`                                 // as literal string
    ).join`\n`                              // display array line by line

1
मुझे लगता है कि आप की जगह ले सकता ${i+1}के साथ ${i++}और की जगह ${[...Array(i++)]के साथ ${[...Array(i)]
कॉनर ओ'ब्रायन

@ CᴏɴᴏʀO'Bʀɪᴇɴ। धन्यवाद, मैंने अपडेट किया है++i
हटा दिया गया

1

ग्रूवी, 97 बाइट्स

(1..100).each{println "class Tuple${it} {public Object ${(0..it-1).collect{"_$it"}.join(',')};}"}

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


1
आप (1..100) .each {} के बजाय 100.times {} का उपयोग कर सकते हैं, जो 4 बाइट्स बचाता है।
Krzysztof Atłasik

आप ज्वाइन करने में ब्रेसेस को भी छोड़ सकते हैं ( join','), .collect{}*.with{}
प्रिंटलाइन के

1

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

r=range
for i in r(1,101):print"class Tuple%d {public Object _%s;}"%(i,',_'.join(map(str,r(i))))

धन्यवाद @DenkerAffe उपयोग करने के सुझाव के लिए lambda

धन्यवाद @MathiasEttinger joinविचार के लिए।


2
यदि आप इसके लिए एक फ़ंक्शन को परिभाषित करने के बजाय अपने कम-कॉल में एक लैम्ब्डा का उपयोग करते हैं, तो आप इसे 111 बाइट्स तक नीचे कर सकते हैं:reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
Denker

1
या ',_'.join(map(str,r(i)))एक अतिरिक्त 14 बाइट्स हटाने के लिए उपयोग करें (या 15, क्योंकि आपने अपने में एक अतिरिक्त स्थान छोड़ दिया है reduce)।
409_Conflict 14

1

सी ++, 164 159 157 बाइट्स (केवल फ़ंक्शन के रूप में 155)

#include <iostream>
#define o std::cout<<
int main(){int j,i=0;for(;i<100;++i){o"class Tuple"<<i+1<<" {public Object _0";for(j=0;++j<=i;)o",_"<<j;o";}\n";}}

यह एक पूर्ण कार्यक्रम है। आप फ़ंक्शन को 2 बाइट्स केवल प्रपत्र में सहेज सकते हैं यदि आप int main()साथ बदलते हैं void f()

Ideone में कोड चलाएँ

वृहद विस्तार सहित अनपढ़

#include <iostream>
int main()
{
    int j,i=0;
    for(;i<100;++i)
    {
        std::cout << "class Tuple"<< i+1 <<" {public Object _0";
        for(j=0;++j<=i;)
            std::cout << ",_" << j;
        std::cout << ";}\n";
    }
}

प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! अच्छा पहला जवाब! जब तक अन्यथा चुनौती में नहीं कहा गया है, आप हमेशा पूर्ण कार्यक्रमों के बजाय कार्यों का उपयोग कर सकते हैं, इसलिए आप ऐसा करके कुछ बाइट्स बचा सकते हैं। आपको अभी भी iostream tho को शामिल करना है, क्योंकि आउटपुट के लिए इसकी आवश्यकता है।
डेनकर

तुम भी j=1पाश के लिए अपने में करना चाहते हो सकता है , इस प्रकार नहीं है if(j)
एथिरिक

@Ethiraric लेकिन निश्चित रूप से! कितना मैला है। मुझे लगता है कि मुझे "पहली पंक्ति पर परिवर्धन को छोड़ना याद है" के विचार पर बहुत ध्यान केंद्रित किया गया था और लेखन भी समाप्त हो गया।
सेंडरन

@ सिंदरन या यहां तक ​​कि for(int j=0;++j<=i;)एक और बाइट को बचा सकता है ।
एथिरिक

@Ethiraric ने वैरिएबल डिक्लेरेशन निकाल कर एक अतिरिक्त बाइट को शेव किया, जिसने एक और खाली अभिव्यक्ति को सक्षम किया।
प्रेषण
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.