स्क्रॉल करें वर्ड का फ़ॉन्ट आकार चयनकर्ता


32

वर्ड और बटन इन नियमों के अनुसार फ़ॉन्ट का आकार बदलते हैं:A

  1. प्रारंभिक फ़ॉन्ट का आकार 11 है।
  2. यदि फ़ॉन्ट आकार 1 होने पर दबाया जाता है, तो आकार 1 रहता है।
  3. फ़ॉन्ट आकार 1 - 12 की सीमा में 1 बिंदु के साथ बदलता है।
  4. फ़ॉन्ट का आकार 12 - 28 की सीमा में 2 बिंदुओं के साथ बदलता है।
  5. विकल्प 28, 36, 48, 72 और 80 में रेंज 28 - 80 हैं।
  6. फॉन्ट का आकार 80 - 1630 में 10 अंकों के साथ बदलता है।
  7. 1630 - 1638 की सीमा में 8 अंकों के साथ फ़ॉन्ट आकार बदलता है।
  8. यदि फ़ॉन्ट का आकार 1638 है, तो दबाया जाता है, तो आकार 1638 रहता है।A

कार्य

यथासंभव कुछ बाइट्स में, किसी भी उचित प्रारूप में बटन प्रेस का एक सेट दिए जाने पर परिणामी फ़ॉन्ट आकार निर्धारित करें।

उदाहरण

[3,-1,2], अर्थ : परिणाम 18 है।AAAAA

कुछ संभावित स्वरूप हैं '^^^v^^', [1 1 1 -1 1 1], [True,True,True,False,True,True], ["+","+","+","-","+","+"], "‘‘‘’‘‘", "⛄️⛄️⛄️🌴⛄️⛄️", 111011, "CaB", आदि ...

[2]: 14

[-1]: 10

[13]: 80

[-11,1]: २

[11,-1]: 36

[170,-1]: 1630

[2000,-2,100]: 1638


3
क्या हमें उस सटीक प्रारूप में बटन प्रेस का सेट लेना है? उदाहरण के लिए, कुछ या इनमें से सब ठीक रूप में अच्छी तरह होगा: "^vvv^v^^^v", [-1, 1, 1, -1, 1, -1], [0, 1, 0, 1, 1, 0, 1]?
orlp

@orlp हां। मूल रूप से मैंने उन्हें लिखा था, लेकिन मैंने प्रारूप को मूर्खतापूर्ण पाया। मैं उन्हें अभी डाल दूँगा।
Adám

2
कैसे "T" या "⛄️⛄️⛄️🌴⛄️⛄️" के बारे में
निक टी

3
@ ठीक है।
शाम

जवाबों:


6

MATL , 49 47 45 बाइट्स

11: 9:E10+'$*H'o8:163 10*1638v11ihl180h&Ys0))

इनपुट प्रारूप वैकल्पिक अल्पविराम के साथ [1 1 -1 1 1 -1 -1 -1]या है [2 -1 2 -3]

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

व्याख्या

11:         % Push [1 2 ... 11]
9:          % Push [1 2 ... 9]
E10+        % Times 2, plus 10: gives [12 14 ... 28]
'$*H'       % Push this string
o           % Convert to double: gives ASCII codes, that is, [36 48 72]
8:163       % Push [8 9 ... 163]
10*         % Times 10: gives [80 90 ... 1630]
1638        % Push 1638
v           % Concatenate everything into a column vector
11          % Push 11
ih          % Input array and concatenate with 11
l180h       % Push [1 180]
&Ys         % Cumulative sum with limits 1 and 180
0)          % Get last value
)           % Index into column vector of font sizes. Implicitly display

अंत में एक गोल्फ भाषा। मुझे आश्चर्य होने लगा था ...
Adám

2
@ Adám हमें APL :)
orlp

@APL एक गोल्फ की भाषा नहीं है। × ६ =
आदाम

1
@APL एक उल्लेख योग्य उपयोगकर्ता नहीं है, न ही कोई उपयोगकर्ता है।
मैथ्यू रो

43

वर्ड वीबीए, 199 147 126 116 102 100 87 85 बाइट्स

जब आप कर सकते हैं तो अनुकरण क्यों करें ?!

ThisDocumentमॉड्यूल में घोषित कार्य जो वर्ड फॉन्ट साइज चयनकर्ता के लिए और आउटपुटn के रूप में इनपुट लेता हैArray(true,true,false,true) :P

golfed:

Sub a(n):Set f=Content.Font:For Each i In n
If i Then f.Grow Else f.Shrink
Next:End Sub

Ungolfed:

Sub a(n)
    Set f=ThisDocument.Content.Font
    For Each i In n
        If i Then 
            f.Grow 
        Else 
            f.Shrink
    Next
    ''  Implicitly output font size to MS Word Font Size Selector 
End Sub

.GIF उपयोग के लिए

मैं एक .GIF हूँ!

धन्यवाद

-21 धन्यवाद @ Adám (हटाया गया Selection.WholeStory:कॉल)

-10 धन्यवाद @ Adám (स्वच्छ वातावरण मानें, f.size=11:कॉल हटाएं )

@ Adám (चुटीला आउटपुट शब्द फ़ॉन्ट आकार चयनकर्ता) के लिए -14 धन्यवाद

@ Adám (bool ParamArray) को -2 धन्यवाद

-13 बूलियन ऐरे के रूप में इनपुट में बदलाव और अपेक्षा के ParamArray n()लिएn

-2 एक कोड मॉड्यूल से जाने के लिए ThisDocumentमॉड्यूल

पुराने संस्करण 114 बाइट्स

nParamArray के रूप में इनपुट लेता है , true,true,false,trueशब्द के रूप में आउटपुट और आउटपुट vbe तुरंत विंडो बनाता है

Sub a(ParamArray n()):Set f=Selection.Font:For Each i In n
If i Then f.Grow Else f.Shrink
Next:Debug.?f.Size:End Sub

पुराना संस्करण, 199 बाइट्स

के रूप में इनपुट लेता है 170,-4,6,-1(परिमाण में 1 से बड़ी संख्या को स्वीकार करता है)

Sub a(ParamArray n()):Selection.WholeStory:Set f=Selection.Font:f.Size=12:For Each i In n
If i>1 Then
For j=i To 0 Step -1:f.Grow:Next
Else
For j=i To 0:f.Shrink:Next:End If:Next:Debug.?f.Size:End Sub

1
+1 (यदि मैं कर सकता था तो मैं और अधिक देता हूं)। क्यों करते हो Set f=.Size = 12?
शाम

1
इसके अलावा, क्या आपको पूरी कहानी का चयन करने की आवश्यकता है? क्या वर्तमान चयन पर्याप्त नहीं है?
शाम

1
एकाधिक रन की अनुमति देने की आवश्यकता नहीं है। आप एक स्वच्छ वातावरण मान सकते हैं।
अदम

1
Btw, मैं ओपी शीर्षक को बदलता हूं ताकि कोई निहितार्थ न हो कि वास्तविक अनुकरण किया जाना चाहिए। वास्तविक उपयोग भी ठीक है!
शाम


11

जावास्क्रिप्ट (ईएस 6), 103 101 बाइट्स

-1/ की एक सरणी के रूप में इनपुट लेता है 1

a=>a.map(k=>[1,12,28,36,48,72,80,1630,1638].map((v,i)=>n+=n>v&&k*[1,1,6,4,12,-16,2,-2,-8][i]),n=11)|n

परीक्षा

सहेजे गए 2 बाइट्स ETHproductions के लिए धन्यवाद


1
एक टिप: जब भी आपके पास हो a&&(b=c), आप एक बाइट को बचा सकते हैं a?b=c:0। हालांकि, मुझे लगता है कि आप n+=n>v&&k*[...][i]
15

9

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

i=10;r=range
for d in input():i+=d*(0<i+d<179)
print(r(1,12)+r(12,29,2)+[36,48,72]+r(80,1631,10)+[1638])[i]

[-1, 1, 1, -1, ...]प्रारूप में होने के लिए इनपुट की आवश्यकता होती है । यह कुछ बाइट्स अतिरिक्त के लिए उदाहरणों के साथ काम करता है:

for d in input():i=min(max(0,i+d),179)

आप लूप के लिए `if 0 <i <179: i + = d` का उपयोग करके 3 बाइट्स बचा सकते हैं। आपको एक लाइनफीड और एक अंतरिक्ष इंडेंट की लागत अन्यथा 5.
ElPedro

या i+=[0,d][0<i<179]काम कर सकता है
NonlinearFruit

@ नॉनलाइनयरफ्रूट वर्क्स, लेकिन मेरे (108) के लिए एक ही बाइट गिनती में आता है। एक ifबयान की तुलना में बहुत कूलर और गोल्फर दिखता है ।
एल्प्रेड्रो

1
दोनों सुझाव गलत हैं। इसका मतलब होगा कि अगर हम हिट करते हैं 0या 179हम हमेशा के लिए वहां फंस जाते हैं।
orlp

@orlp अच्छा बिंदु। उस एक को याद किया।
एलपेड्रो

6

सप्टक, 93 89 87 बाइट्स

इनपुट ऐरे में 1 की तुलना में बड़ा पूर्णांक हो सकता है और क्रिया की बहुलता को दर्शाने के लिए -1 से छोटा हो सकता है

L=11;for k=input(''),L=min(max(L+k,1),180);end;[1:11 [6:14 18 24 36 40:5:815 819]*2](L)

Adám के लिए धन्यवाद, केवल एक अनुक्रम में प्रत्यक्ष अनुक्रमण का उपयोग करने में सक्षम होने के लिए ऑक्टेव में परिवर्तित भाषा।

सहेजे गए 2 बाइट्स rahnema1 के लिए धन्यवाद।

परीक्षा

पर Ideone


1
पहले कथन को हटाकर और अंतिम को बदलकर 3 बाइट्स सहेजें [1:12,14:2:28,36,48,72,80:10:1630,1638](L)
शाम

@ Adám अच्छा विचार है, लेकिन तब यह केवल ऑक्टेव में काम करता है
लुइस मेंडो

@LuisMendo, धन्यवाद, इसे ठीक किया।
मोहसेन नोसरतिनिया

1
@LuisMendo तो? केवल ऑक्टेव में भाषा बदलें।
Adám

2
[1:11 [6:14 18 24 36 40:5:815 819]*2]कुछ बाइट्स बचाए जा सकते हैं!
rahnema1

4

रूबी, 106 बाइट्स

मैं अजगर के घोल से दो बाइट दाढ़ी बनाने में कामयाब रहा (और शेविंग में कुछ समय लगा)।

->n{[*1..12,*(14..28).step(2),36,48,72,*(80..1630).step(10),1638][n.inject(11){|a,b|[0,179,a+b].sort[1]}]}

यह एक अनाम फ़ंक्शन है जो इनपुट को रूप में लेता है [1, -1, 1, 1, ...]। यह [170,-12]रूप में अच्छी तरह से इनपुट के साथ काफी अच्छी तरह से निपटने के लिए लगता है , लेकिन मैं यह गारंटी नहीं दे सकता कि यह समय के 100% काम करेगा, इसलिए मैं इसे सुरक्षित खेलूंगा और कहूंगा कि यह काम करता है [1, -1, 1, 1, ...]

ट्रिक्स मैं इस्तेमाल किया:

  • [0,179,a+b].sort[1]: यह क्लैंप a+b0 और 179 के बीच होना चाहिए, जो कि फॉन्ट-साइज़ ऐरे के वैध इंडेक्स हैं।

  • रेंज पर स्पैट ऑपरेटर का उपयोग उन्हें सरणियों में परिवर्तित करता है, इसलिए उपलब्ध फ़ॉन्ट आकार से उत्पन्न होता है [*1..12,*(14..28).step(2),36,48,72,*(80..1630).step(10),1638]। प्रत्येक चपटे तत्वों से मान रखने वाला एक समतल सरणी है:

    • 1..121 से 12 (समावेशी) की सीमा है। स्पैट ऑपरेटर इसे मूल्यों में बदल देता है 1, 2, 3, ..., 11, 12
    • (14..28).step(2)दी गई सीमा के लिए एक एन्यूमरेटर है, जहां प्रत्येक चरण 2 से ऊपर जाता है। स्पैट ऑपरेटर इसे मूल्यों में बदल देता है 14, 16, 18, ..., 26, 28
    • व्यक्तिगत मान ( 36, 48, 72, 1638) सभी को अपनी स्थिति में बड़े फ़ॉन्ट-आकार के सरणी में समेट दिया गया है।
  • मैंने inject(/ reduce) विधि का उपयोग किया, जो इनपुट एरे के प्रत्येक तत्व का उपयोग करता है, जबकि उन्हें 'मेमो' चर में कम करता है (जैसा कि रूबी इसे डालता है)। मैं इसे 11 को इनिशियलाइज़ करता हूं, और प्रत्येक इंजेक्ट इटरेशन का बॉडी इस मेमो वेरिएबल को इनपुट के करंट एलिमेंट को मौजूदा मेमो वैल्यू में जोड़ने के लिए सेट करता है, और फिर इसे 0 से 180 के बीच क्लैम्प कर रहा है।

सभी ओलावृष्टि को प्रचालक करते हैं!


2

PHP, 116 बाइट्स

पहले आकार सूचकांक (1 से 180 समावेशी से) उत्पन्न करता है,
फिर बिंदु आकार पर मैप करता है और परिणाम प्रिंट करता है।

for($s=11;$d=$argv[++$i];$s=min($s+$d,180)?:1);echo$s>12?$s>20?$s>23?$s*10-160-2*($s>179):24+(12<<$s-21):$s*2-12:$s;

कमांड लाइन तर्क से +Nऔर लेता -1है।
( -Nयह भी स्वीकार किया जाता है; बस ध्यान रखें कि आकार शून्य से नीचे नहीं जाता है!)

साथ चलाना -nr


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