ASCII कला में एक ढाल बनाना


41

कार्य विवरण:

ASCII कला में एक रेडियल ढाल आकर्षित करने के लिए जितना संभव हो एक कार्यक्रम लिखें। आउटपुट ग्रिड का आकार पूर्वनिर्धारित है। कार्यक्रम के लिए इनपुट के रूप में केंद्र बिंदु और ग्रेडिएंट के लिए उपयोग किए जाने वाले वर्ण प्रदान किए जाते हैं।

निम्न विशेषताओं के साथ ढाल 70 × 25 वर्ण कोशिका होगी

  • ग्रिड के ऊपरी-बाएँ कोने में निर्देशांक (0, 0) है।
  • ढाल, प्रदान किए गए वर्णों से मिलकर, 35 लंबाई इकाइयों में मैप किया जाता है । एक लंबाई इकाई एक वर्ण लंबी और दो वर्ण चौड़ी होती है (चूँकि monospaced fontsआमतौर पर वर्ण दो गुना अधिक होते हैं)।
  • उन 35 LU के भीतर केंद्र बिंदु से वर्तमान दूरी ग्रेडिएंट वर्णों की संख्या से गुणा की जाती है / 35 उस बिंदु पर आकर्षित करने के लिए वर्ण का सूचकांक प्राप्त करने के लिए। सूचकांक के लिए आंशिक संख्याएँ यहाँ शून्य की ओर गोल होती हैं। लंबाई इकाइयों को वास्तविक संख्या के रूप में छोड़ा जाना है। (बेशक, यदि परिणाम समान हैं, तो कार्यान्वयन कोई मायने नहीं रखता है।)
  • उन 35 एलयू से परे केवल अंतिम ढाल चरित्र दिखाई देता है। हालांकि, अंतिम ग्रेडिएंट »बैंड« पहले से ही 35 एलयू के भीतर शुरू होता है , अंतिम चरित्र पहले से ही 35 एलयू से कम दिखाई देने लगता है।

इनपुट:

इनपुट मानक इनपुट पर दिया गया है और इसमें तीन लाइनें शामिल हैं, प्रत्येक को एक लाइन ब्रेक द्वारा समाप्त किया गया है:

  • एक्स ढाल केंद्र बिंदु के समन्वय
  • Y ढाल केंद्र बिंदु के समन्वय
  • ग्रेडिएंट ड्राइंग के लिए पात्रों का उपयोग करें। उन स्थानों में शामिल हो सकते हैं।

आउटपुट:

आउटपुट ग्रेडिएंट है जैसा कि मानक आउटपुट पर ऊपर के नियमों द्वारा परिभाषित किया गया है। मानक त्रुटि स्ट्रीम को अनदेखा किया जाता है। ग्रेडिएंट की प्रत्येक पंक्ति को लाइन ब्रेक द्वारा समाप्त किया जाता है। इनपुट द्वारा परिभाषित लोगों के अलावा कोई अन्य वर्ण नहीं हो सकता है।

नमूना इनपुट 1:

58
14
 .:;+=xX$&

नमूना आउटपुट 1:

&&$$$$$$$$XXXXXXXXxxxxxxxxx===========++++++++++++++++++++++++++++++++
&$$$$$$$$XXXXXXXXxxxxxxxxx=========+++++++++++++;;;;;;;;;;;;;;;;;;;;;+
$$$$$$$$XXXXXXXXxxxxxxxx=========+++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;
$$$$$$$XXXXXXXXxxxxxxxx========++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$$$$$$XXXXXXXXxxxxxxxx========+++++++++;;;;;;;;;;;;;:::::::::::::;;;;;
$$$$$XXXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;;;:::::::::::::::::::::;
$$$$$XXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;:::::::::::::::::::::::::
$$$$XXXXXXXXxxxxxxx=======++++++++;;;;;;;;;:::::::::::::::::::::::::::
$$$$XXXXXXXxxxxxxx========+++++++;;;;;;;;::::::::::...............::::
$$$XXXXXXXXxxxxxxx=======+++++++;;;;;;;;:::::::::...................::
$$$XXXXXXXxxxxxxx=======++++++++;;;;;;;::::::::.......................
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;::::::::.........       ........
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........           ......
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::.......             .....
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::.......             .....
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::.......             .....
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;:::::::........           ......
$$$XXXXXXXxxxxxxx=======+++++++;;;;;;;::::::::.........       ........
$$$XXXXXXXxxxxxxx=======++++++++;;;;;;;::::::::.......................
$$$XXXXXXXXxxxxxxx=======+++++++;;;;;;;;:::::::::...................::
$$$$XXXXXXXxxxxxxx========+++++++;;;;;;;;::::::::::...............::::
$$$$XXXXXXXXxxxxxxx=======++++++++;;;;;;;;;:::::::::::::::::::::::::::
$$$$$XXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;:::::::::::::::::::::::::
$$$$$XXXXXXXXxxxxxxxx=======+++++++++;;;;;;;;;;;:::::::::::::::::::::;
$$$$$$XXXXXXXXxxxxxxxx========+++++++++;;;;;;;;;;;;;:::::::::::::;;;;;

नमूना इनपुट 2:

0
0
X.X.X.X

नमूना उत्पादन 2:

XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXX............XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXX.............XXXXXXXXXX...........XXXXXXXXXX..........XXXXXXXXXX
..................XXXXXXXXXXX..........XXXXXXXXXX...........XXXXXXXXXX
................XXXXXXXXXXXX...........XXXXXXXXXX..........XXXXXXXXXXX
...............XXXXXXXXXXXX...........XXXXXXXXXX...........XXXXXXXXXXX
............XXXXXXXXXXXXXX...........XXXXXXXXXXX..........XXXXXXXXXXXX
.........XXXXXXXXXXXXXXX............XXXXXXXXXXX...........XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX............XXXXXXXXXXX...........XXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX.............XXXXXXXXXXX...........XXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXX...........XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX................XXXXXXXXXXXX............XXXXXXXXXXXXXXX
XXXXXXXXXXX..................XXXXXXXXXXXXX............XXXXXXXXXXXXXXXX
...........................XXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXX
........................XXXXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXXX
......................XXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXX
..................XXXXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXXXX
.............XXXXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX.................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXX......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

नमूना इनपुट 3:

70
25
.:+#

नमूना आउटपुट 3:

######################################################++++++++++++++++
#################################################+++++++++++++++++++++
#############################################+++++++++++++++++++++++++
##########################################++++++++++++++++++++++++++++
#######################################+++++++++++++++++++++++++++++++
####################################++++++++++++++++++++++++++++++++++
##################################++++++++++++++++++++++++++++++++++++
################################++++++++++++++++++++++++++++++++++++++
##############################++++++++++++++++++++++++++++++++::::::::
#############################+++++++++++++++++++++++++++::::::::::::::
###########################+++++++++++++++++++++++++::::::::::::::::::
##########################++++++++++++++++++++++++::::::::::::::::::::
#########################++++++++++++++++++++++:::::::::::::::::::::::
########################+++++++++++++++++++++:::::::::::::::::::::::::
#######################++++++++++++++++++++:::::::::::::::::::::::::::
######################++++++++++++++++++++::::::::::::::::::::::::::::
#####################+++++++++++++++++++::::::::::::::::::::::::::::::
####################+++++++++++++++++++::::::::::::::::::::::::.......
####################++++++++++++++++++::::::::::::::::::::::..........
###################+++++++++++++++++++::::::::::::::::::::............
###################++++++++++++++++++:::::::::::::::::::..............
###################+++++++++++++++++:::::::::::::::::::...............
##################++++++++++++++++++::::::::::::::::::................
##################++++++++++++++++++:::::::::::::::::.................
##################++++++++++++++++++:::::::::::::::::.................

नमूना इनपुट 4

59
1
 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789<>|,.-#+!$%&/()=?*'_:;

नमूना उत्पादन 4

!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCBzyxwutsrqonmlkjhgfedcbbbcdefghjkl
!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCAzyxwutsrqonmljihgfdcba abcdfghijl
!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCBzyxwutsrqonmlkjhgfedcbbbcdefghjkl
!+#-,|><97654310ZYXVUTSQPONMKJIHGEDCBAyxwvutrqponmkjihgffeedeeffghijkm
$+#-.|><98654320ZYXWUTSRQONMLKIHGFEDBAzyxwutsrqponmlkjihhggggghhijklmn
$!#-.,|<987643210YXWVUSRQPONLKJIHGEDCBAzywvutsrqponmllkjjjiiijjjkllmno
$!+#.,|><87654210ZYXVUTSRQONMLKJHGFEDCBAzywvutsrrqponnmmlllllllmmnnopq
%!+#-.|><987543210YXWVUTRQPONMLJIHGFEDCBAzyxwvutsrrqppooonnnnnoooppqrr
%$!+-.,|><87654310ZYXWVTSRQPONMLJIHGFEDCBAzyxxwvuttssrrqqqqqqqqqrrsstt
&%!+#-.,><987643210ZYXVUTSRQPONMLKJIHGFEDCBAzyyxwvvuutttssssssstttuuvv
&%$!+#.,|><986543210ZYWVUTSRQPONMLKJIHGFEDDCBAzzyyxwwwvvvuuuuuvvvwwwxy
/&%$!#-.,|><976543210ZYXVUTSRQPONMLKKJIHGFEEDCBBAAzzyyyxxxxxxxxxyyyzzA
(/&%!+#-.,|><876543210ZYXWVUTSRQPONMLKJJIHGGFEEDCCBBBAAAzzzzzzzAAABBBC
)(/%$!+#-.,|><876543210ZYXWVUTSRQPPONMLKKJIIHGGFFEEDDDCCCCCCCCCCCDDDEE
=)(&%$!+#-.,|><986543210ZYYXWVUTSRQPPONMMLKKJIIHHGGGFFFEEEEEEEEEFFFGGG
?=)(&%$!+#-.,|><9876543210ZYXWVVUTSRRQPOONMMLLKJJJIIIHHHHHHHHHHHHHIIIJ
*?=)(/%$!+#-.,|><98765432210ZYXWWVUTSSRQQPOONNMMLLLKKKJJJJJJJJJJJKKKLL
'*?=)(/&%$!+#-.,|><98765432110ZYXXWVUUTSSRRQPPOOONNNMMMMMLLLLLMMMMMNNN
_'*?=)(/&%$!+#-.,|><988765432210ZYYXWWVUUTTSSRRQQQPPPOOOOOOOOOOOOOPPPQ
:_'*?=)(/&%$!+##-.,|><9877654332100ZYYXXWVVUUTTTSSSRRRRQQQQQQQQQRRRRSS
;;:_'*?=)(/&%$!+#-.,,|><98876554322100ZZYYXXWWVVVUUUTTTTTTTTTTTTTTTUUU
;;;:_'*?=)(/&&%$!+#-.,,|><9987665443321100ZZYYYXXXWWWWVVVVVVVVVVVWWWWX
;;;;;:_'*?=)(/&%$$!+#-..,|>><9887665544322211000ZZZYYYYYYYYYYYYYYYYYZZ
;;;;;;:_'*??=)(/&%%$!+##-.,,|><<99877665544333222111100000000000001111
;;;;;;;;:_'*?==)(/&&%$!++#--.,,|>><<9887766655544433333322222223333334

एक हफ्ता बीत गया। यह हमारे विश्वविद्यालय की प्रतियोगिता से समाधान लंबाई का अनावरण करने का समय है:

167 - पायथन
189 - हास्केल
203 - सी
210 - वीबी.नेट
219 - सी

और हमारे अपने समाधान:

  91 - GolfScript
125 - रूबी
157 - PowerShell


9
मैं सोच रहा था कि यह आस्की-कला के सवालों के लिए भी एक टैग होगा
gnibbler

मुझे LU की अवधारणा से या तो परेशानी हो रही है या आप नमूना आउटपुट गलत हैं। प्रत्येक बैंड में जो मुझे समझ में आया है उससे वर्णों की एक समान संख्या होनी चाहिए, फिर भी आपके नमूनों में यह सच नहीं है। क्या आप मुझे यह समझने में मदद कर सकते हैं?
जुआन

@ जुआन: वास्तव में आपका क्या मतलब है? मैं समझाने पर चूसता हूं और पिछले साल ऐसा किया था, ईमानदार होने के लिए। अंतिम बैंड शेष छवि तक फैला हुआ है। अन्यथा, दूसरा उदाहरण इसे सबसे स्पष्ट बनाता है, मुझे लगता है। चूंकि 35 LU 70 वर्णों के चौड़े होते हैं, प्रत्येक बैंड (जिनमें से 7 होते हैं) शीर्ष पंक्ति में 10 वर्णों के चौड़े होते हैं। बाएं किनारे के साथ प्रत्येक बैंड 5 वर्ण लंबा है (लेकिन केवल पहले 5 बैंड ग्रिड की ऊंचाई में फिट होते हैं)।
जॉय

@ जॉय मेरा मतलब क्या है, एक दी गई पंक्ति में, एक बैंड की चौड़ाई और भी होनी चाहिए, क्योंकि एक बैंड n LU (प्रत्येक 2 वर्ण चौड़ा) द्वारा रचित होगा। इस प्रकार हमारे पास 2 * n अक्षर प्रति बैंड प्रति पंक्ति है। क्या यह सही है?
जुआन

@ जुआन: एचएम, गोलाई को चरित्र सूचकांक पर लागू किया जाना चाहिए, न कि लंबाई इकाइयों पर। मैं कम अस्पष्ट है कि एक तरह से rephrasing की कोशिश करता हूँ। एक और बिंदु: पूरे ग्रिड को एक चरित्र ग्रिड के रूप में लिया जाना है, न कि SLU (वर्ग लंबाई इकाई :-)) ग्रिड। LU चीज केवल क्षैतिज और ऊर्ध्वाधर दूरियों के बीच अंतर स्पष्ट करने में मदद करने के लिए है। बहुत अच्छी तरह से काम करने के लिए प्रतीत नहीं होता है। मूल रूप से मेरे पास वहां एक स्पष्ट सूत्र था, इसे हटा दिया गया था क्योंकि यह बहुत आसान माना जाता था।
जॉय

जवाबों:


11

रूबी 1.9, ११६ ११४ १० 116 101 अक्षर

x,y,z=*$<;25.times{|r|70.times{|c|$><<z[[(c-x.to_i+2.i*(r-y.to_i)).abs/70.0*k=z=~/$/,k-1].min]};puts}

27

ब्रेनफक - 1286

यह मेरी पसंदीदा रचनाओं में से एक है। एक कार्य करना (काम करने की कुछ परिभाषाओं के लिए) वर्गमूल कार्य शामिल हैं।

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

गोलाई त्रुटियों के कारण आउटपुट थोड़ा बंद है, लेकिन अभी भी पहचानने योग्य है। फ्लोटिंग पॉइंट मेरे वर्तमान कौशल स्तर से परे है। दुर्भाग्य से यह केवल 16 बिट कोशिकाओं के साथ काम करेगा, जिसका अर्थ है कि यह कुत्ता धीमा होने वाला है।

आउटपुट 1:

&$$$$$$$$XXXXXXXXxxxxxxxxxx========++++++++++++++++++++++;;;++++++++++
$$$$$$$$$XXXXXXxxxxxxxxxx========++++++++++++++;;;;;;;;;;;;;;;;;;;;;;;
$$$$$$$XXXXXXXXxxxxxxxx========++++++++++++;;;;;;;;;;;;;;;;;;;;;;;;;;;
$$$$$$$XXXXXXxxxxxxxxxx======++++++++++++;;;;;;;;;;;;;;;;:::;;;;;;;;;;
$$$$$XXXXXXXXxxxxxxxx========++++++++++;;;;;;;;;;:::::::::::::::::::;;
$$$$$XXXXXXxxxxxxxxxx======++++++++++;;;;;;;;:::::::::::::::::::::::::
$$$$$XXXXXXxxxxxxxx======++++++++++;;;;;;;;:::::::::::::::::::::::::::
$$$XXXXXXxxxxxxxxxx======++++++++;;;;;;;;::::::::::::::::...::::::::::
$$$XXXXXXxxxxxxxx========++++++++;;;;;;::::::::::::...............::::
$$$XXXXXXxxxxxxxx======++++++++;;;;;;;;::::::::::...................::
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::::..........   ..........
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::........           ......
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::......               ....
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::......               ....
$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::......                   ..
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::......               ....
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::......               ....
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::........           ......
$$$XXXXXXxxxxxxxx======++++++++;;;;;;::::::::::..........   ..........
$$$XXXXXXxxxxxxxx======++++++++;;;;;;;;::::::::::...................::
$$$XXXXXXxxxxxxxx========++++++++;;;;;;::::::::::::...............::::
$$$XXXXXXxxxxxxxxxx======++++++++;;;;;;;;::::::::::::::::...::::::::::
$$$$$XXXXXXxxxxxxxx======++++++++++;;;;;;;;:::::::::::::::::::::::::::
$$$$$XXXXXXxxxxxxxxxx======++++++++++;;;;;;;;:::::::::::::::::::::::::
$$$$$XXXXXXXXxxxxxxxx========++++++++++;;;;;;;;;;:::::::::::::::::::;;

आउटपुट 2:

XXXXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXX
XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XXXXXXXX............XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
XX................XXXXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
..................XXXXXXXXXX............XXXXXXXXXX..........XXXXXXXXXX
................XXXXXXXXXXXX..........XXXXXXXXXXXX..........XXXXXXXXXX
..............XXXXXXXXXXXX............XXXXXXXXXX..........XXXXXXXXXXXX
..........XXXXXXXXXXXXXXXX..........XXXXXXXXXXXX..........XXXXXXXXXXXX
..XXXXXXXXXXXXXXXXXXXXXX............XXXXXXXXXX............XXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXX............XXXXXXXXXXXX..........XXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX..............XXXXXXXXXX............XXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX................XXXXXXXXXXXX............XXXXXXXXXXXXXX
XXXXXXXXXXXX..................XXXXXXXXXXXX............XXXXXXXXXXXXXXXX
XX..........................XXXXXXXXXXXXXX..........XXXXXXXXXXXXXXXXXX
..........................XXXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXX
......................XXXXXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXXXX
..................XXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXXXXXXXXXX
..............XXXXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXXXXXXXXXXXX
..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX................XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX..................XXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX....................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXX......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

3
मैं इस भयानक और भयानक पर विचार करने के बीच फटा हुआ हूं: डी। मुझे लगता है कि एक सटीक वर्गमूल केवल एक लुकअप टेबल के साथ, या बहुत अधिक कोड के साथ किया जा सकता है
जॉय

लुकअप मदद नहीं करेगा। मैं ठीक ठीक वर्गमूल के नीचे पूर्णांक की गणना कर सकता हूं। फ़्लोटिंग पॉइंट को संभालने के लिए आपको एक नए डेटा प्रतिनिधित्व की आवश्यकता होती है, और मैं अभी उस कूद को तैयार नहीं हूं।
१३:५३ पर captncraig

12

अजगर - 141 वर्ण

x=input();y=input();z=raw_input();w=len(z)
for i in range(-y,25-y):print"".join(z[min(w-1,int((i*i*4+j*j)**.5*w/70))]for j in range(-x,70-x))

8

डेल्फी, 200 (और 185)

चूँकि मुझे इस कोड के गोल्फ के डेल्फी संस्करण के रूप में अस्सी-कला पसंद है:

uses Math;var G:string;X,Y,l,i,j:Int16;begin ReadLn(X,Y);ReadLn(G);l:=Length(G);for j:=-y to 24-y do for i:=-x to 70-x do if i=70-x then WriteLn else Write(g[Min(l,1+Trunc(l*sqrt(i*i/4+j*j)/35))])end.

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

वैसे भी, नमूना 4 का आउटपुट मुझे देता है:

!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCBzyxwutsrqonmlkjhgfedcbbbcdefghjkl
!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCAzyxwutsrqonmljihgfdcba abcdfghijl
!+#-,|><87654210ZYWVUTRQPONLKJIHFEDCBzyxwutsrqonmlkjhgfedcbbbcdefghjkl
!+#-,|><97654310ZYXVUTSQPONMKJIHGEDCBAyxwvutrqponmkjihgffeedeeffghijkm
$+#-.|><98654320ZYXWUTSRQONMLKIHGFEDBAzyxwutsrqponmlkjihhggggghhijklmn
$!#-.,|<987643210YXWVUSRQPONLKJIHGEDCBAzywvutsrqponmllkjjjiiijjjkllmno
$!+#.,|><87654210ZYXVUTSRQONMLKJHGFEDCBAzywvutsrrqponnmmlllllllmmnnopq
%!+#-.|><987543210YXWVUTRQPONMLJIHGFEDCBAzyxwvutsrrqppooonnnnnoooppqrr
%$!+-.,|><87654310ZYXWVTSRQPONMLJIHGFEDCBAzyxxwvuttssrrqqqqqqqqqrrsstt
&%!+#-.,><987643210ZYXVUTSRQPONMLKJIHGFEDCBAzyyxwvvuutttssssssstttuuvv
&%$!+#.,|><986543210ZYWVUTSRQPONMLKJIHGFEDDCBAzzyyxwwwvvvuuuuuvvvwwwxy
/&%$!#-.,|><976543210ZYXVUTSRQPONMLKKJIHGFEEDCBBAAzzyyyxxxxxxxxxyyyzzA
(/&%!+#-.,|><876543210ZYXWVUTSRQPONMLKJJIHGGFEEDCCBBBAAAzzzzzzzAAABBBC
)(/%$!+#-.,|><876543210ZYXWVUTSRQPPONMLKKJIIHGGFFEEDDDCCCCCCCCCCCDDDEE
=)(&%$!+#-.,|><986543210ZYYXWVUTSRQPPONMMLKKJIIHHGGGFFFEEEEEEEEEFFFGGG
?=)(&%$!+#-.,|><9876543210ZYXWVVUTSRRQPOONMMLLKJJJIIIHHHHHHHHHHHHHIIIJ
*?=)(/%$!+#-.,|><98765432210ZYXWWVUTSSRQQPOONNMMLLLKKKJJJJJJJJJJJKKKLL
'*?=)(/&%$!+#-.,|><98765432110ZYXXWVUUTSSRRQPPOOONNNMMMMMLLLLLMMMMMNNN
_'*?=)(/&%$!+#-.,|><988765432210ZYYXWWVUUTTSSRRQQQPPPOOOOOOOOOOOOOPPPQ
:_'*?=)(/&%$!+##-.,|><9877654332100ZYYXXWVVUUTTTSSSRRRRQQQQQQQQQRRRRSS
;;:_'*?=)(/&%$!+#-.,,|><98876554322100ZZYYXXWWVVVUUUTTTTTTTTTTTTTTTUUU
;;;:_'*?=)(/&&%$!+#-.,,|><9987665443321100ZZYYYXXXWWWWVVVVVVVVVVVWWWWX
;;;;;:_'*?=)(/&%$$!+#-..,|>><9887665544322211000ZZZYYYYYYYYYYYYYYYYYZZ
;;;;;;:_'*??=)(/&%%$!+##-.,,|><<99877665544333222111100000000000001111
;;;;;;;;:_'*?==)(/&&%$!++#--.,,|>><<9887766655544433333322222223333334

यदि आप इंडेंटेड आउटपुट को स्वीकार करेंगे, तो यह संस्करण नई लाइन को इंडेंट में बदलकर थोड़ा छोटा हो जाता है, जो 80-कैरेक्टर रैप (मानक 80x25 कंसोल पर एक नईलाइन का अनुकरण) की ओर जाता है:

uses Math;var G:string;X,Y,l,i,j:Int16;begin ReadLn(X,Y);ReadLn(G);l:=Length(G);for j:=-y to 24-y do for i:=-x to 70-x do Write(g[Min(l,1+Trunc(l*sqrt(i*i/4+j*j)/35))]:11*Ord(i=-x))end.

(यह कुल 185 वर्णों के लिए 15 वर्ण बचाता है)। यह "0 0 XXXX" के लिए आउटपुट है:

          XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
          XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
          XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
          XXXXXXXX............XXXXXXXXXX..........XXXXXXXXXX..........XXXXXXXXXX
          XXXXXX.............XXXXXXXXXX...........XXXXXXXXXX..........XXXXXXXXXX
          ..................XXXXXXXXXXX..........XXXXXXXXXX...........XXXXXXXXXX
          ................XXXXXXXXXXXX...........XXXXXXXXXX..........XXXXXXXXXXX
          ...............XXXXXXXXXXXX...........XXXXXXXXXX...........XXXXXXXXXXX
          ............XXXXXXXXXXXXXX...........XXXXXXXXXXX..........XXXXXXXXXXXX
          .........XXXXXXXXXXXXXXX............XXXXXXXXXXX...........XXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXXXXX............XXXXXXXXXXX...........XXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXXX.............XXXXXXXXXXX...........XXXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXX...........XXXXXXXXXXXXXXX
          XXXXXXXXXXXXXXX................XXXXXXXXXXXX............XXXXXXXXXXXXXXX
          XXXXXXXXXXX..................XXXXXXXXXXXXX............XXXXXXXXXXXXXXXX
          ...........................XXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXX
          ........................XXXXXXXXXXXXXXX............XXXXXXXXXXXXXXXXXXX
          ......................XXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXX
          ..................XXXXXXXXXXXXXXXXX.............XXXXXXXXXXXXXXXXXXXXXX
          .............XXXXXXXXXXXXXXXXXXXX..............XXXXXXXXXXXXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXXXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXXXXXX.................XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          XXXXXXXXXXXXXXXXXXXX...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
          XXXXXXXXXXXXXX......................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

(आप इंडेंट देख सकते हैं? ;-))


7

एपीएल (74)

{L←⍴⊃C Y X⎕IO←⍞⎕⎕0⋄⎕←{C[⊃⌊L⌊35÷⍨L×.5*⍨+/2*⍨1 2÷⍨⍵-Y X]}¨⍳⍵}25 70

किसी फ़ंक्शन में लिपटे होने का कारण यह है कि संशोधन ⎕IOशेष सिस्टम पर लागू नहीं होता है।

स्पष्टीकरण:

  • L←⍴⊃C Y X⎕IO←⍞⎕⎕0: सेट ⎕IOकरने के लिए 0(सरणियों 0-आधारित बनाने की बजाय 1 पर आधारित), करने के लिए सेट एक्स (पहली पंक्ति पढ़ने), करने के लिए सेट Y (दूसरी पंक्ति पढ़ने), करने के लिए सेट सी (कोई स्वरूपण के साथ तीसरी लाइन पढ़ते हैं,), और सेट एल की लंबाई ( ) के लिए C
  • 25 70: मैट्रिक्स के आयाम।
  • ¨⍳⍵: मैट्रिक्स में प्रत्येक तत्व के लिए, जहां प्रत्येक तत्व अपने स्वयं के निर्देशांक हैं ...
  • ⍵-Y X: वर्तमान बिंदु और केंद्र बिंदु के बीच अंतर
  • 1 2÷⍨: एक्स को 2 से समन्वित करें (क्योंकि एक चार लंबा चौड़ा है जितना लंबा है)
  • .5*⍨+/2*⍨: वर्ग के योग का वर्गमूल लें
  • 35÷⍨: 35 से भाग दें
  • ⌊L⌊: पात्रों की न्यूनतम मात्रा और वर्तमान मूल्य को लें और इसे नीचे करें
  • ,/: मान अभी भी एक सूची (केवल एक तत्व) में लिपटे हुए हैं, और यह आउटपुट में रिक्ति पैदा करेगा, इसलिए उनकी सूची से मानों को 'मुक्त' कर देगा।
  • C[... ]: चरित्र सूची में एक इंडेक्स के रूप में हमें जो मूल्य मिला है, उसका उपयोग करें
  • ⎕←: अब हमारे पास एक मैट्रिक्स है जहां प्रत्येक तत्व (x, y) के लिए वर्ण है (x, y), इसलिए मैट्रिक्स को आउटपुट करें।

6

पर्ल 5.10, 103 चार्ट

$x=<>;$y=<>;@C=<>=~/./g;for$j(-$y..24-$y){print+(map$C[@C/35*sqrt$_**2/4+$j**2]//$C[-1],-$x..69-$x),$/}

पर अच्छा चाल के लिए @JB के लिए धन्यवाद codegolf.stackexchange.com/questions/678/...
ninjalj

इसके अलावा @gnibbler के लिए धन्यवाद "उसकी" सीमा में पहले से मौजूद विकल्प।
नन्हलज

आउटपुट से पहले आपको एक खाली लाइन मिली। इसलिए वर्तमान में यह अमान्य माना जाता है।
जॉय

@ जॉय: तय ...
निन्जलज

फिर भी, मेरा एक परीक्षण मामला विफल रहता है, यहाँ, यद्यपि। मैंने इसे प्रश्न (नमूना 4) में जोड़ा। किसी तरह उत्पादन में शून्य को अर्धविराम द्वारा बदल दिया जाता है।
जॉय

5

पर्ल, 120 वर्ण

$x,$y=<>,<>;@C=split'',<>;for$j(0..24){print+(map$C[($c=$#C/35*sqrt(($x/2-$_/2)**2+($y-$j)**2))<$#C?$c:$#C-1],0..69),$/}

पहले और तीसरे उदाहरण पर विफल रहता है। absवहाँ एक कारण के लिए है।
नन्हलज

1
स्क्वेरिंग वैसे भी साइन को हटा देता है, मुझे नहीं लगता कि एब्स कुछ भी कैसे बदलेंगे
अनाम कायर

1
डी 'ओह! आप पूरी तरह से सही हैं। मेरे सिस्टम में जो फेल है वो है $x,$y=<>,<>;
नवजाल

4

विंडोज पॉवरशेल, 157

कुछ भी उल्लेखनीय नहीं। पहले से ही मौत के घाट उतार दिया:

$x,$y,$c=@($input)
$l=$c.Length
$c+=(""+$c[-1])*90
0..24|%{$r=$_
-join(0..69|%{$c[[math]::truncate([math]::sqrt(($x-$_)*($x-$_)+4*($y-$r)*($y-$r))*$l/70)]})}

2

सी, 176

सी में मेरे डेल्फी समाधान का अनुवाद, 24 पात्रों को सहेजना:

X,Y,l,i,j,t;char G[99];main(){scanf("%d\n%d\n",&X,&Y);gets(G);l=strlen(G);for(j=-Y;j<25-Y;j++)for(i=-X-1;i<70-X;)t=floor(l*sqrt(i*i++/4+j*j)/35),putchar(!i+X?10:G[t<l?t:l-1]);}

आप इस कोड को यहां देख सकते हैं: http://www.ideone.com/oTvHt


3
आप अंतर चर की घोषणा को main()I अनुमान की तर्क सूची में रख सकते हैं और इस तरह से एक अर्धविराम बचा सकते हैं।
जॉय

2

कॉमन लिस्प, 173 वर्ण

(let*((c(read))(v(read))(g(read-line))(l(length g)))(dotimes(y 25)(dotimes(x 70)(princ(elt g(min(floor(*(sqrt(+(expt(/(- c x)2)2)(expt(- v y)2)))l)35)(1- l)))))(princ #\
)))

केवल वास्तविक चाल मैं यहाँ उपयोग कर रहा हूँ

#\[actual newline]

एक नवागंतुक चरित्र शाब्दिक के रूप में


1

स्केला 223 (ऐप-रैपर के बिना 204)

object C extends App{
import math._
def r=readInt
val p=r
val q=r
val m=readLine
(1 to 70)map(x=>(0 to 25)map(y=>{
printf("%c[%d;%dH%s",27,y,x,m(({
val a=abs(p-x)
val b=abs(q-y)
sqrt(a*a+2*b*b)
}*(m.size-1)/74).toInt))}
))}

कर्नल और पंक्तियों (70, 25) को गतिशील रूप से स्क्रीनिंग फिलिंग के लिए अनुमति देता है।


1

सी # 311

सोचा था कि दूसरों को बेहतर महसूस कराने के लिए मैं एक लंबा कार्यक्रम बनाऊंगा:

using System;class P{static void Main(){Func<string>r=Console.ReadLine;int x=int.Parse(r()),y=int.Parse(r());var c=r();for(int j=0;j<25;j++){for(int i=0;i<70;i++){var l=c.Length;Console.Write(c[(int)Math.Min(l*Math.Sqrt(Math.Pow(Math.Abs(x-i)/2.0,2)+Math.Pow(Math.Abs(y-j),2))/35,l-1)]);}Console.Write("\n");}}}

इनपुट कंसोल से लिया जाता है, एक समय में एक लाइन (निर्देशांक के लिए दो लाइनें और ग्रेडिएंट चार्ट के लिए एक)।

सुझावों के लिए जॉय का धन्यवाद ।

नमूना 1: http://ideone.com/X0jIZ

नमूना २: http://ideone.com/RvICt


@ जोये सही। मैंने इसे ठीक किया और महसूस किया कि C # में यह कोशिश करना एक बहुत बुरा विचार था। हालांकि यह मजेदार था। :-)
क्रिस्टियान लुपस्कू

@ जो आप सही हैं, न तो वर्ग और न ही विधि को सार्वजनिक
क्रिस्टियन लुपस्कू

@ जॉय अगर हम के intबजाय का उपयोग करते हैं float, भाव x-iऔर y-jप्रकार के हो जाते हैं int। इसके कारण, फ्लोट एक के बजाय `इंट मैथ.एब्स (इंट वैल्यू) को बुलाया जाएगा, जिससे सटीकता का कुछ नुकसान होगा। मैंने इसे आजमाया है और सोम ई रफ किनारों को प्राप्त किया है: ideone.com/wQcMT
क्रिस्टियन

@ जोए राइट, एब्स सटीक को प्रभावित नहीं करता है, लेकिन यह एक इंट देता है, जो, जब 2 से विभाजित होता है, तो फ्लोट के विपरीत परिशुद्धता खो जाएगी।
क्रिस्टियन लुपस्कू

क्षमा करें, मैं एक संशोधन भूल गया जो आपके इच्छित तरीके से काम करेगा (दो वर्णों की लागत, लेकिन ints अधिक बचाएगा;)। ओह, और *.5लागत केवल एक चार।
जोए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.