자신의 자리에 앉기


41

오늘날의 과제를 해결하려면 문자열을 대체하는 프로그램이나 함수를 작성해야합니다. 그러나 알파벳이 아닌 문자는 무시해야합니다. 이것은 모든 알파벳 문자가 선행 및 다음 알파벳 문자 와 다른 대소 문자를 가져야 함을 의미합니다 . 예를 들어 이것은 다른 모든 문자를 대문자로 쓰는 것보다 약간 더 복잡합니다. 다음과 같은 문자열을 사용하면

hello world

다른 모든 문자를 대문자로 변환하면 다음을 얻을 수 있습니다.

hElLo wOrLd

보다시피, 소문자 o뒤에 소문자 가옵니다 w. 유효하지 않습니다. 대신 공간을 무시하여 다음과 같은 결과를 제공해야합니다.

hElLo WoRlD

알파벳이 아닌 모든 문자는 동일하게 유지해야합니다. 출력은 지속적으로 교대로있는 한 대문자 또는 소문자로 시작할 수 있습니다. 이는 다음도 수용 가능한 출력이 될 것임을 의미합니다.

HeLlO wOrLd

입력의 경우에 관계없이 프로그램이 작동해야합니다.

입력 문자열에는 인쇄 가능한 ASCII 만 포함 되므로 인쇄 할 수없는 문자, 줄 바꿈 또는 유니 코드에 대해 걱정할 필요가 없습니다. 제출은 전체 프로그램 또는 기능 일 수 있으며, 합리적인 형식으로 입력 및 출력 할 수 있습니다. 예를 들어, 함수 인수 / 반환 값, STDIN / STDOUT, 파일 읽기 / 쓰기 등

예 :

ASCII                                   ->  AsCiI
42                                      ->  42
#include <iostream>                     ->  #InClUdE <iOsTrEaM>
LEAVE_my_symbols#!#&^%_ALONE!!!         ->  lEaVe_My_SyMbOlS#!#&^%_aLoNe!!!
PPCG Rocks!!! For realz.                ->  PpCg RoCkS!!! fOr ReAlZ.
This example will start with lowercase  ->  tHiS eXaMpLe WiLl StArT wItH lOwErCaSe
This example will start with uppercase  ->  ThIs ExAmPlE wIlL sTaRt WiTh UpPeRcAsE
A1B2                                    ->  A1b2

이것이 이기 때문에 표준 허점이 적용되고 바이트 단위의 최단 답변이 승리합니다!


32
윽, 나는 단지이 깨달았다 한 것을 밈이 XD
— 베타 붕괴를

@BetaDecay Hahaha, 그건 내 의도 가 아니었다 . 더 불행한 타이밍. 나는 그것을 채팅 미니 도전으로 생각하지만, 그것은 생각보다 미묘하게 어렵 기 때문에 그 아이디어를 좋아합니다.
— DJMcMayhem

4
다음 도전은 라 à 아스키 스폰지 밥을 인쇄하는 것입니다cowsay
— Frambot

1
젠장! 나는 단지 (같이 어제) 이것에 대한 CJam 스크립트를 작성하고 삭제.
— Esolanging 과일

2
제목이나 펭귄의 멸종이나 스포크를 사용하는 예에 대해서는 놓칠 가능성이 있습니다.
— Ian

답변:


19

자바 스크립트 (ES6), 66 63 바이트

대문자로 시작합니다.

s=>s.replace(/[a-z]/gi,c=>c[`to${(s=!s)?'Low':'Upp'}erCase`]())

테스트 사례


내가 어떻게하려고했는지 내가 생각하는 당신은 바이트의 몇 가지를 저장할 수있는 내가 볼 수 있지만 내 전화를 해요 그래서 제대로 테스트 할 수 없습니다.
— Shaggy

네, 삼항을 사용하는 것이 제가 제안한 것입니다.
— Shaggy

1
s=!s트릭 은 어떻게 작동합니까?
— Kritixi Lithos 17 년

7
@KritixiLithos s입력 문자열 이기 때문에 !s먼저 평가합니다 false(입력 문자열이 비어 있지 않으면 평가되는 것입니다.true 그러나 빈 문자열은 일치하지 않습니다). 그 후에는 표준 부울 연산이되어 false와 사이를 번갈아 가며 나타납니다 true. 또한 s피드에 이미 사용 되었기 때문에이 시점에서 콘텐츠를 잃어 버릴 염려가 없습니다 .replace().
— Arnauld 17 년

3
@MayorMonty 불행히도, 그것은 몇 가지 기호와 일치합니다. 같은 입력 "A[I"이 실패합니다.
— Arnauld

12

05AB1E , 11 8 바이트

암호:

lvyJ¤aiš

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명:

l           # Lowercase the input
 vy         # For each element..
   J        #   Join the entire stack into a single string
    ¤a      #   Check if the last character is alphabetic
      iš    #   If true, swapcase the entire string

나는 11 바이트를 이길 수 있다는 것을 알면서 맹목적으로 들어가는 방법을 좋아한다. 그런 다음 천천히 17에서 11 바이트로 이동하여 lvy¾Fš}Da½J정확히 이미 가지고있는 것을 인식하십시오 .
— Magic Octopus Urn

1
@carusocomputing 훨씬 쉬운 8 바이트 솔루션이 있습니다 : p
— Adnan

4
아, 아주 쉽게 하하.
— Magic Octopus Urn

2
@Octopus 이것에 대한 토론이 있지만 'osable'과 'osabie'를 모두 사용합니다.
— Adnan

1
@octopus 말 그대로 Oh-Five-Ay-Bee-One-Eee나는 창조적 인 사람이 아닙니다.
— Magic Octopus Urn


8

젤리 , 13 바이트

nŒsTm2
ŒlŒuǦ

온라인으로 사용해보십시오!

작동 원리

ŒlŒsǦ  Main link. Argument: s (string)

Œl      Cast to lowercase.
    Ǧ  At indices returned by the helper link...
  Œu        apply uppercase.


nŒsTm2      Helper link. Argument: s (string)

 Œs         Apply swapcase to s.
n           Perform vectorizing not-equal comparison.
   T        Compute the truthy indices.
    m2      Select every other one, starting with the first.

7

Japt , 16 14 바이트

r"%l"_m"uv"gT°

온라인으로 사용해보십시오!

설명

r              // RegEx replace input
 "%l"          // [A-Za-z] as first arg to replace
     _         // created function Z=>Z as second arg to replace
       "uv"gT° // alternates "u" & "v"
      m        // map Z to either "u" upper or "v" lower

아주 좋아요! 를 제거 할 수 있습니다 ,. 숫자 (예 [12]:)가 아닌 한 Japt는 다른 항목임을 알고 있습니다. 나는 당신도 제거 할 수 있다고 생각합니다 &1.
— Oliver

@obarakon 감사합니다. Japt 문서는 약간 부족합니다.
— powelles

Japt를 이용해 주셔서 감사합니다. Japt 대화방 에서 질문, 제안 등을 자유롭게 요청하십시오 . Japt thread에 대한 팁 도 있습니다 . :)
— Oliver

_m"uv"gT°좋은. 나는 단지 그것을 제안하려고했다.
— Oliver

@obarakon 네, 채팅에서 ETH가 귀하의 질문에 응답하는 곳을 보았습니다.
— powelles


5

Alice , 18 바이트

/olZlYuN
@iy.u..//

온라인으로 사용해보십시오!

설명

이 프로그램은 서수 모드에서 완전히 실행되는 홀수 길이 프로그램의 덜 알려진 템플릿을 따릅니다. 이 코드의 선형화 된 버전은 다음과 같습니다.

il.l.uN.YuZyo@

코드 설명 :

i - push input onto stack            ["Hello world!"]
l - convert to lowercase             ["hello world!"]
. - duplicate                        ["hello world!", "hello world!"]
l - convert to lowercase (should be no-op, but avoids what seems to be a bug in the TIO implementation)
. - duplicate again                  ["hello world!", "hello world!", "hello world!"]
u - convert to uppercase             ["hello world!", "hello world!", "HELLO WORLD!"]
N - difference between sets          ["hello world!", "helloworld"]
. - duplicate reduced string         ["hello world!", "helloworld", "helloworld"]
Y - unzip (extract even positions)   ["hello world!", "helloworld", "hlool", "elwrd"]
u - convert to uppercase             ["hello world!", "helloworld", "hlool", "ELWRD"]
Z - zip evens back into string       ["hello world!", "helloworld", "hElLoWoRlD"]
y - perform substitution             ["hElLo WoRlD!"]
o - output                           []
@ - terminate

l중복을 사용하지 않으면 이후의 스택 N은입니다 ["helloworld", "helloworld"]. 나는 이것이 버그라고 강력하게 의심한다.


5

C (tcc) , 60 57 56 바이트

비트 5를 인식하는 DigitalTrauma 덕분에 ASCII 대문자 / 소문자의 유일한 차이점입니다.

3 바이트 이상 골프를 해주신 zch에게 특별한 감사를드립니다.

RJHunter의 아이디어에서 하나 이상의 바이트를 저장하십시오.

l;f(char*s){for(;*s=isalpha(*s)?*s&95|++l%2<<5:*s;s++);}

온라인으로 사용해보십시오!


나는 그것을 조금 더 골프화 하고 수정하여 모든 gcc, tcc, clang에서 작동합니다. FWIW, gcc는 문자열 리터럴을 읽기 전용 메모리에 넣으므로 strdup()테스트 드라이버 코드에서 읽기 쓰기 메모리에 대한 포인터를 가져 왔습니다.
— Digital Trauma

1
@DigitalTrauma 감사합니다. 나는 비트 5가 상하의 차이라는 것을 인식해야했습니다. 좋아요!
— cleblanc

나는 노력 이 버전이 너무 재귀하게,하지만 어떤 짧은 가져올 수 없습니다.
— Digital Trauma

내부 조건을 *s&~32|++l%2<<53 바이트로 절약 할 수 있습니다 .
— zch

입력은 인쇄 가능한 ASCII로 약속되므로 다른 바이트로 대체 &~33하여 대체 할 수 있습니다 &95.
— RJHunter

4

자바 8, 99 바이트

a->{String r="";int i=0;for(int c:a)r+=(char)(c>64&c<91|c>96&c<123?i++%2<1?c|32:c&~32:c);return r;}

설명:

여기에서 시도하십시오.

a->{                          // Lambda with char-array parameter and String return-type
  String r="";                //  Result-String
  int i=0;                    //  Flag for alteration
  for(int c:a)                //  Loop over the characters of the input
    r+=(char)                 //   And append the result-String with the following (converted to char):
      (c>64&c<91|c>96&c<123?  //    If it's a letter:
       i++%2<1?               //     And the flag states it should be lowercase:
        (c|32)                //      Convert it to lowercase
       :                      //     Else (should be uppercase):
        (c&~32)               //      Convert it to uppercase
      :                       //    Else:
       c);                    //     Simply append the non-letter character as is
                              //  End of loop (implicit / single-line body)
  return r;                   //  Return result-String
}                             // End of method

나는 그것을 더 짧게 얻을 수 없었지만 바이트 를 사용 (c+"").matches("[A-Za-z]")하거나 Character.isLetter(c)저장할 수 있습니다 .
— TheLethalCoder

@TheLethalCoder 둘 다 더 깁니다 c>64&c<91|c>96&c<123. 그리고 int어쨌든 골프 Character.toUpperCase(...)및 Character.toLowerCase(...)골프 부품 (이러한 : (char)(c&~32)및 (char)(c|32))에 사용하기 때문에 둘 중 하나를 사용하여 더 짧게 만들 수는 없습니다.
— 케빈 크루이 센

1
나는 당신이 어쨌든 그것들을 사용할 수 있는지 볼 수는 없지만 게시 할 가치가 있다고 생각했습니다.
— TheLethalCoder

@TheLethalCoder 아 좋아. :) 어떤 경우에는 첫 번째가 다른 도전에 대해 약간 다른 접근법으로 도움이 될 수 있지만이 도전에 대해서는 그대로 더 짧습니다. 어쨌든 고마워
— Kevin Cruijssen

a->{String r="";int i=0,f=32;for(int c:a)r+=(char)(c>64&c<91|c>96&c<123?(f=~f):c);return r;} ??
— Roman Gräf

4

루비, 57 55 47 41 바이트

바이트 수에는 명령 행 옵션을위한 2 바이트가 포함됩니다.
예를 들어 다음과 같이 실행하십시오.$ ruby -p0 alternate_case.rb <<< "some input"

gsub(/\p{L}/){($&.ord&95|32*$.^=1).chr}

이 p0옵션을 사용하면 전체 입력이 한 번에 소비되고 마법 글로벌 $.이 1로 증가합니다. 나중에 0과 1 사이에서 전환되어 상태를 유지하는 데 사용됩니다.

여러 줄 입력으로 작동합니다. 온라인으로 사용해보십시오!

놀라운 입력을위한 Ventero 덕분에 자세한 내용은 의견을 확인하십시오.


1
남자, $.매번 gets전화를 걸 때마다 자동 증가 하는 것이 아니라면 , -p플래그가 있는 전체 프로그램 이 더 짧아 졌을 것입니다.
— Value Ink

1
1&$.+=1괄호를 삭제할 수 있습니다. 그리고 완전성을 위해 또 다른 전역 정수가 있습니다-불행히도 읽기 전용 $$입니다.
— Ventero

1
명령 행 플래그에 대한 또 다른 점 : -p0인터프리터가 사용 가능한 모든 입력을 한 번에 읽을 수있게하여 코드가 한 번만 호출되므로 자유롭게 사용할 수 있습니다 $.. 이를 지정할 때 gsub암시 적으로 작동 한다는 사실과 결합 하면 전체 프로그램이 훨씬 짧아집니다. 플래그 는 48 자 , 2는 플래그입니다. $_.gsub!-pgsub(/[a-z]/i){[$&.upcase,$&.downcase][1&$.+=1]}p0
— Ventero

1
최종 설명, 약속드립니다.) 일단 사용 -p0하고 나면 실제로 몇 가지 문자를 $.앞뒤로 뒤집을 1수 있습니다 $.^=1. 코드가 호출 될 때 보장되기 때문에 간단히 사용할 수 있습니다 .
— Ventero

2
내가 거짓말을 턴에서, 나는 다른 의견을 가지고 : 입력이 오직 인쇄 가능한 ASCII를 포함하도록 보장 D, 우리는 정규 표현식에서 유니 코드 범주에 대한 루비의 지원을 사용할 수 있습니다 /\p{L}/(유니 코드 범주 편지 ) 이상의 문자 짧다 /[a-z|/i.
— Ventero

3

Brachylog , 25 바이트

{ḷ|ụ}ᵐ.{ḷ∈Ạ&}ˢ¬{s₂{∈Ạ}ᵐ}∧

온라인으로 사용해보십시오!

이것은 길고 느립니다.

설명

{   }ᵐ.                       The Output is the result of mapping on each char of the Input:
 ḷ                              Lowecase the char
  |                             Or
   ụ                            Uppercase the char
       {    }ˢ                In the Ouput, select the chars that:
        ḷ∈Ạ&                    when lowercased are in "abc...xyz" (ie are letters)
              ¬{       }∧     In that new string, it is impossible to find:
                s₂              a substring of 2 consecutive chars
                  {∈Ạ}ᵐ         where both of them are in the lowercase alphabet

3

MATL , 16 15 바이트

Xktkyy-f2L))5M(

온라인으로 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오 .

설명

입력 'hello world'를 고려하십시오

Xk    % To upper case
      % STACK: 'HELLO WORLD'
t     % Duplicate top element
      % STACK: 'HELLO WORLD', 'HELLO WORLD'
k     % To lower case
      % STACK: 'HELLO WORLD', 'hello word'
yy    % Duplicate top two elements
      % STACK: 'HELLO WORLD', 'hello word', 'HELLO WORLD', 'hello word'
-     % Difference (of code points; element-wise)
      % STACK: 'HELLO WORLD', 'hello word', [-32 -32 -32 -32 -32 0 -32 -32 -32 -32 -32]
f     % Indices of nonzeros
      % STACK: 'HELLO WORLD', 'hello word', [1 2 3 4 5 7 8 9 10 11]
2L)   % Keep only even-indexed values (*)
      % STACK: 'HELLO WORLD', 'hello word', [2 4 7 9 11]
)     % Reference indexing (get values at indices)
      % STACK: 'HELLO WORLD', 'elwrd'
5M    % Push (*) again
      % STACK: 'HELLO WORLD', 'elwrd', [2 4 7 9 11]
(     % Assignment indexing (write values at indices). Implicit display
      % STACK: 'HeLlO wOrLd

'


3

펄 6 ,  32  30 바이트

{S:g/<:L><-:L>*<:L>?/$/.tclc()/}

시도 해봐

{S:g{<:L><-:L>*<:L>?}=$/.tclc}

시도 해봐

넓히는:

{  # bare block lambda with implicit parameter 「$_」

  S            # string replace (not in-place) implicitly against 「$_」

  :global

  {

    <+ :L >    # a letter
    <- :L >*   # any number of non-letters
    <+ :L >?   # an optional letter

  }

  =

  $/.tclc()    # uppercase the first letter, lowercase everything else
}

3

q / kdb +, 51 42 38 바이트

해결책:

{@[x;;upper]1#'2 cut(&)x in .Q.a}lower

예:

q){@[x;;upper]1#'2 cut(&)x in .Q.a}lower"hello world"
"HeLlO wOrLd"

노트:

.Q.a        // abcde...xyz lowercase alphabet
(&) x in    // where, returns indices for where x (hello world) is an alpha
2 cut       // splits list into 2-item lists
1#'         // takes first item of each 2-item list; ie the indices to uppercase
@[x;;upper] // apply (@) upper to x at these indices

2

V , 17 , 13 바이트

VUÍშáü$©/ì&

온라인으로 사용해보십시오!

또는 모든 테스트 사례를 확인하십시오!

HeXdUmP :

00000000: 5655 cde1 83a8 e1fc 24a9 2fec 26         VU......$./.&

설명:

이 사용하는 압축 정규식 ™ ️, 그래서 그것을 설명하기 전에,하자가 밖으로 정규식을 확장 :

:%s/\v\a.{-}(\a|$)/\l&

VU변환의 모든 대문자입니다. 그런 다음 우리는 이것을 실행합니다 :

:%                      " On every line:
  s/\v                  "   Substitute:
      \a                "     A letter
        .{-}            "     Followed by as few characters as possible
            (\a|$)      "     Followed by either another letter or an EOL
                  /     "   With:
                   \l   "     The next character is lowercased
                     &  "     The whole text we matched

오래되고 흥미로운 답변 :

:se nows
Vuò~h2/á


2

CJam , 26 24 바이트

qeu{_'[,65>&,T^:T{el}&}%

온라인으로 사용해보십시오!

설명

q         e# Read all input.
eu        e# Uppercase it.
{         e# For each character:
 _        e#  Duplicate it.
 '[,65>&  e#  Set intersection with the uppercase alphabet.
 ,        e#  Length (either 0 or 1 in this case).
 T^:T     e#  XOR with T (T is initially 0), then store the result back in T.
 {el}&    e#  If The result of the XOR is true, lowercase the character.
}%        e# (end for)

2

Pyth, 11 바이트

srR~xZ}dGrZ

여기 사용해보십시오

설명

              # Z = 0; Q = eval(input())
srR~xZ}dGrZQ  # Auto-fill variables
         rZQ  # lowercase the input
 rR           # Apply the r function to each letter of the input with
   ~xZ}dG     # ... this as the other argument
   ~          # use the old value of the variable Z, then update it with the value of ...
    xZ        # Z xor ...
      }dG     # the variable d is a lowercase letter
              # because of how mapping works in pyth, d will contain the current letter
              # This causes Z to flip between 0 and 1, alternately upper and lower casing
              # the current character if it is a letter

2

PowerShell, 86 바이트

-join($args[0]|%{if($_-match"[a-z]"-and($i=!$i)){"$_".toupper()}else{"$_".tolower()}})

입력은 [char[]]배열입니다.

설명을위한 코드 주석

# Join the array of string and char back together.
-join
    # Take the first argument and pass each element ([char]) down the pipe. 
    ($args[0]|%{
        # Check if this is a letter. Second condition is a boolean that changes at every pass 
        # but only if the current element is a letter. If not the condition never fires
        if($_-match"[a-z]"-and($i=!$i)){
            # Change the character to uppercase
            "$_".toupper()
        }else{
            # Output the character to lowercase. 
            # Special characters are not affected by this method
            "$_".tolower()
        }
    })

2

Haskell, 105 83 + 2 4 + 1 바이트의 구분 기호 = 108 86 88 바이트

import Data.Char
f#(x:y)|isLetter x=([toUpper,toLower]!!f)x:(1-f)#y|1>0=x:f#y
_#l=l

기능은 (1#)이며 소문자로 시작합니다. 온라인으로 사용해보십시오!

슬픈 점은 이것이 자바와 C #보다 길다는 것입니다. Ørjan Johansen 덕분에 3 줄을 하나로 묶어 22 바이트를 절약 할 수있었습니다!


2
나는조차 시도하지 않았다 그래서 그 긴 가져 오기 기능을 필요로했다 ...하지만 당신은 몇 줄을 병합 할 수 있습니다, 조금 더있다 :f#(x:y)|isLetter x=([toUpper,toLower]!!f)x:(1-f)#y|1>0=x:f#y
— Ørjan 요한센

nitpicking은 유감이지만 1#익명 함수로 간주되지 않습니다. 내 이해에 따르면 익명 함수를 식별자에 바인딩 할 수 있어야하지만 f=1#작동하지 않습니다. 대신 (1#)+2 바이트에 대한 섹션이 필요합니다 . 이것은 Haskell의 골프에 대한 커뮤니티 가이드 에도 암시 적으로 언급되어 있지만,이 경우를 명시 적으로 언급하도록 조정해야 할 수도 있습니다.
— Laikoni

@Laikoni ok, 답변 업데이트
— 일반 표시 이름

2

Google 스프레드 시트, 264 바이트

=ArrayFormula(JOIN("",IF(REGEXMATCH(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1),"[A-Za-z]"),CHAR(CODE(UPPER(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)))+MOD(LEN(REGEXREPLACE(LEFT(A1,ROW(OFFSET(A1,0,0,LEN(A1)))),"[^A-Za-z]","")),2)*32),MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1))))

큰 혼란이지만 확장하면 조금 더 쉽습니다.

=ArrayFormula(
  JOIN(
    "",
    IF(REGEXMATCH(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1),"[A-Za-z]"),
      CHAR(
        CODE(UPPER(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)))
        +
        MOD(LEN(REGEXREPLACE(LEFT(A1,ROW(OFFSET(A1,0,0,LEN(A1)))),"[^A-Za-z]","")),2)*32
      ),
      MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)
    )
  )
) 

의사 논리는 다음과 같이 실행됩니다.

For each character {                                    // ArrayFormula()
  If (character is a letter) {                          // REGEXMATCH(MID())
    Return CHAR(                                        // CHAR()
      CODE(UPPER(letter))                               // CODE(UPPER(MID()))
      +
      If (nth letter found and n is odd) {32} else {0}  // MOD(LEN(REGEXREPLACE(LEFT())))
    )
  } else {
    Return character                                    // MID()
  }
}

2

펄 5 , 24 바이트

용 1 바이트 + 23 바이트 -p.

-2 바이트에 대한 @Dada 덕분 입니다.

s/\pl/--$|?uc$&:lc$&/eg

온라인으로 사용해보십시오!


산뜻한. 2 바이트 \pl대신 [a-z]tho :)
— Dada

@Dada, 나는 그것을 정말로 몰랐다! 나는 그것을 어떻게 몰랐다!! 감사합니다!
— Dom Hastings

나는 Ton Hospel에서 그것을 배웠다고 생각하고 지금 그것을 사용합니다 (실제로는 너무 자주 잊어 버리고 [a-z]대신 사용하는 경향이 있습니다 !). 궁금하다면 perlrecharclass 에서 온 것입니다 .)
— Dada


1

C 64 바이트

B;R(char *s){for(;*s=isalpha(*s)?(B=!B)?*s|=32:*s&=~32:*s;s++);}

대문자와 소문자가 0x20으로 오프셋되는 ASCII 인코딩을 활용합니다.


char와 '사이에' '공간이 필요하지 않습니다*s
— cleblanc

이것은 @cleblanc의 답변 과 매우 유사합니다 .
— Digital Trauma

@cleblanc의 게시물이 toUpper () 및 toLower ()를 사용할 때 게시했습니다.
— user230118

1
이 접근법 을 제안하는 내 의견 은 18 : 29 : 34Z입니다. 이것을 통합하기위한 cleblanc의 편집 은 18 : 37 : 36Z였습니다. 귀하의 답변은 18 : 38 : 21Z에 게시되었습니다. 클레 블랑의 답변이 게시물 1 분 전에 완료된 것 같습니다. 귀하의 답변은 제 제안과 매우 유사하지만 코드 골프의 본질이라고 생각합니다. 종종 같은 언어의 솔루션이 같은 것으로 수렴되므로 슬라이드하겠습니다.)
— Digital Trauma

1

레티 나 , 32 바이트

T`l`L
01T`L`l`[A-Z][^A-Z]*[A-Z]?

온라인으로 사용해보십시오!

먼저 입력을 대문자로 변환 한 다음 입력을 최대 2 개의 대문자를 포함하는 일치 항목으로 그룹화합니다. 마지막 문자에 쌍이없는 경우에만 문자가 하나만 포함됩니다. 그런 다음 각 일치 항목의 첫 글자를 소문자로 사용합니다.

01두 번째 단계에서 대략로 번역 : 경기의 수에 따라이 단계의 동작을 변경할 수 있지만, 각 경기의 첫 번째 문자로 변경 사항을 적용하지 않는다.


1

PHP 5, 54 바이트

<?=preg_filter('/\pL/e','($0|" ")^a^aA[$i^=1]',$argn);

1

C #, 100 바이트

s=>{var r="";int m=0;foreach(var c in s)r+=char.IsLetter(c)?(char)(++m%2>0?c|32:c&~32):c;return r;};



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