স্ক্রোল ওয়ার্ডের ফন্ট আকার নির্বাচনকারী


32

শব্দ এবং বোতামগুলি এই নিয়ম অনুসারে ফন্টের আকার পরিবর্তন করে:A

  1. প্রারম্ভিক ফন্টের আকার 11।
  2. তাহলে যখন ফন্টের আকার 1 টেপা হলে, আকার থাকে 1।
  3. ফন্টের আকার 1 - 12 এর মধ্যে 1 পয়েন্টের সাথে পরিবর্তিত হয়।
  4. ফন্টের আকার 12 - 28 এর মধ্যে 2 পয়েন্টের সাথে পরিবর্তিত হয়।
  5. পছন্দগুলি 28 - 36, 48, 72, এবং 80 - 28 এর মধ্যে রয়েছে।
  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]: 2

[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

হ্যাঁ মূলত আমি এগুলিতে লিখেছিলাম, তবে আমি ফর্ম্যাটগুলি নির্বোধ বলে মনে করেছি। আমি এই মুহুর্তে এটি করা হবে।
অ্যাডাম

2
"😀😀😀😟😀😀" বা "⛄️⛄️⛄️🌴⛄️⛄️" সম্পর্কে কীভাবে
নিক টি

3
@ নিকট এটা ঠিক আছে।
অ্যাডাম

উত্তর:


6

এমএটিএল , 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

অবশেষে একটি গল্ফ ভাষা। আমি ভাবতে শুরু করেছিলাম ...
অ্যাডাম

2
@ অ্যাডাম আমাদের এপিএলে একটি উত্তর প্রয়োজন :)
orlp

@ এপিএল কোনও গল্ফ করার ভাষা নয়। 8 × 6 = 48, 68 নয়
অ্যাডাম

1
@ এপএল কোনও উল্লেখযোগ্য ব্যবহারকারী নয়, মোটেই ব্যবহারকারী নয়।
ম্যাথু রোহ

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 @ অ্যাডমকে ধন্যবাদ (সরানো Selection.WholeStory:কল)

-10 @ @ অ্যাডমকে ধন্যবাদ (পরিষ্কার পরিবেশ অনুমান করুন; f.size=11:কল সরান )

-১৪ @ @ অ্যাডমকে ধন্যবাদ (চটকদার আউটপুট শব্দ ফন্ট আকারের নির্বাচক)

-2 @ অ্যাডমকে ধন্যবাদ জানাই (বুল পরমআরে)

-13 পরিবর্তন করার জন্য ParamArray n()করতে nবুলিয়ান এরে যেমন এবং ইনপুট আশা

-2 একটি কোড মডিউল থেকে থেকে সরানোর জন্য ThisDocumentমডিউল

পুরাতন সংস্করণ 114 বাইট

শব্দটি vbe নকল উইন্ডো nআকারে true,true,false,trueএবং আউটপুট হিসাবে, ParamArray হিসাবে ইনপুট নেয়

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
বিটিডব্লিউ, আমি ওপি শিরোনাম পরিবর্তন করেছি যাতে প্রকৃত অনুকরণটি অবশ্যই করা উচিত এমন কোনও জাল নেই। বাস্তব ব্যবহারও ঠিক আছে!
অ্যাডম


11

জাভাস্ক্রিপ্ট (ES6), 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

পরীক্ষা

ETH প্রডাকশনগুলির জন্য 2 বাইট সংরক্ষণ করা


1
একটি টিপ: আপনি যখনই পাবেন a&&(b=c), আপনি এতে বাইট সংরক্ষণ করতে পারেন a?b=c:0। এখানে যদিও, আমি মনে করি আপনি যা করতে পারেন এমনকি দুটি সংরক্ষণn+=n>v&&k*[...][i]
ETHproductions

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]কাজ করতে পারে
ননলাইনফর্ট

@ ননলাইনারফ্রুট ওয়ার্কস তবে আমার জন্য একই বাইট কাউন্টে আসে (108) একটি ifবিবৃতি চেয়ে অনেক শীতল এবং গল্ফিয়র দেখায় ।
এলপেড্রো

1
উভয় পরামর্শই ভুল। এর অর্থ হ'ল আমরা যদি আঘাত করি 0বা 179আমরা চিরতরে সেখানে আটকে থাকি।
orlp

@orlp ভাল পয়েন্ট। মিস করেছেন one
এলপেড্রো

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)

অ্যাডামকে ধন্যবাদ, কেবল অ্যারেতে সরাসরি ইনডেক্সিং ব্যবহার করতে সক্ষম হতে অষ্টাভের পরিবর্তিত ভাষা।

Rahnema1 ধন্যবাদ 2 বাইট সংরক্ষণ করা।

পরীক্ষা

উপর Ideone


1
প্রথম বিবৃতিটি সরিয়ে, এবং শেষটিতে পরিবর্তন করে 3 বাইট সংরক্ষণ করুন [1:12,14:2:28,36,48,72,80:10:1630,1638](L)
অ্যাডাম

@ অ্যাডম ভাল ধারণা, কিন্তু তারপরে এটি কেবল অষ্টাভে কাজ করে
লুইস মেন্ডো

@ লুইস মেন্ডো, ধন্যবাদ, এটি ঠিক করে দিয়েছেন।
মোহসেন নসরাতিনিয়া

1
@ লুইস মেন্ডো তাই? ভাষাটি কেবল অষ্টাভে পরিবর্তন করুন।
অ্যাডাম

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)প্রদত্ত ব্যাপ্তির, যেখানে প্রতিটি পদক্ষেপ splat অপারেটর মান সেটিকে সক্রিয় 2. দ্বারা যায় একটি গণনাকারী হয় 14, 16, 18, ..., 26, 28
    • পৃথক মানগুলি ( 36, 48, 72, 1638) সমস্ত তাদের ফন্ট-আকারের অ্যারেতে অবস্থানে সম্মতিযুক্ত।
  • আমি inject(/ reduce) পদ্ধতিটি ব্যবহার করেছি, যা ইনপুট অ্যারের প্রতিটি উপাদান ব্যবহার করে, যখন সেগুলিকে একটি 'মেমো' ভেরিয়েবলের মধ্যে নামিয়ে দেয় (রুবি এটি রাখে)। আমি এটি 11-এ শুরু করি এবং প্রতিটি ইনজেকশন পুনরাবৃত্তির মূল অংশটি ইনপুটটির বর্তমান উপাদানটিকে বর্তমান মেমো মানটিতে যোগ করার ফলাফলের জন্য এই মেমো পরিবর্তনশীল সেট করতে হয় এবং তারপরে 0 এবং 180 এর মধ্যে ক্ল্যাম্প করে।

সমস্ত স্প্লট অপারেটর শিল!


2

পিএইচপি, 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


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.