पिप , 62 59 56 बाइट्स
-S
ध्वज के लिए कोड के 55 बाइट्स, +1 ।
[sXbRA_AEv-_aM,b(Y^aWR_Xb/2s)MyRVsX,b.aYaXbJsxyRL2x]@Aa
ध्यान दें कि यह समाधान ÷
विभाजन के लिए और *
गुणन के इनपुट के साथ काम करता है, हालांकि यह उन वर्णों का उपयोग क्रमशः ASCII-art /
और x
, करने के लिए करता है। ओपी ने स्पष्ट किया है कि यह ठीक है। इसे ऑनलाइन आज़माएं!
कैसे?
यहां आंशिक रूप से स्थान दिया गया है और टिप्पणी संस्करण है । ध्यान दें कि a
और b
कमांड-लाइन आर्ग्स हैं, अर्थात् ऑपरेटर और आकार क्रमशः। -S
झंडा नियंत्रण कैसे सूचियों उत्पादन कर रहे हैं: यह पहली बार नई-पंक्तियों पर मिलती है, लेकिन रिक्त स्थान पर किसी भी नीडिंत सूचियों मिलती है।
[ Build a list of all possible figures:
sXbRA_AEv-_aM,b 0 - Multiplication
(Y^aWR_Xb/2s)My 1 - Addition
RVsX,b.a 2 - Division
YaXbJs 3 - Subtraction
x 4 - Empty
yRL2 5 - Equals
x 6 - Empty
] @ Aa Index, mod 7, with ASCII value of a
और यहाँ व्यक्तिगत खंड हैं:
गुणन
आंकड़े में प्रत्येक पंक्ति के लिए, हम रिक्त स्थान की एक स्ट्रिंग उत्पन्न करते हैं और फिर उनमें से दो को इनपुट चरित्र से बदल देते हैं। पंक्ति के लिए i
, हम इंडेक्स पर रिक्त स्थान बदलना चाहते हैं i
और b-1-i
; लेकिन ध्यान दें कि बाद वाला नकारात्मक सूचकांक का उपयोग कर सकता है -1-i
। (यह और भी छोटा है क्योंकि परिवर्तनीय v
को ऋणात्मक v e 1. से पूर्वनिर्मित किया गया है )
sXbRA_AEv-_aM,b
M,b Map this function to range(b):
sXb Space, repeated b times
_ Function arg
AE (Implicitly) convert to list and append element...
v-_ -1 minus function arg
RA Replace the characters at those indices...
a ... with input character
The resulting list is output with one item per line
इसके अलावा
मेरे ड्रा से एक खोखले वर्ग उत्तर की रणनीति का उपयोग करते हुए , हम एक फ़ंक्शन को परिभाषित करते हैं जो अपने तर्क की प्रतियों +
में लपेटता है b/2
और परिणाम को वर्णों की सूची के रूप में लौटाता है। (पूर्णांक विभाजन //
आवश्यक नहीं है क्योंकि स्ट्रिंग पुनरावृत्ति ऑपरेटर X
स्वचालित रूप से पूर्णांक में छोटा हो जाता है।) सबसे पहले, हम इस फ़ंक्शन को एक स्थान पर, देते हुए कहते हैं [" ";" ";"+";" ";" "]
; फिर, हम उस परिणाम [" ";" ";"+";" ";" "]
पर उसी फ़ंक्शन को मैप करते हैं, जो अधिकांश लाइनों ["+";"+";"+";"+";"+"]
पर लेकिन केंद्र रेखा पर देता है। यह नेस्टेड सूची तब आउटपुट होती है, क्योंकि -S
ध्वज के कारण, पंक्ति के सभी वर्णों के बीच रिक्त स्थान और पंक्तियों के बीच की नई सीमा होती है।
(Y^aWR_Xb/2s)My
Anonymous function:
_Xb/2 Function arg, repeated b/2 times (implicitly rounded down)
aWR Wrap a in two copies of the above
^ Split resulting string into list of chars
Y Yank that function into y
( s) Apply function y to space
My Map y to that result
विभाजन
प्रत्येक पंक्ति के बीच b-1
और 0
रिक्त स्थान होते हैं, उसके बाद इनपुट चरित्र होता है a
।
RVsX,b.a
,b Range(b)
sX Space, repeated that many times (works itemwise)
.a Concatenate a (itemwise)
RV Reverse (puts the larger number of spaces at the beginning)
Outputs newline-separated
घटाव
इनपुट चरित्र की एक अलग-अलग पंक्ति बनाएं। बाद के लिए एक प्रति सहेजें।
YaXbJs
aXb b copies of a
Js Join on space
Y Yank into y (overwrites the function from earlier, but we're done using it anyway)
This is a string, so it just gets output
बराबर
घटाव का चरण जो हमें चाहिए होता है उसका आधा संग्रहित करता है y
- अन्याय इसे दोगुना कर देता है।
yRL2 (Implicitly) convert y to list and repeat it twice
Outputs newline-separated
डमी x
मान मुख्य सूची को पैड करने के लिए हैं ताकि मॉड्यूलर अनुक्रमण प्रत्येक इनपुट चरित्र के लिए एक अद्वितीय सूचकांक देता है +-*÷=
।
= 10
?