자신의 자리에 앉기


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.