줄의 분해도


39

기계 또는 물체가 가장 작은 조각으로 분해 되는 분해도 를 좋아하지 않습니까?

여기에 이미지 설명을 입력하십시오

그것을 문자열로하자!

도전

프로그램이나 기능을 작성하십시오

  1. 인쇄 가능한 ASCII 문자 만 포함하는 문자열을 입력합니다 .
  2. 문자열을 공백이 아닌 문자 그룹 ( 문자열 의 "조각")으로 분리합니다.
  3. 그룹 사이에 구분 기호를 사용 하여 편리한 형식으로 해당 그룹을 출력 합니다 .

예를 들어, 주어진 문자열

Ah, abracadabra!

출력은 다음과 같습니다.

!
,
에이
aaaaa
bb
씨
디
h
rr

출력의 각 그룹에는 공백이 제거 된 동일한 문자가 포함됩니다. 줄 바꿈은 그룹 간 구분 기호로 사용되었습니다. 허용되는 형식에 대한 자세한 내용은 아래를 참조하십시오.

규칙

입력 문자열 또는 문자의 배열되어야한다. 인쇄 가능한 ASCII 문자 만 포함합니다 (공백에서 물결표까지 포함). 해당 언어가 지원하지 않으면 ASCII 코드를 나타내는 숫자 형식으로 입력 할 수 있습니다.

입력에 공백이 아닌 문자가 하나 이상 있다고 가정 할 수 있습니다 .

출력 구성되어야 (입력은 ASCII 코드에 의해 인 경우에도). 입력 사이에 나타날 수있는 공백이 아닌 문자와는 다른 그룹 사이에 분명한 구분 기호 가 있어야합니다.

출력이 함수 반환을 통해 출력되는 경우 배열 또는 문자열 또는 문자 배열 배열 또는 유사한 구조 일 수도 있습니다. 이 경우 구조는 필요한 분리를 제공합니다.

각 그룹의 문자 사이 의 구분 기호 는 선택 사항 입니다. 하나가 있으면 동일한 규칙이 적용됩니다. 입력에 나타날 수있는 공백이 아닌 문자 일 수 없습니다. 또한 그룹간에 사용 된 것과 동일한 구분 기호가 될 수 없습니다.

그 외에는 형식이 유연합니다. 여기 몇 가지 예가 있어요.

  • 그룹은 위에 표시된 것처럼 줄 바꿈으로 구분 된 문자열 일 수 있습니다.

  • 그룹은와 같은 비 ASCII 문자로 구분 될 수 있습니다 ¬. 위의 입력에 대한 출력은 다음과 같습니다.

    !¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
    
  • 그룹은 n > 1 공백 으로 구분 될 수 있으며 ( n 은 가변적 임에도 불구하고 ) 각 그룹 사이의 문자는 단일 공백으로 구분됩니다.

    !  ,    A   a a a a a    b b  c       d   h  r r
    
  • 출력은 함수에 의해 반환 된 배열 또는 문자열 목록 일 수도 있습니다.

    ['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
    
  • 또는 char 배열의 배열 :

    [['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
    

규칙에 따라 허용되지 않는 형식의 예 :

  • !,,,A,a,a,a,a,a,b,b,c,d,h,r,r입력에 쉼표가 포함될 수 있으므로 쉼표를 구분 기호 ( ) 로 사용할 수 없습니다 .
  • 그룹 간 구분 기호 ( !,Aaaaaabbcdhrr)를 삭제하거나 그룹 간 및 그룹 내에서 동일한 구분 기호 ( )를 사용하는 것은 허용되지 않습니다 ! , A a a a a a b b c d h r r.

그룹은 출력 에서 임의의 순서 로 나타날 수 있습니다 . 예를 들어 : 알파벳 순서 (위의 예에서와 같이), 문자열에서 처음 나타나는 순서, ... 순서가 일관되거나 결정론적일 필요는 없습니다.

입력이 개행 문자를 포함하고 수 없습니다 Aa다른 문자입니다 (그룹화는 대소 sentitive ).

바이트 단위의 최단 코드가 이깁니다.

테스트 사례

각 테스트 사례에서 첫 번째 라인이 입력되고 나머지 라인은 출력이며 각 그룹은 다른 라인에 있습니다.

  • 테스트 사례 1 :

    아, 아브라카 다 브라!
    !
    ,
    에이
    aaaaa
    bb
    씨
    디
    h
    rr
    
  • 테스트 사례 2 :

    \ o / \ o / \ o /
    ///
    \\\
    ooo
    
  • 테스트 사례 3 :

    사람, 계획, 운하 : 파나마!
    !
    ,,
    :
    에이
    피
    으아 아
    씨
    ll
    mm
    nnnn
    피
    
  • 테스트 사례 4 :

    "내가 비명을 지르는 방법을 보여줘"그녀는 말했다.
    ""
    ,
    에스
    aaaaa
    cc
    dd
    eeeeeee
    hhh
    ii
    kk
    음
    엔
    ooooo
    rr
    ssss
    tttttt
    유
    W w
    와이
    

1
"¬"와 같은 비 ASCII 기호를 구분 기호로 사용하는 경우 1 바이트로 계산할 수 있습니까?
Leaky Nun

5
@LeakyNun 아니요, 평소처럼 소스 코드에 사용 된 인코딩에 따라 해당되는 것으로 간주됩니다.
Luis Mendo

마지막 그룹 다음에 오는 줄 바꿈이 허용됩니까?
JustinM-복원 모니카

선두 줄 바꿈이 허용됩니까?
DJMcMayhem

1
@RohanJhunjhunwala 잘 했어요! :-) 예, 구분 기호로 여러 줄 바꿈 괜찮
루이스 Mendo

답변:



23

Python 3.5 이상, 77 46 44 41 바이트

lambda s:[a*s.count(a)for a in{*s}-{' '}]

꽤 간단합니다. 문자열에서 고유 한 문자를 집합으로 변환하여 (Python 3.5의 확장 된 반복 압축 풀기를 사용하여) 문자열 이해를 사용하여 목록 이해를 사용하여 문자열에서 각 문자가 발생하는 횟수를 세어 분해 된 다이어그램을 구성합니다 str.count. 세트에서 공백을 제거하여 공백을 걸러냅니다.

출력 순서는 실행마다 다를 수 있습니다. 세트는 순서가 없으므로 항목이 처리되는 순서이므로이 응답 출력을 보장 할 수 없습니다.

이것은 람다 식입니다. 그것을 사용하려면 접두사 lambda로 시작하십시오 f=.

Ideone에서 사용해보십시오! Ideone은 충분하지 않은 Python 3.4를 사용합니다.

사용 예 :

>>> f=lambda s:[a*s.count(a)for a in{*s}-{' '}]
>>> f('Ah, abracadabra!')
[',', 'A', 'aaaaa', 'd', '!', 'bb', 'h', 'c', 'rr']

@shooqie 덕분에 3 바이트가 절약되었습니다!


3
1k 축하합니다!
Luis Mendo

2
파이썬> 3.5 당신은 할 수 있습니다 {*s}에 대한 set(s).
shooqie

11

레티 나, 13 바이트

O`.
!`(\S)\1*

정렬은 매우 쉽습니다 (내장되어 있음). 9 바이트가 걸리는 문자를 분리합니다. 온라인으로 사용해보십시오!

첫 번째 줄 O은 정규식 .(모든 문자) 과 일치 하는 모든 항목을 우리에게 제공합니다 !,Aaaaaabbcdhrr.

일치는 프로그램의 마지막 줄의 기본 단계이며 !줄 바꿈으로 구분 된 정규식 일치 목록을 인쇄합니다. 정규식은 행에서 공백이 아닌 문자의 하나 이상의 인스턴스를 찾습니다.


무엇입니까! 하다?
Downgoat


8

펄 6 , 28 바이트

*.comb(/\S/).Bag.kv.map(*x*)

참고 가방 유사한 해시 또는 세트 결과의 순서가 보장되지 않도록 정렬되지 않은 것입니다.

설명:

# Whatever lambda 「*」


# grab the characters
*.comb(
  # that aren't white-space characters
  /\S/
)
# ("A","h",",","a","b","r","a","c","a","d","a","b","r","a","!")


# Turn into a Bag ( weighted Set )
.Bag
# {"!"=>1,","=>1,"A"=>1,"a"=>5,"b"=>2,"c"=>1,"d"=>1,"h"=>1,"r"=>2}


# turn into a list of characters and counts
.kv
# ("!",1,",",1,"A",1,"a",5,"b",2,"c",1,"d",1,"h",1,"r",2)


# map over them 2 at a time
.map(
  # string repeat the character by the count
  * x *
)
# ("!",",","A","aaaaa","bb","c","d","h","rr")

7

Vim, 50 , 46 바이트

i <esc>:s/./&\r/g
:sor
qq:%s/\v(.)\n\1/\1\1
@qq@qD

설명 / gif는 나중에 올 것입니다.


1
한 번은 Emacs & vim 솔루션이 비슷해 보입니다.
YSC

7

피스, 6

.gk-zd

여기에서 시도 하거나 테스트 스위트를 실행 하십시오 .

매우 간단 -zd하고 입력에서 공백을 제거하고 .gk나머지 각 요소를 값으로 그룹화합니다. 불행히도 자동 채우기 변수를 사용하는 방법을 찾지 못했습니다. 출력은 Python 문자열로 표시되므로 특정 문자 (백 슬래시)가 이스케이프됩니다. 더 읽기 쉽게 j하려면 코드의 시작 부분에를 추가하십시오 .


7

하스켈, 38 바이트

f s=[filter(==c)s|c<-['!'..],elem c s]

기본적으로 nimi의 솔루션 이지만 문자열에 나타나는 문자 만 명시 적으로 검사합니다.


6

2sable , 7 바이트

암호:

Úð-vyÃ,

설명:

Ú       # Uniquify the string, aabbcc would result into abc
 ð-     # Remove spaces
   vy   # For each character...
     Ã  #   Keep those in the string, e.g. 'aabbcc', 'a' would result into 'aa'
      , #   Pop and print with a newline

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


3
그건 전혀 데니스처럼 들리지 않습니다 :-P
Luis Mendo

6

자바 스크립트 (ES6), 41 바이트

s=>[...s].sort().join``.match(/(\S)\1*/g)

이로 인해 " "반환 된 배열 에도 항목 이 존재하지 않습니까? 허용되는지 확실하지 않음
Value Ink

@ValueInk Bah, 나는 시작할 때 그것에 대해 생각했지만 즉시 잊었습니다. 지금 수정했습니다.
Neil

음, 어떻게 join()이중 배킹으로 불려지고 있습니까?
Tejas Kale

1
@TejasKale ES6 템플릿 문자열입니다. 메소드를 템플리트 문자열에 접 두부로 지정하면 템플리트가 메소드의 배열로 메소드에 전달되므로이 경우 호출 .join([''])합니다. join그런 다음 문자열을 (빈) 문자열로 변환하고이를 사용하여 배열 요소를 결합합니다. 모든 메소드가 매개 변수를 문자열로 변환하는 것은 아니지만이 기술은 유용한 방법입니다.
Neil


5

하스켈, 40 바이트

f x=[v:w|d<-['!'..],v:w<-[filter(==d)x]]

사용 예 : f "Ah, abracadabra!"-> ["!",",","A","aaaaa","bb","c","d","h","rr"].

패턴 v:w은 하나 이상의 요소가있는 목록과 만 일치하므로 입력에없는 모든 문자는 무시됩니다.

또한 40 바이트 :

import Data.List
group.sort.filter(>' ')

@ThreeFx :하지만 group에서 온 것 Data.List입니다. 어쨌든이 구문은 ghciREPL 만 필요 하다고 생각 하므로 자체 언어입니다 . 표준 Haskell을 고수하고 싶습니다.
nimi

4

루비, 41 + 1 = 42 바이트

-n플래그의 경우 +1 바이트

gsub(/(\S)(?!.*\1)/){puts$1*$_.count($1)}

stdin에서 입력을받습니다. 예 :

$ echo 'Ah, abracadabra!' | ruby -ne 'gsub(/(\S)(?!.*\1)/){puts$1*$_.count($1)}'
A
h
,
c
d
bb
rr
aaaaa
!

4

C # 125 98 바이트

using System.Linq;s=>s.GroupBy(c=>c).Where(g=>g.Key!=' ').Select(g=>new string(g.Key,g.Count())));

설명

//Using anonymous function to remove the need for a full signature 
//And also allow the implicit return of an IEnumerable
s =>

    //Create the groupings
    s.GroupBy(c => c)

    //Remove spaces
    .Where(g=> g.Key!=' ')

    //Generate a new string using the grouping key (the character) and repeating it the correct number of times
    .Select(g => new string(g.Key, g.Count()));
  • 익명 함수 사용을 제안한 @TheLethalCoder 덕분에 ToArray호출 을 제거하고 27 바이트를 총괄적으로 저장하는 IEnumerable을 암시 적으로 반환 할 수있었습니다.

당신은 18 바이트를 (정확하게 계산하면) Func<string, string[]>즉 , 그것을 컴파일하여 절약 할 수 있습니다s=>s.GroupBy....
TheLethalCoder

@TheLethalCoder 함수 대신 수용 할 수 있다고 확신합니까, 나는 그것을 실행할 수있는 여분의 상용구를 추가하고 Linq를 사용하여 Linq를 요구한다는 주장과 함께 항상주의해야합니다. ... 잘못.
JustinM-복원 모니카

최근에 수행 한 예제는 다음과 같습니다. codegolf.stackexchange.com/a/91075/38550 함수가 허용되는 한 모든 상용구를 제거합니다
TheLethalCoder

@ TheLethalCoder OK 나에게 충분합니다. :) 또한 ToArray 호출을 제거 할 수있었습니다
JustinM-Reinstate Monica

4

R, 198 (189) 96 95 바이트

for(i in unique(a<-strsplit(gsub(" ","",readline()),"")[[1]]))cat(rep(i,sum(a==i)),"\n",sep="")

언 골프 :

a<-strsplit(gsub(" ","",readline()),"")[[1]] #Takes the input from the console

for(i in unique(a)) #loop over unique characters found in variable a

cat(rep(i,sum(a==i)),"\n",sep="") # print that character n times, where n was the number of times it appeared

이 솔루션은 현재 완전히 작동하지 않습니다 \.
지금이야 !

감사 많게 밖으로 골프에 대한 @JDL 당신을 102 바이트를!


@JDL : 의견에 수정 사항을 제안하십시오. 변경 사항은 정말 흥미롭지 만 다른 사람의 코드를 변경하는 것은 다소 무례합니다.
프레데릭

1
그 점에 대해 사과했지만 그 당시에는 50 명의 평판을 얻지 못했으며 의견을 말할 수 없었습니다. 그래도 앞으로 할 것입니다!
JDL

@JDL : 충분히 공정하다!
프레데릭

함수 안에 변수를 할당 해보십시오. for(i in unique(a=strsplit(gsub(" ","",readline()),"")[[1]]))cat(rep(i,sum(a==i)),"\n",sep="")— 2 바이트를 절약합니다.
Andreï Kostyrka

@ AndreïKostyrka : 대괄호 사이에 전체 a = strsplit (...) 부분을 넣어야하기 때문에이 형식으로 바이트를 저장하지 않습니다. 기본적으로 -2 + 2 차이가 있습니다. 그러나를 사용 <-하면 1 바이트가 절약됩니다!
프레데릭

4

스위프트, 105 91 바이트

14 바이트에 대한 @NobodyNada 덕분에 :)

예, 저는 스위프트를 처음 접했습니다.

func f(a:[Character]){for c in Set(a){for d in a{if c==d && c != " "{print(c)}}
print("")}}

그룹 내의 문자는 단일 줄 바꿈으로 구분됩니다. 그룹은 두 줄 바꿈으로 구분됩니다.


규칙에 "입력은 문자열 또는 문자 배열이어야합니다."라는 규칙이 있으므로 입력 [Character]대신 을 입력하여 13 바이트를 절약 할 수 있습니다 String. 또한 print("")로 교체 할 수 있습니다 print().
NobodyNada-복원 모니카

@NobodyNada print는 논쟁의 여지가 없었지만 [Character]제안은 확실했습니다. 감사!
jrich

3

옥타브 , 61 바이트

@(x)mat2cell(y=strtrim(sort(x)),1,diff(find([1 diff(+y) 1])))

이것은 문자열을 입력으로 받아 문자열의 셀 어레이를 출력하는 성가신 함수입니다.

Ideone에서보십시오 .

작동 원리

  • sort입력 문자열을 정렬합니다. 특히 공백은 시작 부분에 있습니다.
  • strtrim 선행 공백을 제거합니다.
  • diff(+y) 그룹 경계를 감지하기 위해 문자 간의 연속적인 차이를 계산합니다.
  • ... 그래서 diff(find([1 diff(+y) 1])그룹 크기의 벡터를 제공합니다.
  • mat2cell 그런 다음 정렬 된 문자열을 해당 크기의 청크로 나눕니다.

3

수학, 36 바이트

기능을 내장 Gather하고 Characters여기에 대부분의 작업을 수행합니다.

Gather@Select[Characters@#,#!=" "&]&

3

> <> , 49 바이트

i:0(?v
84}0~/&{!*
v!?: <}/?=&:&:<
>&1+&}aol1-?!;^

출력에서 매우 넓게 낭비되지만 규칙의 관대함을 감안할 때 여전히 허용된다고 가정합니다.

설명:

i:0(?v           Collects text from input
84}0~/&{!*       adds 32 (first ascii starting at space) to register and 0 to stack
v!?: <}/?=&:&:<  checks all characters to the current register, if equal:
       o         prints the character and continues looping
>&1+&}aol1-?!;^  when all characters are checked, adds 1 to register, prints a newline,
                 checks the stack length to halt the program if 0, and starts looping again

포인터를 세로로 실행할 수 있도록 점프를 사용하여 일부 기능을 사용하는 경우에도 일부를 아주 단단히 고정하십시오.

기본적으로 이것은 각 ASCII 문자를 자체 줄 바꿈에 넣고 해당 문자가 없으면 줄이 비어 있습니다.

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

편집 : 코드에 오류가있어 입력에 공백이 있으면 완료되지 않는 오류가 잘못되었습니다


3

Pyth, 5 바이트

.gksc

여기 사용해보십시오!

입력을 파이썬 문자열로 가져옵니다 (즉, 필요에 따라 따옴표, 이스케이프 된 따옴표 및 슬래시로 묶음).

설명:

    c    Split (implied) input on whitespace
   s     Sum together
.gk      Group by value

입력에서 하나 이상의 공간을 보장하는 경우 4 바이트 솔루션이 있습니다.

t.gk

여기 사용해보십시오!

설명:

 .gk (Q)  groups the characters in the string by their value
           this sorts them by their value, which guarantees that spaces are first
t         Remove the first element (the spaces)

3

PowerShell v2 +, 44 바이트

[char[]]$args[0]-ne32|group|%{-join$_.Group}

입력 $args[0]을 명령 행 인수 리터럴 문자열로 사용합니다. 이를 char배열 로 캐스트 하고 -not equal 연산자를 사용하여 공백을 가져옵니다 (ASCII 32). 이것은 캐스팅이 우선 순위가 높기 때문에 작동하며 배열이 스칼라를 오른쪽으로 사용하여 왼쪽 연산자로 사용하면 필터처럼 작동합니다.

우리는 그 문자 배열을에 전달합니다 Group-Object. 문자열이 아닌 문자를 전달하기 때문에 대소 문자를 구분하여 올바르게 그룹화합니다.

이제 그룹 이름, 개수 등을 가진 커스텀 객체가 생겼습니다. 그냥 인쇄하면 많은 외부 출력이 생깁니다. 그래서, 우리는 파이프 루프에 그 필요 |%{...}와 각 반복 단일 문자열로 함께. 결과 문자열은 파이프 라인에 남아 있으며 프로그램 완료시 출력이 내재됩니다.-join.Group

PS C:\Tools\Scripts\golfing> .\exploded-view-of-substrings.ps1 'Programming Puzzles and Code Golf'
PP
rr
ooo
gg
aa
mm
i
nn
u
zz
ll
ee
s
dd
C
G
f


2

처리, 109 바이트

void s(char[] x){x=sort(x);char l=0;for(char c:x){if(c!=l)println();if(c!=' '&&c!='\n'&&c!='\t')print(c);l=c;}}

무차별 대입 방식으로 배열을 정렬 한 다음 반복합니다. 마지막으로 인쇄 된 문자와 일치하지 않으면 먼저 줄 바꿈을 인쇄하십시오. 공백이면 인쇄 단계를 건너 뜁니다.


2

자바 스크립트 (외부 라이브러리 사용-열거 가능) ( 78 67 바이트)

 n=>_.From(n).Where(y=>y!=' ').GroupBy(x=>x).WriteLine(y=>y.Write())

lib에 링크 : https://github.com/mvegh1/Enumerable

코드 설명 : Enumerable이 수행 한 작업입니다! 문자열을 라이브러리에로드하면 문자열이 char 배열로 변환됩니다. 공백 항목을 필터링하십시오. 문자별로 그룹화합니다. 지정된 술어에 따라 각 그룹을 한 줄에 쓰십시오. 이 술어는 현재 그룹의 모든 요소를 ​​구분 기호없이 문자열로 결합한다고 말합니다.

여기에 이미지 설명을 입력하십시오



2

펄 6, 48 47 45

slurp.comb.Bag.kv.map:{$^a.trim&&say $a x$^b}

개선을위한 manatwork에 감사합니다.


1
큰 개선은 아니지만 $a.trim조건을 위해 그것을하는 것 같습니다.
manatwork

논리 연산자는 여전히 주위에 공백이 필요하지 않으므로 $^a.trim&&say $a x$^b작동합니다. (바이트 단위로 힌트를 추가 한 것은 유감이지만 이것이 Perl6에 대한 첫 번째 시도입니다.)
manatwork

작은 오타, 당신은 실수로 오프닝을 제거했습니다 {.
manatwork

1

루비, 46 바이트

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

->s{(s.chars-[' ']).uniq.map{|c|c*s.count(c)}}

내 원래의 전체 프로그램 버전, n플래그를 추가 한 후 48 바이트 :

p gsub(/\s/){}.chars.uniq.map{|c|c*$_.count(c)}

당신은 대체 할 수 .count(c)와 함께 .count c?
Cyoce

@Cyoce no. *운영자가 근처에 있기 때문에 파서가 불평 할 것입니다.
가치 잉크

괄호 안의 s.chars- [ ''] | []는 uniq를 피할 것입니다
GB

@GB 그렇습니다. 그러나 연결하는 경우 map여분의 parens가 필요 ((s.chars-[' '])|[]).map하며와 같은 문자 수를 갖습니다 (s.chars-[' ']).uniq.map. 그리고 (정규식을 통해) 고유의 문자를 확인하는 다른, 짧은 방법은 이미 다른 대답 @Jordan에 의해 덮여있다
값 잉크

괄호 안에서 작동 하며 '-'의 우선 순위가 높기 때문에 추가 괄호가 필요하지 않습니다.
GB

1

파이썬, 107

람다로 단축 될 수 있지만 나중에

x=sorted(input())
i=0
while i<len(x):x[i:]=['  '*(x[i]!=x[i-1])]+x[i:];i-=~(x[i]!=x[i-1])
print("".join(x))

1

CJam, 10 바이트

{S-$e`::*}

스택 맨 위에 문자열을 예상하고이를 문자열 목록으로 바꾸는 명명되지 않은 블록입니다.

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

설명

S-  Remove spaces.
$   Sort.
e`  Run-length encode, gives pairs [R C], where R is the run-length and
    C is the character.
::* Repeat the C in each pair R times.

1

커먼 리스프, 123

(lambda(s &aux(w(string-trim" "(sort s'char<))))(princ(elt w 0))(reduce(lambda(x y)(unless(char= x y)(terpri))(princ y))w))

언 골프 드 :

(lambda (s &aux (w (string-trim " " (sort s 'char<))))
  (princ (elt w 0))
  (reduce
    (lambda (x y) 
      (unless (char= x y) (terpri))
      (princ y))
  w))

골프 친화적 인 언어는 아닙니다. 문자열을 인쇄하는 대신 목록 목록을 반환하도록 수정되었을 수 있습니다.


1

이맥스, 36 번의 키 스트로크

C-SPACE C-EM-xsort-rTABRETURN.RETURN.RETURNC-AC-M-S-%\(\(.\)\2*\)RETURN\1C-QC-JRETURN!

결과

A man, a plan, a canal: Panama! ->

!
,,
:
A
P
aaaaaaaaa
c
ll
mm
nnnn
p

설명

  1. C-SPACE C-E
  2. M-x sort-rTAB RETURN .RETURN .RETURN
  3. C-A
  4. C-M-S-% \(\(.\)\2*\)RETURN\1 C-Q C-JRETURN !

  1. 입력 라인을 선택하십시오.
  2. 전화 sort-regexp-fields인수 ..;
    • 인수 # 1 : 정렬 할 정규식 레코드 레코드
    • 인수 # 2 : 레코드 내의 정규식 scpecifying 키
  3. 라인 시작시 리턴;
  4. 모든 일치에 정규 표현식 대체 \(\(.\)\2*\)-> \1\n를 적용하십시오 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.