두 줄에서 한 줄로 주입


14

도전

순서화 된 문자열 쌍을 입력으로 사용하고 하나의 문자열을 출력으로 사용하는 주입 기능을 적용하는 프로그램을 작성하십시오. 즉, 각 입력은 고유 한 출력에 매핑되어야합니다.

사양

  • 입력이 될 수 있는 임의의 길이의 두 문자열 만 인쇄 가능한 ASCII 문자 (코드 구성된다 ).[32,126]
  • 마찬가지로 출력 문자열에는 길이 제한이 없지만 인쇄 가능한 ASCII 문자로만 구성되어야합니다.
  • 언어가 임의 길이의 문자열을 처리 할 수없는 경우 프로그램은 이론적 으로 모든 크기의 문자열에 대해 작동 할 수 있습니다 .
  • 입력에서 출력으로의 매핑은 프로그램 실행간에 일관되어야합니다. 그렇지 않으면, 당신이 사용하는 매핑은 그것이 주입 인 한 완전히 당신에게 달려 있습니다.
  • 입력이 주문되었습니다. 두 입력 문자열이 다른 경우 교체 된 것과 다른 출력을 생성해야합니다. 에스에프(에스,)에프(,에스)
  • 모든 문자열이 가능한 출력 일 필요는 없습니다.
  • 각 언어에서 가장 짧은 답변이 이깁니다!

테스트 사례

다음 입력은 모두 다른 출력을 가져야합니다. 혼동을 피하기 위해 끈은 길레 메트 («»)로 묶고 단일 공백으로 구분합니다.

«hello»«world»
«lelho»«drowl»
«디프»«_rent»
«notth»«같은»

«코드»«골프»
«Co»«deGolf»
«CodeGolf»«»

«»«»
«»«»
«»«»
«»«»
«»«»

«abc ",»«def»
«abc»«, "def»
«abc '»«'def»
«abc '»«'def»

«\»« "»
«\\»«\ "»

8
흠 나는 방금 "프로그램 쓰기 ..."라는 것을 알아 차렸다. 메타 합의에 의해 (현재 46 위로, 1 아래로) "프로그램만을 제한하려면"프로그램 "보다는"전체 프로그램 "을 명시 적으로 지정해야한다 . 나는 당신이 이것을 제한하려고 시도하지 않았기를 희망하지만, 그렇게했다면 그에 따라 게시물을 업데이트하고 이미 답변으로 기능을 제출 한 우리의 게시물을 처리해야합니다.
Jonathan Allan

4
@JonathanAllan 의도는 기능을 허용하는 것이 었습니다.
부정 7

3
문자열 중 하나를 비울 수 있습니까?
얽히고 설킨

2
@Shaggy 예, 둘 다 가능합니다.
부정 7 7

1
테스트 사례가 있습니까? 감사!
ouflak

답변:


17

brainfuck, 30 29 27 23 바이트

,[-[+.>]-[>+<---]>.-.,]

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

입력은 0x01바이트 로 구분됩니다 .

이 회전 ["foo", "bar"]fUToUToUTUTbUTaUTrUT. 원래 두 문자열을 복구하려면 3 자로 구성된 그룹을 가져 와서 두 번째 문자가 아닌 문자열을 찾아 U분리하십시오.


@Grimy 죄송합니다. "입력은 0x01 바이트로 구분됩니다."
wastl

15

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

입력을 2 개의 문자열 배열로 취합니다. Luis의 답변에서 영감을 얻었습니다 .

JSON.stringify

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


자바 스크립트 (ES6),  21  20 바이트

로 입력을 (a)(b)받습니다.

a=>b=>[a.length,a]+b

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

의 길이와 쉼표, 의 연결을 반환합니다 .


젠장! stringify트릭을 직접 사용하려고했습니다 !
얽히고 설킨

휴식과 a="hello","" b="world"a="hello" b="","world"
솔레

1
@Soleil 즉 줄 것 ["\"hello\",\"\"","\"world\""]하고 ["\"hello\"","\"\",\"world\""].
Arnauld

1
@Arnauld 백 슬래시 보호는 보이지 않습니다. 기능이 주입되지 않습니다.
Soleil

1
@ 솔레 나는 당신이 무슨 뜻인지 이해하지 못합니다. JSON.stringify()확실히 탈출 ". 16 진수 덤프를 참조하십시오 .
Arnauld

15

jq -c, 0 바이트

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

이건 분명히 속임수처럼 느껴지는데 ...? 그러나 도전의 규칙을 따르는 것 같습니다.

기본적 jq으로 입력은 사람이 읽을 수있는 JSON 형식으로 출력됩니다. -c(소형) 플래그를 알려줍니다 jq(도전은 비 인쇄 가능한 ASCII 금지 이후)에 줄 바꿈을 제거 "소형"스타일에 출력.


1
OP는 빈 입력을 허용하므로 a = "", b = "x"는 a = "x"와 동일한 출력을 제공합니다. b = ""
Gnudiff

3
@Gnudiff 어떻게 그렇게? 그들은 줄 것 ["","x"]["x",""]각각
손잡이

1
죄송합니다.
Gnudiff


5

Japt -S , 3 바이트

나는 여전히 여기에 뭔가 빠져 있어야한다고 생각합니다 ...

®mc

시도 해봐

아마도 2 바이트 :

mq

시도 해봐

또는이 1 바이트로 늘리십시오.

U

시도 해봐

첫 번째 버전은 배열의 각 문자열을 해당 코드 포인트에 매핑하여 공백과 결합하여 출력합니다.

두 번째 버전은 각 문자열을 문자형 배열로 분리하여 공백과 결합하여 출력합니다.

그리고 부정 행위처럼 느껴지는 세 번째 버전은 -Q플래그를 사용 하여 입력을 출력 srringify합니다.


5

Pyth , 4 바이트

jNmC

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

이렇게하면 각 문자열을 기본 256으로 변환 한 다음을 순서대로 조인합니다 ". 결과는 각각 숫자이므로 "명확하게 구분하고 원래 문자열을로 복구 할 수 있습니다 mCsdczN.


1
@AndersKaseorg는 1 바이 터를 제안합니다 .
Kevin Cruijssen 's

@KevinCruijssen 나는 이것을 게시한지 몇 분이 지난 후에이 솔루션의 정신을 선호한다는 것을 알고있었습니다. 어쨌든 그것을 가져 주셔서 감사합니다, 그리고 확실히 자신을 게시 자유롭게 :)
FryAmTheEggman

나는 당신의 대답도 더 좋아합니다. :) 그리고 아, 나는 Pyth조차 모른다. 원한다면 별도의 답변 (또는이 답변을 편집하여 결합 된 답변)으로 직접 게시 할 수 있습니다. 그렇지 않으면 Anders Kaseorg 는 의견에 언급 한 사람이기 때문에 게시 할 수 있습니다.
Kevin Cruijssen 님의

4

T-SQL, 38 바이트

SELECT QUOTENAME(a)+QUOTENAME(b)FROM i

나는varchara

용도 QUOTENAME로 문자열을 둘러싸는, []또한 내부 브래킷 탈출. 고유 한 출력에 매핑해야합니다.


1
MySQL에서 동일한 길이 : SELECT CONCAT(QUOTE(a),QUOTE(b))FROM t 온라인으로 시도
Night2

4

Zsh , 7 바이트

<<<$@:q

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

공백에 대한 인수를 내재적으로 결합합니다. q수정은 이스케이프 공간이 명확하게 두 개의 인수를 분리 보장, 결정적으로 공간을 탈출 인수를 인용 zsh을 알려줍니다.

(없이 q, "a " "b"그리고 "a" " b"모두 수율 것 "a b".)


3

MATL , 1 바이트

j

이 코드는 두 개의 문자열 배열을 입력으로 받아서 해당 배열의 문자열 표현을 출력합니다.

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

설명

코드는 단순히 입력을 문자열로 읽고 평가하지 않습니다.


1
이것은 실제로 두 개의 문자열을 입력으로 사용합니까? 이것은 입력 내용을 인쇄하는 것처럼 보입니다. 온라인으로 사용해보십시오!
제임스

1
@DJ 평가되지 않은 입력 만 읽으므로 아무거나 읽습니다. 허점입니까? 보다 표준적인 접근 방식은 평가 된 입력을 배열로 가져온 다음 문자열 표현으로 변환하는 것입니다. 그러나 결과는 내 코드와 동일하므로 구별이 관찰되지 않는다고 주장합니다.
Luis Mendo



3

05AB1E , 2 바이트

₁ö

온라인으로 사용해보십시오! 각 문자열을 기본 -256 정수로 해석 한 다음 형식으로 두 문자열을 인쇄합니다 [1, 2].


05AB1E, 1 바이트 (알 수없는 유효성)

â

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

입력의 데카르트 곱을 자체와 함께 가져옵니다. 입력의 따옴표가 이스케이프되지 않아 혼동 될 수 있습니다. I의 12까지의 모든 조합을 짐승은 - 강제 ", ""], ["어떤 충돌을 찾을 수 없습니다; 그러나 더 긴 문자열에 대한 충돌이 없음을 증명할 수 없습니다. 누구든지 증거 또는 반례를 제시 할 수 있다면 대단히 감사하겠습니다!

따옴표가 이스케이프되지 않아 사소한 0 바이트가 실패합니다. 입력 ( ", ", 빈 문자열) 및 (빈 문자열 ", ") 모두 출력을 산출합니다 ["", "", ""].

1- byter는 º(각각의 입력 문자열 미러) 또한 이로 인해 실패 입력 ( ", "" ,"빈 문자열) 및 (빈 문자열 " ,"", ") 모두 수율 출력 ["", "" ,"", "" ,"", ""].


3

26 바이트의 C # (Lukas Lang, Kevin Cruijssen 및 Jo King 덕분에)

a=>b=>$"{a.Length}.{a}{b}"

tio.run 람다



이것은 여전히 ​​( "a <>", "b") 및 ( "a", "<> b")로 나뉩니다. 입력을 연결하면 모든 경우를 처리 할 수 ​​없습니다. 그들 사이에 / 주위에 넣어-당신은 어떻게 든 문자열을 수정해야합니다
Lukas Lang

1
죄송합니다, 아직 : ( "1", "11111111111")와 ( "11111111111", "1") -이 인 반면에 작업을 수행합니다 (심지어 짧은) 무엇을 $"{a.Length}.{a}{b}"당신이 항상 추출 할 수 있습니다 - a그리고 b이 어떠한없이 모호함 (단지 첫번째까지 읽을 .의 길이를 얻기 위해 a, b다음이며 나머지
루카스 랑

1
@LukasLang 좋아요. 후속 조치에 감사드립니다.
Soleil

1
많은 감사 @JoKing!
Soleil

2

, 12 바이트

⪫E²⭆⪪S"⪫""λ,

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

 E²             Repeat twice
     S          Input a string
    ⪪ "         Split it on `"`s
   ⭆            Map over each piece and join
       ⪫""λ     Wrap each piece in `"`s
⪫          ,    Join the two results with a `,`
                Implicitly print




1

CSS + HTML, 55 + 20 = 75 바이트

<code>태그 뒤 HTML에 입력을 제공하십시오 . 각 입력에서 출력으로 문자를 하나씩 시각적으로 삽입합니다. 입력이 다른 입력보다 길면 짧은 입력의 누락 된 문자에 대한 시각적 공간이 표시됩니다. 또한 시각적 출력 고유성을 강요하기 위해 HTML에 하나의 쉼표가 추가되었습니다 (희망).

*{position:absolute;letter-spacing:9px}code>code{left:9px
<code>abcdefg<code>hijklmn</code>,



1

펄 6 , 6 3 바이트

&dd

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

오브젝트 표현을 STDERR로 출력합니다.


나는 Perl에 익숙하지 않다-여기에 공백을 포함하는 문자열을 어떻게 입력하겠습니까?
부정 7 7

2
@negativeseven 이런 식으로
Grimmy

@negativeseven 네, 죄송합니다. 문자열 목록에 바로 가기 구문을 사용하고있었습니다. 당신은 다음과 같은 전형적인 방식으로 그렇게 할 수 있습니다["Hello, ", "World!"]
Jo King

1

루아 , 27 바이트

print(('%q%q'):format(...))

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

전체 프로그램, 인수로 입력하십시오.

%q내부 안전 문자열 엔진을 사용하기 위해 수정자를 사용하기 때문에 zsh answer에서 영감을 얻었습니다 .

또한, 나는 단지 생각할 수 있습니다

('%q%q'):format

그러나 이것이 받아 들일만한 대답인지 확실하지 않습니다.


('%q%q'):format예를 들어 변수에 할당 될 수있는 객체를 생성하지 않기 때문에 두 번째가 유효하다고 생각 하지 않습니다. 자체적으로 구문 오류가 발생합니다. 콜론 구문은 지름길 일 뿐이며 '%q%q'.format('%q%q', ...)Lua는 함수에 부분 적용을 허용하지 않습니다.
Jo King

@ JoKing 그래, 네 말이 맞아.
발은 모니 파이 모니카



1

C (gcc) , 59 바이트

제안 해 주신 Grimy에게 감사드립니다.

입력 문자열 배열 (이 챌린지에 올바른 숫자 "2")을 취하고 후행을 포함하여 문자 값을 인쇄합니다 NUL. 기술적으로 %p사용되는 포맷터 printf는 포인터 용이지만 임의의 정수의 16 진수 값을 표시하는 데 잘 사용되지 않는 경우 잘 작동합니다!

f(s,t)char**s,*t;{for(;t=*s++;)for(;printf("%p",*t++)^5;);}

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


좋은! 여기 59 입니다.
Grimmy




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