Wordのフォントサイズセレクターをスクロールする


32

Word およびボタンは、次の規則に従ってフォントサイズを変更します。A

  1. 開始フォントサイズは11です。
  2. 場合は、フォントサイズが1の場合に押され、大きさは1のままです。
  3. フォントサイズは1〜12の範囲で1ポイント変化します。
  4. フォントサイズは、12〜28の範囲の2ポイントで変化します。
  5. 選択肢は、28〜36の範囲の28、36、48、72、および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]: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

@orlpはい。もともと私はそれらを書いたが、私は形式がばかげていることを発見した。すぐに入れます。
アダム

2
「😀😀😀😟😀😀」または「⛄️⛄️⛄️🌴⛄️⛄️」はどうですか
ニックT

3
@NickTそれは結構です。
アダム

回答:


6

MATL49 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
@AdámAPLで回答が必要です:)
orlp

@APLはゴルフ言語ではありません。8×6 =
48、68

1
@APLは言及可能なユーザーではなく、ユーザーでもありません。
マシュー

43

ワードVBA、199 147 126 116 102 100 87 85のバイト

なぜエミュレートできるのか?!

で宣言された関数ThisDocumentの入力を要するモジュールnの形でArray(true,true,false,true)、およびワードフォントサイズのセレクタに出力します :P

ゴルフ:

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

ゴルフをしていない:

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

I'm a .GIF!

ありがとう

-21 @Adámに感謝(削除されたSelection.WholeStory:電話)

-10 @Adámに感謝(クリーンな環境を想定、f.size=11:呼び出しを削除)

-14 @Adám(出力単語のフォントサイズのセレクターが粗い)に感謝

-2 @Adám(bool ParamArray)に感謝

-13に変更ParamArray n()n、ブール配列としての入力を想定

-2コードモジュールから移動させるためのThisDocumentモジュール

旧バージョン114バイト

入力nをParamArrayの形式で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
ところで、実際のエミュレーションを行う必要があるという意味がないように、OPタイトルを変更します。実際の使用でも大丈夫です!
アダム


11

JavaScript(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

テスト

ETHproductionsのおかげで2バイト節約


1
ヒント:持っているときはいつでもa&&(b=c)、バイトを保存できますa?b=c:0。ただし、ここでは2つを保存することもできますn+=n>v&&k*[...][i]
-ETHproductions

9

Python 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)

forループ内で `if 0 <i <179:i + = d`を使用すると、3バイトを節約できます。そうでなければ、ラインフィードとスペースインデントのコストは5になります
。– ElPedro

それともi+=[0,d][0<i<179]うまくいくかもしれない
NonlinearFruit

@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のおかげで、言語をOctaveに変更し、配列への直接インデックスを使用できるようにしました。

rahnema1のおかげで2バイト節約されました。

テスト

オンIdeone


1
最初のステートメントを削除し、最後のステートメントをに変更して、3バイトを節約します[1:12,14:2:28,36,48,72,80:10:1630,1638](L)
アダム

@Adám良いアイデアですが、それはオクターブでのみ動作します
ルイスメンドー

@LuisMendo、ありがとう、修正しました。
モーセンノスラチニア

1
@LuisMendoだから?言語をOctaveのみに変更します。
アダム

2
[1:11 [6:14 18 24 36 40:5:815 819]*2]いくつかのバイトを保存できます!
rahnema1

4

ルビー、106バイト

私はPythonソリューションから数バイトを削ることができました(そして、それは剃るのに時間がかかりました)。

->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]:これは0〜179の範囲にクランプさa+bれます。これは、font-size配列の有効なインデックスです。

  • 範囲でsplat演算子を使用すると、範囲に配列が変換されるため、使用可能なフォントサイズはから生成され[*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ます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.