हवालात में लाइन लिखिए


63

परिचय

बुरी खबर दोस्तों - आपको नजरबंदी मिली। आपका अंग्रेजी शिक्षक इस साइट को नहीं समझता है और आपको "अपने डिजिटल dohickeys पर गणित करना बंद करना चाहता है , यह अंग्रेजी वर्ग है!"

उसने आपको ब्लैकबोर्ड पर 25 बार अपनी पसंदीदा कहावत लिखने की सजा सुनाई, जो ब्लैकबोर्ड पर कुल 100 लाइनें देगा।

The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.

आपके लिए भाग्यशाली, आप एक शौकीन चावला पाठक हैं (विशेषज्ञ कोड-गोल्फर का उल्लेख नहीं करने के लिए)! आपके पास एक ऐसी ट्रिक के बारे में पढ़ा है जो संभवतः आपको आसानी से मिल सकती है।

फ़ाक्सत्रोट

(फॉक्सट्रॉट बिल अमेंड द्वारा)

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

एक कार्यक्रम लिखें जो निम्नलिखित नियमों का अनुपालन करता है:

  • आपके प्रोग्राम को 4 से ऊपर की पंक्तियों को 25 बार प्रिंट करना होगा। उस क्रम में लाइनों को दोहराया जाना चाहिए। आउटपुट की कुल 100 लाइनें (बहुत अंत में एक नई रूपरेखा या बहुत शुरुआत में एक अग्रणी नई लाइन ठीक है)।
  • आप वर्णों का उपयोग नहीं कर सकते 0123456789। आपका शिक्षक गणित से भ्रमित हो जाता है और आपको बाहर बुलाएगा!
  • आप आयातों की गिनती के बिना किसी भी आयात और बाहरी पुस्तकालयों का उपयोग कर सकते हैं। आपका अंग्रेजी शिक्षक प्रोग्रामिंग के बारे में नहीं जानता है। जेसन न लिखकर बहुत काम बचा सकता था #include <stdio.h>और आप उसकी वही गलतियाँ नहीं करना चाहते!
  • अपने कार्यक्रम को byteगिनती द्वारा स्कोर करें । सबसे कम स्कोर जीत!

2
यदि पाठ "1900" पढ़ा होगा, तो आउटपुट लिखना थोड़ा और मुश्किल हो जाएगा।
इंगो बुर्क

30
कॉमिक्स के लिए: वह \ n की छपाई नहीं कर रहा है, और 1 से लूप काफी अजीब है (जैसे सी प्रकृति के खिलाफ) ...
वीएक्स

11
@ वीएक्स बिल अमेंड एक लंबे समय तक पास्कल डाई-हार्ड है, और जब भी वह सी लिखता है जो बहुत स्पष्ट हो जाता है।
शराबी

5
यह मेरे पुराने अंग्रेजी शिक्षकों में से एक की तरह लगता है।
कज़ वोल्फ

2
बैनिंग + ने यहाँ समझदारी की होगी, लेकिन शायद यह बहुत मुश्किल था।
फराप

जवाबों:


9

CJam, 109 107 106 104 103 बाइट्स

0000000: 22 0c 20 4f 18 41 e4 d8 a5 f3 95 cf 5e 2b cb 1c  ". O.A......^+..
0000010: 44 64 2f bf 28 23 e2 47 4e 4e 77 73 fc 43 09 a2  Dd/.(#.GNNws.C..
0000020: 09 0b fb 18 29 e8 e8 49 5d fc 00 da b8 70 b6 3e  ....)..I]....p.>
0000030: 0c 24 d7 5a 5b 28 1c 45 2e 90 63 86 04 5c 3e 95  .$.Z[(.E..c..\>.
0000040: 4b ae 66 22 48 48 2a 62 46 47 2b 62 22 54 0a 20  K.f"HH*bFG+b"T. 
0000050: 2d 2e 22 27 7b 2c 57 25 7c 66 3d 7b 28 2f 29 2a  -."'{,W%|f={(/)*
0000060: 7d 5a 2a 43 44 2b 2a                             }Z*CD+*

ऊपर एक प्रतिवर्ती xxd डंप है।

परिक्षण

आप ऑनलाइन इंटरप्रेटर में इसे चलाकर उपरोक्त कोड उत्पन्न और निष्पादित कर सकते हैं :

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time ""T
 -."'{,W%|f#31bHH*b:c`'\2*/'\*"HH*bFG+b""T
 -."`"'{,W%|f={(/)*}Z*CD+*"]:+~

उत्पन्न कोड (इसे निष्पादित किए बिना) देखने के लिए, अंतिम निकालें ~

बाइट्स की संख्या गिनने के लिए (ISO-8859-1 में एक चरित्र एक बाइट है), फाइनल ~को ए के साथ बदलें ,

मुद्रण योग्य संस्करण (122 बाइट्स)

"bxyyeighxrum.yninexfun.ytwo-thousands abto run
a civilized classroom.y
The xteen-hundreds webfor bre a time "{(/)*}Z*CD+*

स्ट्रिंग (एस) को धकेलने के बाद, निम्नलिखित निष्पादित हो जाता है:

{    }Z*        " Repeat 3 times:     ";
 (              "     Q := S.shift()  ";
  /             "     T := S.split(Q) ";
   )            "     R := T.pop()    ";
    *           "     S := T.join(R)  ";
        CD+*    " S *= 12 + 13        ";

मूर गोल्फिंग

अप्रतिबंधित स्ट्रिंग (U) को धकेलने के बाद, निम्नलिखित निष्पादित हो जाता है:

HH*b                        " U := U.base(17 * 17) ";
    FG+b                    " U := U.base(15 + 16) ";
        "T\n -."            " P := 'T\n -.'        ";
                '{,W%|      " P |= 'zyx...\0'      ";
                      f=    " U[i] -> P[U[i]]      ";

यह मुद्रण योग्य संस्करण की स्ट्रिंग को आगे बढ़ाता है। बाकी कोड पहले की तरह काम करता है।


कोड का उपयोग करते हुए, मुझे यह उत्पन्न कोड मिलता है जो 144 बाइट्स है। क्या मुझसे कुछ ग़लत हो रहा है ?
ऑप्टिमाइज़र

UTF-8 एन्कोडिंग एक उच्च बाइट गिनती में परिणाम होगा, हाँ। ISO-8859-1 के साथ, बाइट गिनती 109. आप की जगह ले सकता है ~के साथ ,सत्यापित करने के लिए।
डेनिस

2
मुझे सटीक परिणाम मिला, ऑप्टिमाइज़र ने किया, लेकिन इसमें ]:+~किए गए काम को जोड़ दिया। आप इसे अपने कोड में क्यों नहीं जोड़ते?
चमकदार 12

1
@ user23013: जावा दुभाषिया I / O के लिए $ LANG का सम्मान करता है । आंतरिक रूप से, सीजेएम में सिर्फ 16-बिट वर्ण हैं।
डेनिस

3
आपको वास्तव में अपने समाधान को यूनिकोड-ईज़ करने की ज़रूरत नहीं है क्योंकि बिना संपीड़न के यह केवल 124 बाइट्स है, अन्य सभी को हराकर।
ऑप्टिमाइज़र

77

जावास्क्रिप्ट (ईएस 6) 164

B='teen-hundreds were a time',alert(B.replace(/./g,
"The eigh"+B+" for rum.\nThe nine"+B+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

फायरफॉक्स / फायरबग कंसोल में टेस्ट


19
यह प्रतिभा है!
ऑप्टिमाइज़र

1
हाँ, प्रत्येक चरित्र को बड़ी स्ट्रिंग द्वारा प्रतिस्थापित किया जाता है। बड़े तार की 25 प्रतियां बनाना।
ऑप्टिमाइज़र

1
यही कारण है कि @Optimizer है प्रतिभा :)
FryAmTheEggman

3
@Malvolio वास्तव में दोहराया अनुभाग 30 वर्ण है। और मैं इस सरल समाधान को खोजने से पहले शब्दों को जोड़ने और काटने और बदलने के प्रयासों का एक विशाल अनुक्रम दिखा सकता था।
edc65

1
@IsmaelMiguel मुझे लगता है कि आप किसी भी ES6 ब्राउज़र का मतलब है। समस्या: जिस समय यह चुनौती पोस्ट की गई थी, किसी भी ब्राउज़र में टेम्प्लेट स्ट्रिंग्स को लागू नहीं किया गया था: फ़ायरफ़ॉक्स पहले था - rel 34, dec 2014 पहले - फिर क्रोम, मार्च 2015। लेकिन फिर भी टेम्पलेट स्ट्रिंग्स के बिना आपका स्काउट 153, मेरा से बेहतर होगा । आपको इसे उत्तर के रूप में पोस्ट करना चाहिए।
edc65 20

34

अजगर: 188 173 160 153

a="teen-hundreds were a time"
print"The eigh%s for rum.\nThe nine%s for fun.\nThe two-thousands are a time to run\na civilized classroom.\n"%(a,a)*len(a)

मैं ज्यादा अजगर नहीं करता, लेकिन यह मुझे बहुत छोटा लगता है।

संपादित करें: तो मैं गलत था, यह बिल्कुल कम नहीं था! टिप्पणियों में सहायता के लिए धन्यवाद: डी


1
आप बाइट्स के एक जोड़े को बचाने के लिए लूप के लिए न्यूलाइन और इंडेंट खो सकते हैं।
होलोवे

1
@ जीबिट्स, मैं उस
होलोवे

1
@Geobits आप एक विंडोज़ मशीन पर चल रहे हैं? खिड़कियों में लाइन एनकोडिंग सिर्फ \ n के बजाय अक्सर \ r \ n होते हैं। यही कारण है कि यह हमारे लिए 157 बाइट्स दिखा रहा है, लेकिन आपके लिए 160।
रोब वाट्स

2
यह केवल 160 है । आप शायद भागने की वजह से तीनों \को छोड़ रहे हैं \n...
ऑप्टिमाइज़र

1
आप के लिए मूल्य स्थानांतरित कर सकते हैं bमें print: %से अधिक पूर्वता है *
FryAmTheEggman

29

CJam, 151 140 135 132 130 128 बाइट्स ( ट्वीट करने योग्य )

"TeighYrum.TnineYfun.Ttwo-thousands are a time to run
a civilized classroom.""YT"["teen-hundreds were a time for ""
The "]erAF+*

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

मैं इसे यूनिकोड में परिवर्तित करके 110 बाइट्स तक कम करने में सक्षम हूं, लेकिन चूंकि यह अन्य यूनिकोड समाधान को नहीं मार रहा है, इसलिए मैं इसे नहीं डालूंगा :)


23
अरे, उस :Dइमोटिकॉन वहाँ क्या कर रहा है ?! क्या आप नजरबंदी के दौरान अपने दोस्तों को टेक्स्टिंग कर रहे हैं? प्रिंसिपल के कार्यालय में जाओ!
दरवाज़े

2
@ डॉर्कनोब: डी: पी
ऑप्टिमाइज़र

हो सकता है कि आप Tउर्फ को बना सकें .\nThe , फिर आउटपुट स्ट्रिंग की शुरुआत से पैदा होने वाली अतिरिक्त लाइन को हटा दें (मेरा सीजम-फू पर्याप्त नहीं है जो यह पता लगा सके कि आप आसानी से ऐसा कर सकते हैं)

@professorfish कि अधिक बाइट खपत से समाप्त होता है जितना यह बचाता है। mothereff.in/… *% 28Y% 2F% 28% 40 \
ऑप्टिमाइज़र

नाइटपैकिंग: एएससीआईआई-संगत कोड पेज के ऊपरी 128 बाइट्स का उपयोग करने से यूनिकोड का कोई लेना-देना नहीं है।
डेनिस

23

PHP, 0 बाइट्स



आप आयातों की गिनती के बिना किसी भी आयात और बाहरी पुस्तकालयों का उपयोग कर सकते हैं।

इस कोड को चलाने के लिए, आपको इसके data://text/plain,<?php...classroom.\n";साथ एक पुस्तकालय को आयात करना होगा :

<?php require_once 'data://text/plain,<?php
  for($i=ord("z");$i>ord("a");$i--)
    echo "The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";'; ?>

और आप allow_url_includeअपने में सक्षम होना चाहिए php.ini

डेनिस की बदौलत अधिक संख्या या एक्सटेंशन नहीं।


9
मेरी पहली वृत्ति खामियों के बारे में कुछ चिल्लाना थी, लेकिन चूंकि यह उत्तर वास्तव में आत्म-निहित है, मुझे लगता है कि यह एक खामियों का फायदा उठाने के लिए PHP का उपयोग करने का एक चतुर तरीका है जो जानबूझकर पायथन के जवाब के लिए बनाया गया है। चूंकि आप पहले से ही धोखा दे रहे हैं, आप बस इस्तेमाल कर सकते हैं require_once "data://text/plain,The eighteen-hundreds...";, जिसे श की आवश्यकता नहीं है , संख्या का उपयोग नहीं करता है और अभी भी 0 बाइट्स है।
डेनिस

10
मैं रचनात्मकता के लिए इसे बढ़ाऊंगा, लेकिन मैं इसे स्वीकार नहीं करूंगा।
hmatt1 16

14

माणिक, 185 180 176 बाइट्स

संपादित करें: स्ट्रिंग प्रक्षेप, धन्यवाद @britishtea

यह मेरा अब तक का पहला गोल्फ है, और मैं बहुत ज्यादा रूबिस्ट नहीं हूं (लेकिन मैं निश्चित रूप से रूबी से प्यार करता हूं)। वैसे भी, यह वह है (छोटा, Doorknob का सुझाव)।

t=' were a time for '
s="The eighteen-hundreds#{t}rum.
The nineteen-hundreds#{t}fun.
The two-thousands are a time to run
a civilized classroom."
s.split.size.next.times{puts s}

1
आप इसे आगे कुछ शब्द / शब्द-समूहों को स्ट्रिंग इंटरपोलेशन के साथ बदलकर इसे नीचे गोल्फ कर सकते हैं।
ब्रिटिश

3
+1 नोटिस करने के लिए स्ट्रिंग में (लगभग) 25 शब्द हैं
डिजिटल ट्रॉमा

2
s.split.size.next5 वर्ण बचाता है (आपको विभाजित करने के लिए स्थान निर्दिष्ट करने की आवश्यकता नहीं है)।
दरवाज़े

मैं रूबी को नहीं जानता, लेकिन (s.split.size+1).times1 बाइट कम नहीं होगी?
देखिए

1
@ Sieg को नंबरों का उपयोग करने की अनुमति नहीं है!
राजद

13

जावा 249 231 230 222

मेरा पहला जवाब! मैं जिस भाषा को अच्छी तरह से जानता हूं उसका उपयोग क्यों न शुरू करूं।

class c{public static void main(String[]g){for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));}}

Ungolfed

import static java.lang.System.*;
class c
{
    public static void main(String[]g)
    {
        for(int a='!';a++<':';out.println("The eighxrum.\nThe ninexfun.\nThe two-thousands are a time to run\na civilized classroom.".replaceAll("x","teen-hundreds were a time for ")));
    }
}

9
स्वागत हे! आप publicअपने वर्ग के लिए छुटकारा पा सकते हैं और argsएक एकल चरित्र को छोटा कर सकते हैं। आप a++<':'इसे अलग से बढ़ाने के बजाय भी कर सकते थे । चूंकि ओपी आयात की गिनती नहीं कर रहा है, आप थोड़ा और अधिक बचा सकते हैं import static java.lang.System.*;, तो आपको System.बाद में लिखने की आवश्यकता नहीं है (जहां यह मायने रखता है)। यह करते हुए कि मैं इसे लगभग 230 के आसपास ले आया हूँ। यदि आप पहले से ही नहीं है, तो आप जावा टिप्स पेज पर एक नज़र डालना चाहते हैं ।
Geobits

@Optimizer धन्यवाद! मैंने अभी ऊपर स्ट्राइक नहीं देखी थी।
चमकदार

@ ल्यूमिनस एनपी :)
ऑप्टिमाइज़र

@Geobits धन्यवाद! जाहिर है, तुम भी पाश में ही कोड छड़ी कर सकते हैं। कुछ भी जोड़ने या हटाने के लिए नहीं था, लेकिन मुझे लगता है कि यह उस तरह से अधिक गोल्फ दिखता है।
चमकदार

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

11

C 171

a='a';b="teen-hundreds were a time for ";main(){for(;a++<'z';)printf("The eigh%srum.\nThe nine%sfun.\nThe two-thousands are a time to run\na civilized classroom.\n",b,b);}

सबसे पहले, मैंने सरलीकृत संस्करण (189 बाइट्स) की कोशिश की, जो अन्य सी समाधान से बेहतर था ...

main(a){for(a='a';a<'z';++a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

जिसे मैंने बाद में थोड़ा अनुकूलित किया ...


1
हुह, यह निफ्टी है। मुझे यह महसूस नहीं हुआ कि स्ट्रिंग वेरिएबल के साथ स्टैटिक वैरिएबल उनके पास दिए गए हैं जो स्पष्ट रूप से टाइप के हैं char *
फायरफली

@ पूरी तरह से जीसीसी संकलित पर ठीक संकलित करता है aक्योंकि यह चूक करता है int, जो एक charमूल्य को स्वीकार कर सकता है । यह पसंद नहीं है bजब तक कि मैं इसे एक कॉल नहीं करता char[]। VX, आप किस संकलक का उपयोग कर रहे हैं?
स्तर नदी सेंट

bहै intभी, लेकिन यह स्ट्रिंग शाब्दिक सूचक रखती है। यह जीसीसी में पूरी तरह से ठीक है (मेरी मशीन 4.8.2 पर है)।
VX

1
for(a='a';++a<'z';)
देखिए

9

जावास्क्रिप्ट, ईएस 6, 174 172 154 बाइट्स

@ Edc65 की replaceट्रिक का उपयोग करना । धन्यवाद!

alert((d="teen-hundreds were a time").replace(/./g,`The eigh${d} for rum.
The nine${d} for fun.
two-thousands are a time to run
a civilized classroom.
`))

टेम्पलेट स्ट्रिंग्स के उपयोग के कारण केवल नवीनतम फ़ायरफ़ॉक्स (34 और ऊपर) में काम करता है।


@Nijikokun आपको पता है कि 25 के बजाय 30 पुनरावृत्ति का कारण होगा, है ना?
ऑप्टिमाइज़र

मुझे लग रहा है कि ff 34 बीटा या कुछ और है क्योंकि मैं नवीनतम (बस जाँच) पर हूँ और यह 33 है और यह वहाँ पर काम नहीं करता है
Sammaye

8

ब्रेन फ़क ( 1,597 वर्ण )

+++++++++++++++++++++++++[>->-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[->+++<]>++.++++.--.+.++++++++++++.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.---[----->++<]>.+++.--------.+[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.+[----->+<]>+.-----.+++++.---------.[--->+<]>---.+++[->+++<]>..+++++++++.[----->++<]>+.[->++++++++<]>.[--->+<]>---.-------.----------.++++++++++++++.-------------.-.--[--->+<]>---.+[---->+<]>+++.--[->++++<]>-.[->+++<]>.+++++++++++++.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.++[->+++<]>.+++++++++.+++.[-->+++++<]>+++.++[->+++<]>.-[--->+<]>--.-------.[----->++<]>++.>++++++++++.>-[--->+<]>-.[---->+++++<]>-.---.--[--->+<]>-.---[->++++<]>.+++.--------.[->+++++<]>++.+[--->++<]>.------------.+++++++.++++++.--.++[->+++<]>++.+++++++++++++.----------.--[--->+<]>---.+[---->+<]>+++.[->+++<]>+.--[--->+<]>---.-------------.--[--->+<]>-.[->+++<]>+.-[->+++<]>.---[->++++<]>.-----------.++++.--------.--[--->+<]>-.---[->++++<]>.-----.[--->+<]>-----.---[----->++<]>.+++.-------.>++++++++++.--[--->++++<]>+.-[->+++<]>.+[->+++<]>.++++++.[->++++++<]>.[------>+<]>.+++.---.-[--->+<]>++.---[->+++<]>.-.-[--->+<]>-.+[->+++<]>.+++++++++.-----------.--[--->+<]>--..-.---..--.+[----->++<]>++.>++++++++++.[[-]<+]<-]

यह अभी भी आगे गोल्फ हो सकता है, अगर किसी को दिलचस्पी है।

आप इसका परीक्षण कर सकते हैं और पुष्टि कर सकते हैं कि यह सभी नियमों को पूरा करते हुए सही आउटपुट देता है।


5
यह क्या है? मैंने आपको वाक्य लिखने के लिए कहा था, न कि बेतरतीब स्किगल! यहाँ भी कोई शब्द नहीं हैं!
रेकिंग

5
उम्म .. मुझे लगता है कि लक्ष्य सबसे कम पात्रों का उपयोग करना है । आपको यकीन है कि "एंटी-गोल" जीत लिया :-)
कार्ल विटथॉफ्ट

7

पर्ल - 145

मैं इतने सारे उत्तर देखकर खुश हूँ! यहाँ एक पर्ल समाधान है।

$s="teen-hundreds were a time for";print"The eigh$s rum.
The nine$s fun.
The two-thousands are a time to run
a civilized classroom.
"for b..z

7

चूंकि वह गणित से बहुत नफरत करती है, इसलिए गणितज्ञ नहीं (177)

   a = "teen-hundreds were a time for "; Do["The eigh" <> a <> "rum.
   The nine" <> a <> "fun.
   The two-thousands are a time to run a civilized classroom." // Print, {StringLength@a}]

6

जावास्क्रिप्ट ईएस 6, 198 193 बाइट्स

m=Math;alert("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n".repeat(~~(m.exp(m.PI)+m.E)))

आपका शिक्षक कोई संख्या नहीं चाहता है, लेकिन चूंकि वे एक अंग्रेजी शिक्षक हैं, इसलिए उन्हें कोई सुराग नहीं मिला कि Math.floor(Math.exp(Math.PI)+Math.E)इसका क्या मतलब है।

अधिक आसानी से:

alert("The eighteen-hundreds were a time for rum.\n\
 The nineteen-hundreds were a time for fun.\n\
 The two-thousands are a time to run\na civilized\n classroom.".repeat(Math.floor(Math.exp(Math.PI)+Math.E)))

नवीनतम फ़ायरफ़ॉक्स में चलाया जाना चाहिए


1
अंत में एक नई पंक्ति गुम है, इसलिए पहली और आखिरी पंक्तियों को 75 पंक्तियों में जोड़ दिया गया है
edc65

मैं XKCD के e ^ pi के संदर्भ के साथ नियमों को झुकने के लिए +1 का पुरस्कार दूंगा, लेकिन + ई के साथ-to -pi ... Bravo के विपरीत!
वैलीवेस्ट

-4 बाइट्स:with(Math)alert("long string here".repeat(exp(PI)+E|[]))
अंडरस्कोर

ओह ठीक है, मठ के बारे में भूल जाओ:(q='aaaaa'.length)*q
edc65

@ Edc65 टिप्पणी के बारे में भी भूल जाओ! यह प्रयोग करें "\x18".charCodeAt():! (हार्डकोड एरो ऊपर और आप एक टन बचाएंगे!)
इस्माईल मिगुएल

6

जावास्क्रिप्ट - 178 बाइट्स 176 बाइट्स

मेरा पहला गोल्फ, सोचा था कि मैं इसे थोड़ा ट्विडलिंग ऑपरेटरों के साथ एक शॉट दूंगा, काफी उम्मीद के साथ बाहर नहीं निकला, लेकिन अच्छी तरह से ओह!

c="teen-hundreds were a time for "
b=!!c
alert(Array((b+b+b<<b+b)+b<<b).join("The eigh"+c+"rum.\nThe nine"+c+"fun.\nThe two-thousands are a time to run\na civilized classroom.\n"))

चूँकि मैं पहले से ही नजरबंदी में हूँ, और जाहिर तौर पर खुद को परेशान करने वाली परेशानियाँ हैं ... जावास्क्रिप्ट - 71 बाइट्स

यह शायद मुझे गहरी परेशानी में डाल देगा, लेकिन, अगर मैं पहले ही खुद को हिरासत में ले चुका हूं, और मैं अपनी नजरबंदी को धोखा देने की योजना बना रहा हूं, तो जाहिर तौर पर मुझे इस बात पर अच्छे निर्णय की कमी है कि मुझे कक्षा में खुद के साथ कैसा व्यवहार करना चाहिए। हो सकता है कि अगर मैं अपने एक शिक्षक को अपने ऊपर खींच लूँ, तो मैं वहाँ से बाहर आने वाले अन्य सभी गोल्फरों पर एक ओवर खींच सकता हूँ।

b=+true;alert( Array((b+b+b<<b+b)+b<<b).join($('code')[+!b].innerHTML))

शीघ्र! Chrome / IE 11 / Firebug उपयोगकर्ता, अपने कंसोल को अभी खोलें और इसे आज़माएँ।

(कृपया मुझे बहुत चोट न दें, मुझे लगा कि यह मजाकिया था)


1
72 मजेदार है। 176 कई बार गलत है: ऐरे (25) .जॉइन () 24 पुनरावृत्ति देता है, और अंत वाक्य में एक नई रेखा गायब है। सभी 24 * 3 = 72 पंक्तियों में 100 के बजाय (आलसी लड़का!)
edc65

औघ, ठीक तय। अब 178 और 71.
सिडनी

1
आप "een-सैकड़ों ... for" में t और एक अनुगामी स्थान जोड़कर 2 बाइट्स बचा सकते हैं।
चमकदार

दूसरा कोड क्या कर रहा है?
3

1
@ अन्याय, यह JQuery का उपयोग करता है, एक सामान्य जावास्क्रिप्ट पुस्तकालय जो जाहिरा तौर पर SO नेटवर्क का उपयोग करता है। $ वास्तव में एक फ़ंक्शन है जो कई अन्य चीजों के अलावा, डोम तत्व चयन में से बहुत सारे काम करता है। $ ('<चयनकर्ता>') का उपयोग करके, जो इस मामले में 'कोड' टैग के सभी तत्वों के साथ है, मुझे सभी तत्वों के साथ एक वस्तु मिलती है। [+! B] का उपयोग करके मुझे झूठे का पूर्णांक मान मिलता है, जो शून्य है, इसलिए मैं 0 वें सूचकांक का चयन करता हूं, जो ओपी का पहला कोड ब्लॉक होता है, जो वास्तव में शिक्षकों की पसंदीदा कहावत है।
सिडनी

5

सी # - 229 216 बाइट्स

मुफ्त usingFTW!

using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=a.Length,i=b-b;i++<b;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

वैकल्पिक, एक ही बाइट गिनती (अधिक usingदुरुपयोग, हालांकि)

using i=System.Int32;
using c=System.Console;
class S{static void Main(){var a="teen-hundreds were a time";for(int b=new i();b++<a.Length;)c.Write("The eigh"+a+" for rum.\nThe nine"+a+" for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}}

4
~~ (~ °) °) ┻━┻
William

आप "के लिए" कोa
FryAmTheEggman

@FryAmTheEggman स्ट्रिंग 25 वर्ण लंबा है, वह इसे संख्या 25 को विवेकपूर्वक प्राप्त करने के लिए उपयोग कर रहा है। हालाँकि, वह इस विधि को केवल एक दूसरे से ( ':'-'!'== 25) वर्णों को घटाने के लिए स्वैप कर सकता है , जो इससे छोटा है a.Length, और आपके सुझाव के अनुसार शामिल होने की अनुमति देगा। (वैकल्पिक रूप से, अन्य उत्तरों के रूप में करते हैं, और बस के बीच पाश , !और :, अजीब बात है कि हम सभी ने एक ही
चार्ट

@VisualMelon वूप्स, आप पूरी तरह से सही हैं।
फ्रायअमईएग्गमैन

1
मुझे लगा कि चूंकि हम भी गिने नहीं जा रहे हैं, क्या ओपी ने इसे स्पष्ट किया है?
विलियम बारबोसा

5

Befunge-93, 268 260 256 (ग्रिड आकार: 72x6 = 432)

#v"K">:!#@_v>$"enin">,,,,::-" rof emit a erew sderdnuh neet">:#,_$::!!-#
, ,,,"The "<|\!\%-"\^"::%-" #":-!!:
   -"#-"-::$_ "hgie"^v1"two-thousands are a time to run"
$_$  "nuf"v"rum"
v1-"##",,,<      >:#,_"moorssalc dezilivic a"1
_# < ^,,\-"AK."$_,#!:

यह मेरी पहली बार गोल्फ है, इसलिए मुझे लगा कि मैं एक ऐसी भाषा की कोशिश करूंगा जो इस समस्या के लिए पहले से ही नहीं की गई थी, क्योंकि मैं इसे अन्यथा नहीं जोड़ूंगा। चूंकि यह Befunge-93 संगत है (एक 80x25 ग्रिड के अंदर फिट बैठता है और केवल Befunge-93 निर्देशों का उपयोग करता है), इसे Befunge-98 में भी काम करना चाहिए। बस के मामले में, मैं भी अंतरिक्ष के अलावा किसी भी गैर-अनुदेश पात्रों पर सूचक पास होने से बचा। मुझे याद नहीं है कि क्या विनिर्देश वास्तव में उन पात्रों को नो-ऑप्स के रूप में परिभाषित करता है, और मेरे कोड में कोई भी नस्लीय दानव नहीं होगा ।

आप वास्तव में Befunge कोड को नहीं खोल सकते हैं। यहां ध्यान देने वाली महत्वपूर्ण बात यह है कि बेफुंज अपने ASCII मूल्यों के रूप में पात्रों को ढेर में धकेलता है, जिससे संख्याओं का शाब्दिक रूप से उल्लेख किए बिना उन्हें अपेक्षाकृत सरल बना दिया जाता है। "K"ऊपर बाईं ओर स्थित, 75 है repetitions समय की संख्या की बात की पुनरावृत्ति प्रति "" खंड संख्या; मैं इस नंबर पर मॉडुलस और कुछ अन्य शिल्‍पकार का उपयोग करता हूं (जो कि इस नंबर पर) यह निर्धारित करने के लिए कि प्रत्‍येक गो-आस-पास मुद्रण के माध्‍यम से कौन सा पथ लेना है। ::-शून्य के लिए एक अच्छा मुहावरा है, शून्य-समाप्ति वाले तारों के लिए उपयोगी है; मैं इसे यहां दो बार उपयोग करता हूं।

मौके पर पॉइंटर को एक ऐसी जगह से गुजरने की ज़रूरत होती है जहाँ मैं एक स्ट्रिंग को परिभाषित कर रहा हूँ, इसलिए कुछ बिंदुओं पर निश्चित संख्या में प्राप्त करने के लिए उपयोग किए जाने वाले वर्णों की विशिष्ट पसंद।

बहुत सारे Befunge दुभाषियों के बारे में अच्छी बात यह है कि आप ग्रिड के चारों ओर पॉइंटर डार्ट देख सकते हैं, साथ ही देख सकते हैं कि स्टैक में क्या मान हैं। इस तरह से आप कदम बढ़ा सकते हैं और देख सकते हैं कि कार्यक्रम कैसे काम करता है, कम या ज्यादा! मैं http://befungius.aurlien.net/ का उपयोग करने की सलाह दूंगा यदि आपके पास अपना पसंदीदा Befunge दुभाषिया नहीं है।

यह शायद थोड़ा (या बहुत अधिक) नीचे गिराया जा सकता है। कृपया मुझे प्रतिक्रिया दें! अगर मुझे बेहतर स्पष्टीकरण देने की आवश्यकता है, तो कोई मुझे बताए; मैं इसके लिए नया हूं।

संपादित करें - जब प्रोग्राम समाप्त हो जाता है (बस @जहां ^इस्तेमाल किया जा रहा है) डालते समय अंतिम पंक्ति में अनावश्यक रीडायरेक्ट से छुटकारा पाकर कुछ बाइट्स से मुंडा ।

एक और संपादन - विभिन्न स्थानों में कुछ और बाइट्स का मुंडन, ज्यादातर प्रवंचना के साथ। (ग्रिड आकार भी जोड़ा, जैसा कि Befunge उत्तरों के साथ रुझान प्रतीत होता है।)


हे कासरान का स्वागत कोडगोल्फ स्टैक एक्सचेंज में! यह जवाब बहुत अच्छा लग रहा है। आपकी व्याख्या अच्छी है और आप एक Befunge दुभाषिया से जुड़े हैं जो वास्तव में अजीब भाषाओं के लिए सहायक है, हर किसी के लिए एक कंपाइलर नहीं है (लोग आमतौर पर "इसे यहां चलाते हैं" जैसी चीजें करते हैं)।
hmatt1 16

Befunge वास्तव में एक कठिन भाषा है, और आपको अपने दिमाग में कोड का आकार खुद ही रखना होता है। आपका कोड बहुत अच्छा लग रहा है और काम करता है। लेकिन क्या यह आकार को कम कर देगा यदि आप re a time कहीं बचाते हैं ?
इस्माइल मिगुएल

मैं किसी भी फ़ंज -98-विशिष्ट निर्देशों या व्यवहारों का उपयोग नहीं कर रहा हूँ, जिन्हें मैं जानता हूँ, लेकिन जब से मैंने यह उत्तर लिखा है, मैंने यह जान लिया कि बेफ़ुंगियस दुभाषिया के कुछ व्यवहार मानक नहीं हैं - अर्थात् #छोड़ने के लिए एक पंक्ति के एक छोर का उपयोग करना उदाहरण के लिए, दूसरे छोर पर चरित्र ( CCBI में , #बस इसके बीच में अनंत स्थान को छोड़ता है और दूसरे छोर पर वर्ण), जो इस कार्यक्रम को तोड़ता है। मैंने वापस आने और इसे ध्यान में रखते हुए इसे प्रस्तुत करने की जहमत नहीं उठाई।
कासरन

वहाँ कुछ 1अंक हैं, जो अनुमति नहीं है
जो राजा

4

पायथ 135 136 140

*ltG%"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"*hhZ("teen-hundreds were a time for "".\nThe 

ट्रेलिंग स्थान पर ध्यान दें।

स्ट्रिंग का निर्माण करने के लिए पायथन उत्तर में @Geobits और उनके टिप्पणीकार दोस्तों के रूप में बहुत अधिक चाल का उपयोग करता है । अब इस उत्तर का भी कुछ उपयोग करता है ।

यह बिल्ट-इन वैरिएबल का उपयोग करता है G, जिसमें abcdefghijklmnopqrstuvwxyz25 आउटपुट उत्पन्न करने के लिए इसकी लंबाई कम होती है।


1
यह 135 के बजाय 136 बाइट्स लगता है
ऑप्टिमाइज़र

1
@Optimizer क्षमा करें, मुझे अपने स्वयं के नोट्स पढ़ने चाहिए: जब मैंने इसे स्वयं वहां चिपकाया था, तो मैं अनुगामी स्थान को भूल गया: S
FryAmTheEggman

4

रूबी - 152 141

puts"The eight#{e="een-hundreds were a time for "}rum.
The ninet#{e}fun.
The two-thousands are a time to run
a civilized classroom.
"*(?X-??)

http://repl.it/2Om/6


1
1.8 के चरित्र शाब्दिक का चतुर उपयोग! आप String#*इसके बजाय 25 बार लाइनों को दोहराने के लिए उपयोग करने में सक्षम हो सकते हैं Integer#times
23:14 पर ब्रिटिश

@britishtea - ने इलाज का काम किया :)
मिकी

1
आप पहले लाइनों को असाइन नहीं करके कुछ और बाइट्स को शेव कर सकते हैं। पुट और एक स्ट्रिंग शाब्दिक के बीच का स्थान वैकल्पिक है ( puts"hi"कानूनी है)।
ब्रिटिश

प्रक्षेप के अंदर असाइन करना एक अच्छा स्पर्श है।
वेन कॉनराड

3

अजगर, 165 बाइट्स

h="hundreds were a time for "
t="The "
for i in h:print t+"eighteen-"+h+"rum.\n"+t+"nineteen-"+h+"fun.\n"+t+"two-thousands are a time to run\na civilized classroom."

यह वास्तव में अच्छी तरह से काम करता है कि एच की लंबाई 25 है, यह जानबूझकर नहीं था। =)


3

अजगर 2 - 143

एक मूर्खतापूर्ण जवाब:

from this import i
a="teen-hundreds were a time for ",".\nThe "
print"The eigh%srum%snine%sfun%stwo-thousands are a time to run\na civilized classroom.\n"%(a+a)*i

ध्यान दें कि पूर्ण गणना 162 है। मैंने सभी को छोड़ दिया from this import i

मेरी pyth रणनीति के समान प्रतिस्थापन का उपयोग करता है, लेकिन मैं इस से आयात करने की उल्लसितता की खोज के बाद इसे पोस्ट करने का विरोध नहीं कर सका :)


+1 के उपयोग के लिए from this import i! आपको उसके बारे में कैसे पता चला?
बीटा डेके

1
@ BetaDecay मैं वास्तव में ऊब गया था और अजगर के ज़ेन को पढ़ने का फैसला किया, इसलिए मैं अपने दुभाषिया के पास गया और लिखा import this। फिर मैंने सोचा: " thisमॉड्यूल में और क्या हो सकता है ?" तो मैंने फोन किया dir(this)। लो और निहारना, एक शब्दकोष के साथ, एक गढ़ा हुआ तार, और एक "!"चर, एक संख्यात्मक स्थिर था ... 25 के बराबर।
FryAmTheEggman

3

PHP (175 157156 बाइट्स; यूनिक्स EOF के साथ 152):

सबसे गोल्फ समाधान नहीं है, लेकिन निश्चित रूप से काम करता है और कुछ प्रयासों से छोटा है।

यहाँ कोड है:

$a=a;$f='re a time';$r="teen-hundreds we$f for";while($a++<z)echo"The eigh$r rum.
The nine$r fun.
The two-thousands a$f to run
a civilized classroom.
";

पुराना संस्करण:

$a=a;while($a++!=z)echo"The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
";

यह काम करता है क्योंकि php वर्णों को चक्रित करता है, और हम जांचते हैं कि क्या यह नहीं है zऔर बंद हो गया है।

(एक जिज्ञासा यह है कि जब php पहुंचता है z, तब यह जाता है aa)


3
यहाँ सामान्य सम्मेलन केवल एक बाइट के रूप में नई संख्याओं की गणना करना है, जब तक कि शायद आपकी भाषा इतनी ज़िद्दी न हो कि यह केवल CRLF को स्वीकार कर ले, जो कि PHP के लिए मामला नहीं है।
nyuszika7h

3

पायथन 2 - 155

नोट: चूंकि नियंत्रण वर्ण एसई पर दिखाई नहीं देते हैं, इसलिए मैंने इसे बदल दिया है\x19

a,b='\nThe ','teen-hundreds were a time for '
print(a+'eigh'+b+'rum.'+a+'nine'+b+'fun.'+a+'two-thousands are a time to run\na civilized classroom.')*ord('\x19')

आधार 64 संस्करण:

YSxiPScKVGhlICcsJ3RlZW4taHVuZHJlZHMgd2VyZSBhIHRpbWUgZm9yICcKcHJpbnQoYSsnZWln
aCcrYisncnVtLicrYSsnbmluZScrYisnZnVuLicrYSsndHdvLXRob3VzYW5kcyBhcmUgYSB0aW1l
IHRvIHJ1bgphIGNpdmlsaXplZCBjbGFzc3Jvb20uJykqb3JkKCcZJyk=

आयात के बारे में, मुझे लगता है कि आप from string import *इसे थोड़ा बचा सकते हैं या हालांकि इसे पायथन में कहा जाता है
FireFly

1
आप "किशोर" को बी में स्थानांतरित कर सकते हैं।
FryAmTheEggman

2
आप []कोष्ठक को पहली पंक्ति में हटा सकते हैं , जो स्पष्ट रूप से एक टुपल बनाता है और फिर इसे अनपैक करता है।
दरवाज़े

तुम भीord('d')//len('aaaa') to before the string so you don't have to bracket it.
FryAmTheEggman

1
@ डेनिस ओपी का नवीनतम संपादन अग्रणी नई सुर्खियों की अनुमति देता है।
बीटा डेके

3

लाइवस्क्रिप्ट - 181

p=(a,b)->"The #{a}teen-hundreds were a time for #b.\n"
each console.log,map (->(p \eigh \rum)+(p \nine \fun)+'The two-thousands are a time to run\na civilized classroom.'),[\A to\Y]

आवश्यक आयात:

{each, map} = require 'prelude-ls'

यदि आप इसे Node.js के तहत चलाना चाहते हैं, तो npm से LiveScript( नहीं livescript ) और prelude-lsसंकुल को स्थापित करें , alertसाथ बदलें console.logऔर चलाएँ lsc prog.ls, जहाँ prog.lsप्रोग्राम शामिल है।


13
नियम देखें: "आप पात्रों का उपयोग नहीं कर सकते हैं 0123456789"
पॉल आर

2
अच्छी पकड़, तय।
nyuszika7h

2

टी-एसक्यूएल: 206

वाक्यांश का चयन करते हुए 25 पंक्तियों को उत्पन्न करने के लिए पांच पंक्तियों में एक क्रॉस का उपयोग करता है। आउटपुट के लिए लाइन ब्रेक महत्वपूर्ण हैं।

with c as(SELECT\ N FROM(VALUES(\),($),($),($),($))A(B))SELECT REPLACE('The eigh$rum.
The nine$fun.
The two-thousands are a time to run
a civilized classroom.','$','teen-hundreds were a time for ')FROM c a,c b


2

सी, 196 वर्ण

यह अच्छे राजभाषा के लिए एक आसान काम नहीं है। सी "फैक्टरिंग द% स्टीन-सैकंड ..." पैटर्न मुझे पूरे दो पात्रों को बचाता है ।

स्पष्टता के लिए व्हाट्सएप, शामिल नहीं हैं।

#include <stdio.h>
main(){
  for (char*p="The %steen-hundreds were a time for %s.\n",
           *s="The two-thousands are a time to run\na civilized classroom.",
           *q=p;
       *q++ - 'a';
       puts(s))
   printf(p,"eigh","rum"), printf(p,"nine","fun");
}

2

रूबी, 145

?K.upto(?c){puts"The eigh#{x="teen-hundreds we#{t="re a time "}for "}rum.
The nine#{x}fun.
The two-thousands a#{t}to run
a civilized classroom."}

व्याख्या

  • String#upto25 बार लाइनों को प्रिंट करने के लिए उपयोग करें । सीमा "K".."c"25 वर्ण है।
  • लाइनों को छोटा करने के लिए मूल स्ट्रिंग प्रक्षेप का उपयोग करें।

2
#{a="The "}वास्तव में आप और अधिक पात्रों की लागत है! #{a}के रूप में एक ही लंबाई हैThe
मिकी

2

रैकेट 173

(let([x"teen-hundreds were a time for "])(for([z(+ #xa #xf)])(displayln(~a"The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a time to run\na civilized classroom."))))

Ungolfed:

(let ([x "teen-hundreds were a time for "])
  (for([z(+ #xa #xf)])
    (displayln (~a "The eigh"x"rum.\nThe nine"x"fun.\nThe two-thousands are a
     time to run\na civilized classroom."))))

2

सी, 215 203 199 बाइट्स

main(a){a<<='\xC'+'\xD';while(a>>=!!a)printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");}

Ungolfed

main(a)
{
  a<<='\xC'+'\xD';
  while(a>>=!!a)
    printf("The eighteen-hundreds were a time for rum.\nThe nineteen-hundreds were a time for fun.\nThe two-thousands are a time to run\na civilized classroom.\n");
}

मैंने बिना किसी संख्या के पुनरावृति में बिट शिफ्टिंग का उपयोग किया।

a<<='\xC'+'\xD' 0b1 [25 शून्य] पर सेट करता है

a>>=!!a हर बार जब हम लूप को पुनरावृत्त करते हैं, तो एक बार थोड़ा सा बदलाव होता है

संपादित करें: a बराबर argc, इसलिए इसका मान पहले से ही 1 है जब प्रोग्राम बिना किसी तर्क के चलाया जाता है। बदल गया a>>='\xB'-'\xA'है a>>=!!'\xA'जो 4 बाइट्स छोटा है। इसके अलावा पाठ केवल 24 बार प्रदर्शित किया गया था। ठीक कर दिया। में अतिरिक्त कोष्ठक निकाले while

2 संपादित करें: में बदल दिया !!'\xA'गया !!a। काम करने लगता है और 4 बाइट्स बचाता है


1
आप putsअधिक बाइट बचाने के लिए उपयोग कर सकते हैं ।
स्पिकैट्रिक्स

2

रैंट, 191 बाइट्स

सबसे छोटा समाधान नहीं है, लेकिन फिर भी ठंडा है। मैंने पहली तीन पंक्तियों को लिखने के लिए एक सबरूटीन लिखा था, और इसे डिज़ाइन किया था ताकि इसे एक खाली तर्क के साथ बुलाकर एक स्ट्रिंग को 25 वर्ण लंबा लौटाया जा सके। मैं इसके बाद पुनरावर्तक को इसकी लंबाई देता हूं।

[pin:][$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ][r:[len:[$_:]]]{[step:][$_:eigh]for rum.\N[$_:nine]for fun.\N[step:][$_:two-]to run\Na civilized classroom.\N}

Ungolfed:

[pin:]
[$[_:a]:The [arg:a][sync:;ordered]{thousands a|teen-hundreds we}re a time ]
[r:[len:[$_:]]]
{
    [step:]
    [$_:eigh]for rum.\N
    [$_:nine]for fun.\N
    [step:]
    [$_:two-]to run\N
    a civilized classroom.\N
}

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.