Word의 글꼴 크기 선택기 스크롤


32

단어 및 단추는 다음 규칙에 따라 글꼴 크기를 변경합니다.A

  1. 시작 글꼴 크기는 11입니다.
  2. 경우 글꼴 크기가 1 일 때 누르면, 크기는 1 유지됩니다.
  3. 글꼴 크기는 1 – 12 범위에서 1 포인트로 변경됩니다.
  4. 글꼴 크기는 12 – 28 범위에서 2 포인트로 변경됩니다.
  5. 선택 범위는 28 – 80 범위에서 28, 36, 48, 72 및 80입니다.
  6. 글꼴 크기는 80 – 1630 범위에서 10 포인트로 변경됩니다.
  7. 글꼴 크기는 1630 – 1638 범위에서 8 포인트로 변경됩니다.
  8. 경우 글꼴 크기가 1638 일 때 누르면, 크기가 1,638을 유지합니다.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 예. 원래 나는 그것들을 썼지 만 형식이 어리 석다는 것을 알았습니다. 지금 바로 넣겠습니다.
Adám

2
"😀😀😀😟😀😀"또는 "⛄️⛄️⛄️🌴⛄️⛄️"
Nick T

3
@NickT 괜찮습니다.
Adám

답변:


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은 골프 언어가 아닙니다. 8 × 6 = 48, 68 아님
Adám

1
@APL은 언급 할 수있는 사용자가 아니며 사용자도 아닙니다.
Matthew Roh

43

워드 VBA, 199 147 126 116 102 100 87 85 바이트

언제 할 수 있을까요?

Word 글꼴 크기 선택기 의 형식으로 ThisDocument입력 하고 출력 하는 모듈의 선언 된 기능nArray(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

나는 .GIF입니다!

감사

@ Adám 덕분에 -21 (제거 된 Selection.WholeStory:통화)

@ Adám 덕분에 -10 (깨끗한 환경이라고 가정하고 f.size=11:전화 제거 )

@ Adám 덕분에 -14 (건전한 출력 단어 글꼴 크기 선택기)

@ Adám 덕분에 -2 (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?
Adám

1
또한 전체 기사를 선택해야합니까? 현재 선택이 충분하지 않습니까?
Adám

1
여러 번 실행할 필요가 없습니다. 깨끗한 환경을 가정 할 수 있습니다.
Adám

1
Btw, 실제 에뮬레이션을 수행해야한다는 의미가 없도록 OP 제목을 변경합니다. 실제 사용도 괜찮습니다!
Adám


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)

for 루프 안에서`if 0 <i <179 : i + = d`를 사용하여 3 바이트를 절약 할 수 있습니다. 라인 피드 비용과 공간 들여 쓰기 비용은 5입니다.
ElPedro

아니면 i+=[0,d][0<i<179]작동 할 수도 있습니다
NonlinearFruit

@NonlinearFruit 작동하지만 같은 바이트 수로 나옵니다 (108). 성명서보다 훨씬 더 시원하고 골프처럼 보입니다 if.
ElPedro

1
두 가지 제안이 모두 맞지 않습니다. 그것은 우리가 명중 0하거나 179영원히 거기에 갇혀 있으면 의미합니다 .
orlp

@orlp 좋은 지적. 그거보고 싶었어
ElPedro

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 덕분에 언어를 옥타브로 변경하여 배열에 직접 인덱싱을 사용할 수 있습니다.

rahnema1 덕분에 2 바이트를 절약했습니다.

테스트

Ideone


1
첫 번째 명령문을 제거하고 마지막을로 변경하여 3 바이트를 절약하십시오 [1:12,14:2:28,36,48,72,80:10:1630,1638](L).
Adám

@ Adám 좋은 생각이지만, 그것은 옥타브에서만 작동합니다
Luis Mendo

@LuisMendo, 고마워요.
Mohsen Nosratinia

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+b글꼴 크기 배열의 유효한 인덱스 인 0에서 179 사이로 고정 됩니다.

  • 범위에서 splat 연산자를 사용하면 배열로 변환되므로 사용 가능한 글꼴 크기가에서 생성됩니다 [*1..12,*(14..28).step(2),36,48,72,*(80..1630).step(10),1638]. 각 평탄화 요소의 값을 포함하는 평면 배열입니다.

    • 1..121에서 12까지의 범위입니다 (포함). splat 연산자는이를 값으로 변환합니다 1, 2, 3, ..., 11, 12.
    • (14..28).step(2)주어진 범위에 대한 열거 자이며, 각 단계는 2 씩 증가합니다. splat 연산자는 값을로 변환합니다 14, 16, 18, ..., 26, 28.
    • 개별 값 ( 36, 48, 72, 1638)은 모두 해당 위치에서 훌륭한 글꼴 크기 배열로 연결됩니다.
  • 입력 배열의 각 요소를 사용하는 inject(/ reduce) 메소드를 사용하면서 루비가 입력하는 것처럼 'memo'변수로 줄였습니다. 이것을 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또한 허용됩니다. 크기가 0 미만으로 올라가지 않도록주의하십시오!)

로 실행하십시오 -nr.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.