“N NE E SE S SW W NW”인쇄


47

이것은 거의 사소한 것처럼 보이지만 약간의 노력을 기울인 후에 J의 리터럴 솔루션을 이길 수 없었기 때문에 괜찮은 도전을 할 수 있다고 생각했습니다.

제목은 모든 것을 말합니다. 리턴하거나 인쇄하는 프로그램 또는 함수 (인수 없음)를 작성하기 만하면됩니다.

N NE E SE S SW W NW

공백 대신 줄 바꿈을 사용할 수 있습니다.

다음과 같은 문자열 배열을 반환하는 인수가없는 함수

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

허용됩니다.

글자는 대문자 또는 소문자 일 수 있지만 혼합되지 않을 수 있습니다.


9
아마도 어떤 순서로든 출력되도록 허용하는 것이 약간 더 흥미로울 것입니다.
Jo King

3
@JoKing 물론입니다. 제거하겠습니다. 솔직히 말해서, 나는 모든 사람이 문자 그대로의 가치를 사용하여 답변을 제출할 것을 기대하지 않았습니다. 그것은 질문의 정신에 있지 않습니다. 나는 때문에 상태, 그것은 등장 하지 않았다 일종의의 문자열을 갖는 규칙과 구조에도 불구하고, J의 문자를 이길 수. 요점은 그 규칙 성을 이용하여 문자적인 대답을이기는 것입니다. 더 명시 적이 지 않아서 나쁘다. 그들에게 명령을 내릴 때도 그 주문을 물 리치므로 변경하고 싶지 않습니다.
요나

3
@UnrelatedString 내가 가진 가장 유망한 아이디어는 지시 사항이 내가 거듭 제곱 한 것에 해당한다는 점에 주목하는 것 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5입니다. 불행히도 그 결과를 문자로 매핑하는 데 필요한 J 코드는 리터럴보다 더 비쌉니다.
요나

1
아, 똑똑해! 가우스 정수에 대해 매핑이 더 잘 작동하는지 궁금해 1, 1+i, i, -1+i, -1, -1-i, -i, 1-i하기 때문에 두 방향이 아닌 기본 방향 당 하나의 실수 또는 가상 부분이 있습니다. i의 힘을 0에서 반올림 할 수있는 방법이 없다면, 아마도 그것들을 생성하기가 더 어려울 까요? J에서 얼마나 쉬운 지 또는 어려운지는 모르겠지만 아이디어입니다.
관련없는 문자열

3
출품작은 비교를 위해 그들의 언어로 순진한 "echo this string"버전을 보여야한다고 느끼고 % 단축에 대해 판단해야합니까?
Dewi Morgan

답변:


18

캔버스 , 12 바이트

>X½+T)AuS{⁹‟

여기 사용해보십시오!

단순히 압축 된 문자열입니다.


2
이것이 어떻게 작동하는지 좀 더 자세히 설명해 주시겠습니까?
Dillanm

2
@Dillanm 더 이상 할 말이 없습니다-Canvas에는 내장 된 압축기 (Ctrl + o → 문자열 압축으로 액세스 할 수 있어야 함)가 있으며 여기에 필요한 문자 ( "NESW ") 를 저장 한 다음 기본 5에 개인을 저장하십시오 문자.
dzaima

56

bash (24 바이트)

괄호 확장 사용

echo N {N,,S}E S {S,,N}W

하드 코딩과 길이가 같습니다

echo N NE E SE S SW W NW

그러나 나침반의 더 많은 지점을 출력 할 때 더 흥미로워집니다.

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

버팀대 확장

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

그렇지 않으면 순서가 변경 될 수있는 경우 (17 바이트), 인용 부호없이 empy 문자열 매개 변수가 사라지는 트릭입니다.

echo {N,,S}{W,,E}

1
흥미 롭습니다. 당신이 빈 자리를 가질 수 있다는 것을 몰랐습니다.
flawr

1
@flawr chroot 할 때 유용 :mount -t proc{,,}
gronostaj

7
또는cp file{,.bak}
Oliphaunt

43

모닝 턴 초승달 , 4395 3823 바이트

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

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

이 모든 내용을 읽을 것으로 기대하기 때문에 약간의 접근 방식에 대해 간략히 설명하겠습니다. 주요 아이디어는 문자의 3 개 복사본을 저장하는 것입니다 N, E, S, W은행을 통해 서클 라인에 여러 방송국에서 - 해머 스미스. 이 문자들은 Charing Cross에서 스테이션 이름의 시작 부분부터 구성됩니다. 그런 다음   Mile End와 Charing Cross를 사용하여 잘 선택된 역 이름의 중간에서 구성 하고 Bank에 저장하여 해머 스미스에서 연결하여 수집하십시오. 마지막으로 Paddington에서 문자를 하나씩 연결하여 나중에 재사용해야 할 경우 Bank-Hammersmith를 통해 다시 복사하십시오.


나는 스테이션을 사용하는 단 2 회 : 나는 현재 솔루션 적어도 방문 스테이션의 수의 측면에서 상당히 가까운 최적의이 전략을 생각 통과를 위해 :

  1. 세븐 시스터즈 (빅토리아 역 경유)
  2. 은행을 통해 모닝 턴 초승달로 돌아갑니다.

다른 모든 스테이션 방문은 내가 잊어 버린 경우 스테이션 기능을 사용하여 유용한 것을 저장하거나 검색하거나 (일부) 검색했습니다.

줄 길이는 Circle Line에서 가장 짧은 이름을 선택하려고했지만 약간의 개선이있을 수 있습니다. District에 무언가를 저장하면 몇 바이트를 줄일 수 있습니다.


이것을 좀 더 골프화하기위한 두 가지 아이디어 : 1. 단일 스테이션에서 'NE', 'SW', 'NW', 'SE'를 가져옵니다 (예 : Neasden, Swiss Cottage, Acton To wn및 Mansion Hou 사용 se). 패딩턴은`W`를 연결하기보다 쉽게 ​​만든다는 사실 W . 패딩턴을 '새로 고침'하려면 약간의 오버 헤드가 필요하므로 아무 것도 얻지 못할 수 있습니다.
이산 도마뱀

4
Dollis Hill 루프 규칙을 사용합니까? 그렇다면 Argyle Street 포물선을 사용하거나 Webb-Ellis 프로토콜의 약간 수정 된 버전을 사용하여 개선 할 수 있다고 생각합니다.
리처드 워드


24

브레인 퍽 , 142 (139) 131 (119) 바이트

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

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

셀을 30, 70, 80 및 90으로 채우기 위해 단순히 10 번 반복 한 다음 앞뒤로 이동하고 셀 값을 조정하여 필요한 문자를 인쇄합니다. 표준 "Hello world!"와 크게 다르지 않습니다.


7
Lol 나는 누군가가이 모호한 언어를 어떻게 "골프"할 수 있는지 이해하지 못했습니다. 코드가 처음에 무엇을하는지 이해하기는 어렵습니다 (C ++ / Java 배경
mackycheese21

10
뭐야? C ++은 포인터 조작을 좋아하라고 가르치지 않았습니까?
candied_orange

12
brainfuck은 난해하지만, 나는 그것을 모호하다고 부르지 않을 것입니다
Unrelated String

3
@candied_orange C ++은 포인터 조작을 싫어하고 누군가 std :: :)를 언급 할 때마다 도망 치라고 가르쳐주었습니다.
mackycheese21

1
@UnrelatedString은 모호합니다. 그렇습니다.
Rich


12

MarioLANG , 249 221 바이트

+
+
+
+
+
+
+
+
+  ((+++++++++)))<
+>==============="
)++++++++)+++((-[!)--.)++.(.---------.).(.).)++.((.).).(.).++++.(.).(.(+++++++++.))
=================#================================================================.

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



10

엑셀 포뮬러, 59 57 바이트

다음은 배열 수식 ( Ctrl+ Shift+ Enter) 으로 입력해야합니다 .

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

배열 수식으로 수식을 입력 한 후 수식 표시 줄에서 수식을 강조 표시 F9하고 결과를 반환하는 데 사용하여 평가하십시오 . 예를 들면 다음과 같습니다.

전에:
공식 평가 전

후:
공식 평가 전

작동 원리

ADDRESS함수는 두 개의 매개 변수를 기반으로 참조를 나타내는 문자열을 반환 row하고 col. 세 번째 매개 변수는 리턴되는 참조 유형 (절대 또는 상대 참조)을 제어합니다. 예를 =ADDRESS(1,2,4)들어을 반환합니다 "B1".

배열을 제공 ADDRESS하고 배열 수식으로 사용하여 여러 결과를 반환 할 수 있습니다 (예 : =ADDRESS(1,{1,2,3},4)returns) "A1","B1","C1".

따라서 제 대답에서, 제공된 배열 ADDRESS은 필요한 나침반 포인트와 관련된 열 번호 일뿐입니다 (예 : 열 14는 열 N, 열 369는 열) NE.

모든 반환 참조 예를 들어, 행이 포함 가지고 있기 때문에, 우리는 여기에 완료되지 않습니다 N1, NE1. 따라서 모든 참조에서 SUBSTITUTE를 제거하는 데 사용 합니다 1.


1
겠습니까 =IF(1,"N NE E SE S SW W NW")유효?
Monica

3
@ 오징어 네 맞아! 그러나 문자열을 그대로 인용 할 필요가없는 대안을 찾았습니다.
i_saw_drones

이것은 어떻게 작동합니까?
anatolyg

@anatolyg 설명 섹션을 추가했습니다. 이해할 수 있기를 바랍니다.
i_saw_drones


7

, 14 바이트

”{⊟“�_Zn↖⦄RüΦ≦

온라인으로 사용해보십시오! 링크는 자동 버전 변환기가 문자열 압축을 처리하기 때문에 인쇄 할 문자열 인 자세한 버전의 코드에 대한 것입니다.

압축되지 않은 문자열을 인쇄하는 것은 문자 그대로 인쇄 가능한 ASCII를 인쇄하기 때문에 19 바이트가 필요합니다. 불행히도 내가 얻을 수있는 가장 좋은 알고리즘 대답은 20 바이트를 차지합니다.

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

온라인으로 사용해보십시오! 배열 형식을 사용한 출력 (공간의 요소를 결합하는 데 2 ​​바이트가 소요됨) 문자열의 문자 SNWE는 현재 외부 색인이 색인 목록의 해당 요소에서 어느 방향 으로든 1에서 멀거나 (모듈로 8)있는 경우에만 사용됩니다 4,0,6,2.


7

brainfuck , 117 바이트

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

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

이 코드는 먼저 "EN SW"문자를 메모리에 생성 한 다음 앞뒤로 이동하여 인쇄합니다. 공간은 가장 자주 인쇄되므로 중간에 있습니다. N과 S와 W와 E는 함께 나타나지 않으므로 메모리의 반대편에 있습니다. 최적화를 위해 최종 감소 중 일부가 출력 단계에서 발생합니다.


1
좋습니다. 멋진 답변입니다. 당신이 이걸 이길 것 같아요. -1 :-)의 경우 +1
ElPedro

1
BTW는 Code Golf 사이트에 오신 것을 환영합니다. 미래에 당신과 경쟁을 기대 ☺
ElPedro

1
어서 오십시오! 프로그램의 온라인 통역사에 대한 설명이나 링크를 추가하십시오. 예를 보려면 다른 답변을 참조하십시오. 짧은 코드 전용 답변은 자동으로 저품질로 표시되는 경향이 있습니다.
mbomb007

1
감사합니다. 코드에 대한 설명을 추가 할 수 있습니다. 또한 온라인 링크의 작동 방식을 이해하려고 노력할 것입니다.
헬레나

1
@Helena 링크를 보려면 내 답변에서 "온라인으로 시도"링크를 확인하십시오. 코드를 붙여 넣고 실행하면 링크 아이콘을 클릭하고 여기에 복사하여 붙여 넣을 수있는 완벽한 형식의 코드 골프 답변을 얻을 수 있습니다. 마술처럼 작동하고 많은 언어를 지원합니다. 시도해 볼 가치가 있습니다.
ElPedro



5

코모도어 베이직 (TheC64Mini, C64, C128, VIC-20 등) 28 토큰 화 된 베이직 바이트 사용

 0 PRINT"N NE E SE S SW W NW

Commodore BASIC에서는 인터프리터가 자동으로 닫을 때 닫는 따옴표 PRINTLET문장이 필요하지 않으므로 BASIC 토큰이 하나 저장됩니다.

또는 다음과 같이 직접 모드를 사용할 수도 있습니다.

Commodore BASIC 23 PETSCII 문자 (+ RETURN실행)

?"N NE E SE S SW W NW

나는 확실히 인터프리터에 따라로서이 경우에 사용되는 바이트 수를 계산하는 방법을 모르겠어요 ?PRINT동일한 수의 바이트를 사용하고, 메모리에 저장된 어떤 프로그램이 없습니다.


1
PRINT?4 바이트를 절약 하여 대체 할 수 있습니다 .
제임스

1
아니요, 사실이 아닙니다. PRINT?기본 토큰의 동일한 금액을 사용합니다. 사용 가능한 메모리가 인터프리터에 얼마나 많이 사용되는지를 잘 나타내지 않기 때문에 PETSCII 문자를 세지 않습니다.
숀 비버

1
이 모든 세월이 지난 후에도 나는 여전히 코모도어에 관한 새로운 것을 배우고 있습니다. 고마워 숀! c64-wiki.com/wiki/BASIC_token
제임스

여기에 내가 만든 (C64)-> pastebin.com/NMYzTC7k
Shaun Bebbers

4

Japt , 16 바이트

소문자 문자열의 배열을 반환합니다. 압축 된 문자열은 18 바이트 였지만 a대신 구분 기호로 사용 한 다음 분할하면 더 짧았습니다.

`nÂà!Z°°nw`qa 

그것을 시도하십시오 -바닥 글은 출력을 형식화합니다.


4

데드 피쉬 ~ , 138 바이트

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

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

따라서 줄 바꿈으로 소문자로 출력하는 것이 기본값보다 낫습니다 (공백이있는 대문자).

이 코드는 C ++로 작성된 내 최적화 프로그램에 의해 생성되었습니다 ( 다른 최적화 아이디어 를 위해 오징어 덕분에 !) :

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}


4

배치 파일, 19 바이트

이 질문은 당신이 출력해야 N NE E SE S SW W NW하고 다른 것은 아무것도 말하지 않았으며 , 그렇게 한 후에 오류로 인해 종료 할 수 없다고 언급하지 않았습니다. 이 코드는 오류 만 throw하지만 오류로 인해 종료되지는 않습니다.

N NE E SE S SW W NW

산출

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

배치 파일, 25 바이트

N NE E SE S SW W NW오류나 충돌없이 출력 만 가능 합니다.

@echo N NE E SE S SW W NW

당신은 같은 단지 따옴표와 함께 CD를 교체 바이트를 절약 할 수 'N NE E SE S SW W NW'- 당신은 같은 것을 얻을 것이다 : N NE E SE S SW W NW - command not found
데위 모건

4

Python2, 59 바이트

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

매직 넘버는 문자열로 결합 된 3 비트 인덱스이며 역순으로 LSB에서 반복을 시작할 수 있습니다.


나는 마법의 숫자를 줄이려고 노력했지만 여분의 인덱스를 허용하기 위해 곱셈을 통해 문자열을 반복하는 것은 공간을 인코딩해야하기 때문에 작동하지 않습니다. 매직 넘버에서 제거 된 숫자보다 문자열 (중간에 불행한 두 가지를 포함하지 않음) :

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

왜 복잡하게 만들 수 있습니까? :-)
GB

4

K (ngn / k) , 23 22 바이트

ngn 덕분에 -1 바이트!

"WNES"@5\7108085518230

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

J , 34 30 바이트

echo(#:3510)<;.1'NNEESESSWWNW'

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


Galen, J 반향의 경우 리터럴이 더 짧습니다. 나는 그 비트를보고 싶습니다 ... 나는 그것을하지 못했습니다
조나

1
예, 에코는 4 + 19 바이트입니다. 더 좋은 아이디어가 없습니다.
Galen Ivanov

1
k의 경우 : " "<-> "W"( 기본 5의 0<->) 4을 바꾸면 , 공간이 끝날 것이고 범위를 벗어난 문자열 색인이 공간을 제공하기 때문에 공간을 제거 할 수 있습니다."WNES"@5\7108085518230
ngn

@ngn 감사합니다!
Galen Ivanov

1
최고 성능의 데이터베이스 @GalenIvanov 좋은 너무 : 아서 에 대한 기본 언어로 K를 설계 + 산업 은행
NGN


3

Brachylog , 19 바이트

"NNEESESSWWNW"ḍ₄ḍᵐc

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

목록으로 출력합니다. ḍ₄ḍᵐc7 개의 공백을 쓰고 전체 술어를 문자열 리터럴로 만드는 것보다 2 바이트를 절약하므로 적어도 PHP와 연결됩니다 ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

나는 영리하려고했지만 3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐcSE 또는 NW를 올바르게 얻을 수 없었으며 어쨌든 1 바이트 더 길다.


3

공백 , 151 바이트

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

문자 S(공백), T(탭) 및 N(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]설명으로 만 추가되었습니다.

온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).

설명:

  1. 문자 "WN W WS S ES E EN N"에 대해 유니 코드 값에서 상수 84를 빼고 상수 84를 스택으로 밉니다 (문자열이 역순으로 밀림에 유의하십시오). 또한 이전에 푸시 된 값의 사본을 사용하여 가능한 경우 바이트를 절약합니다.
  2. 그런 다음 다음을 수행하는 무한 루프를 시작하십시오.
    1. 현재 유니 코드 값에 상수 84 추가
    2. STDOUT에 문자로 인쇄

상수 84Whitespace에서 대답 한 또 다른 도전에 대해 작성한이 Java 프로그램에 의해 생성됩니다 .


3

MathGolf , 20 17 바이트

ÿnesw▒∙╫m+mÉîÄ╪^─

@maxb 덕분에 -3 바이트 .

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

설명:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)

1
17 바이트 . 이것은 재미있는 도전이었습니다. 나는 전에 그것을 시도했지만 당신이 한 곳에서 끝났습니다. 나는 당신이 이것으로부터 할 수있는 가장 많은 것이 1 바이트 더 많다고 생각하지만 더 짧은 길을 찾을 수 없었습니다.
maxb

@ maxb 아 좋은 접근. 나는 블록 크기 X의 그 코드 (인정합니다 É그리고 Ä내가 할 또는 그 코드 블록을 사용하지 않을 때 가끔 잘 모르겠어요 ..이 경우) 아직도 가끔 나에게 조금 혼동. 귀하의 m+예를 들어 하나를 사용하지 않습니다. 그러나 당신 Ä은 크기 1의 코드 블록입니다. 나는 mÅî╪무슨 일이 있었는지 보려고 아직 시도했지만 , 이제 크기 1의 코드 블록이 왜 시작되는지 이해 Ä합니다. :)) -3 바이트에 감사드립니다. 아직도 배울 것이 많습니다.
케빈 크루이 ssen

1
좋은 설명입니다! 나는 그것을 문자 목록으로 변환하지 않고 해결책을 시도했지만 zip 명령은 약간 기이했습니다. 코드 블록의 경우, 대신 사용되는 대체물로 생각하십시오 {}. mÅî╪매핑을 만들지 만 매핑 안에 for-loop가 없습니다. 작성 m{î{╪}}하면 코드가 "map to : loop <index> times and string loop each loop"로 코드 를 작성 하는 것이 더 쉽습니다. m+없는 이유 는 특정 명령에 1 바이트 블록 (맵, 필터, 축소 등)이 내재되어 있지만 î블록과 함께 사용되는 명령이 아니기 때문입니다.
maxb

1
@ maxb 나는 실제로 코드 블록이 짧은 변형이라는 것을 알고 있었지만, for-loop는 {...}잊어 버렸습니다 integer{. :) 이제 îÄ╪훨씬 더 의미가 있습니다. 설명 주셔서 감사합니다!
케빈 크루이 ssen


2

시드 , 6014 바이트

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

다음과 같은 befunge 프로그램을 생성합니다.

"WN W WS S ES E EN N">:#,_@


2

어셈블리 (x86, Linux), 68 바이트

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

출처:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

"Hello world \ n"에 대해 가장 짧은 ELF 에서 주로 가져온 코드 ?



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