「N NE E SE S SW W NW」を印刷


47

これはほとんど些細なことのように思えますが、Jでの文字通りの解決策にある程度の努力を払うことができなかったので、まともな挑戦をするかもしれないと思いました(ただし、これはJ特有の挑戦ではありません)。

タイトルがすべてを語っています。返すか出力するプログラムまたは関数(引数を取らない)を記述するだけです。

N NE E SE S SW W NW

スペースの代わりに改行を使用できます。

次のような文字列の配列を返す引数なしの関数

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

も許容されます。

文字は大文字でも小文字でもかまいませんが、混在させることはできません。


9
おそらく、彼らはどのような順序で出力することができるようにすると、もう少し興味深いものになるだろう
ジョー・キング

3
@JoKingもちろん、削除します。正直なところ、私は誰も完全な文字通りの価値を使った答えを提出することを期待していませんでした-それは質問の精神ではありません。私が述べているように、文字列が規則性と一種の構造を持っているにもかかわらず、Jのリテラルを破ることができなかったので、それが現れました。全体のポイントは、文字通りの答えを打つためにその規則性を活用することです。より明示的ではないために私には悪い。注文を許可すると、それも無効になります。そのため、その変更を行いたくありません。
ジョナ

3
@UnrelatedString私が持っていた最も有望なアイデアは、方向がiの累乗に対応することに注意すること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ので、基本方向ごとに2つではなく1つの実数部または虚数部があります。ただし、iのべき乗を0から遠ざける方法がない限り、それらを生成するのはおそらく難しいでしょう。Jがどれだけ簡単か難しいかはわかりませんが、それはアイデアです。
無関係な文字列

3
エントリは、比較のために言語で素朴な「この文字列をエコーする」バージョンも表示する必要があるように感じます。
デウィモーガン

回答:


18

Canvas、12 バイト

>X½+T)AuS{⁹‟

ここで試してみてください!

単純に圧縮された文字列。


2
これがどのように機能するかをもう少し詳しく説明できますか?
Dillanm

2
@Dillanmに言うことはあまりありません-Canvasには組み込みのコンプレッサーがあり(ctrl + o→string compressでアクセス可能)、ここでは必要な文字を保存し("NESW ")、base-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}
21

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つのコピーを保存することでNESWハマースミス-銀行を経由して、サークルライン上の様々なステーションで。これらのキャラクターは、チャリングクロスの駅名の先頭から作成されます。次に、  マイルエンドとチャリングクロスを使用して適切に選択された駅名の中央から構築し、それを銀行に保管して、連結のハマースミスで収集できるようにします。最後に、パディントンでキャラクターを1つずつ連結し、後で再利用する必要がある場合は、Bank-Hammersmithを介して再度コピーします。


少なくとも訪問した駅の数に関しては、現在の解決策はこの戦略で最適にかなり近いと思います:乗り継ぎだけに駅を使用したのは2回だけです:

  1. Seven Victoria(ヴィクトリア駅経由)
  2. モーニングトンクレセントに戻る(銀行経由)。

他のすべてのステーションへの訪問は、忘れずに、何か有用なものを保存/取得するか、ステーション機能を使用して(一部)行った。

行の長さについては、Circle Lineで最も短い名前を選択しようとしましたが、そこには少し改善があるかもしれません。Districtに何かを保存すると、数バイト削られる可能性があります。


ゴルフへの2つのアイデアより、この一部(例えば使い方1.テイク「NE」一駅から、「SW」、「NW」、「SE」Ne、asdenをSwコテージ、アクトンにISS wnとマンション侯se)2.トライ利用しますパディントンがより簡単に `W`を連結するという事実W 。これには、パディントンを「リフレッシュ」するためのオーバーヘッドが必要になるため、何も得られない場合があります。
離散トカゲ

4
これは、Dollis Hillのループルールを使用していますか?もしそうなら、Argyle Streetの放物線を使用することで改善できると思いますし、Webb-Ellisプロトコルのわずかに変更したバージョンでさえ改善できると思います。
リチャードウォード


24

brainfuck142の 139 131 119バイト

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

オンラインでお試しください!

セルを30、70、80、および90で埋めるために10回ループするだけで、前後にステップし、セル値を調整して必要な文字を印刷します。標準の「Hello world!」とそれほど違いはありません。


7
Lol私は、誰もこれらのあいまいな言語を「ゴルフ」する方法を理解したことがありません。そもそもコードが何をしているのかを理解するのは難しい(これはC ++ / Javaのバックグラウンドから来ていると言われている)
mackycheese21

10
@ mackycheese21なに?C ++は、ポインター操作を愛することを教えませんでしたか?
candied_orange

12
ブレインファックは難解かもしれませんが、私はそれを曖昧とは言わないでしょう
無関係な文字列

3
@candied_orange C ++は、ポインタの操作を嫌い、誰かがstd :: :)に言及するたびに逃げることを教えてくれました
mackycheese21

1
@UnrelatedStringあいまい、いいえ。鈍い、はい。
リッチ




10

Excelの数式、59 57バイト

配列数式として次を入力する必要があります(Ctrl+ Shift+ Enter):

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

数式を配列数式として入力した後、数式バーで数式を強調表示し、次のように評価してF9結果を返します。

前:
Before formula evaluation

後:
Before formula evaluation

使い方

ADDRESS関数は、2つのパラメータに基づいて基準を表す文字列を返し、rowそしてcol。3番目のパラメーターは、返される参照のタイプ(絶対参照または相対参照)を制御します。たとえば、を=ADDRESS(1,2,4)返します"B1"

に配列を提供し、ADDRESS複数の結果を返す配列式として使用することができ=ADDRESS(1,{1,2,3},4)ます"A1","B1","C1"

したがって、私の答えでは、提供される配列ADDRESSは、必要なコンパスポイントに関連する列番号だけです。たとえば、列14は列N、列369は列NEです。

すべての返された参照は、行が含まれているので、しかし、我々は、例えば、ここで終了していませんN1NE1。したがって、単にすべての参照からSUBSTITUTEを削除するために使用し1ます。


1
=IF(1,"N NE E SE S SW W NW")有効では?
モニカを

3
@squidはい、そうです!しかし、文字列を逐語的に引用する必要のない代替手段を探していました。
i_saw_drones

これはどのように作動しますか?
アナトリグ

@anatolyg説明セクションを追加しました。理解できることを願っています。
i_saw_drones


7

、14バイト

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

オンラインでお試しください!リンクは、コードの冗長バージョンへのリンクです...これは、自動デバーボス化機能が文字列の圧縮を処理するため、印刷される文字列にすぎません。

Charcoalは印刷可能なASCIIをそのまま印刷するため、文字列を非圧縮で印刷するには19バイトかかります。残念なことに、私が思いつくかもしれない最高のアルゴリズムの答えは20バイトかかります。

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

オンラインでお試しください!配列形式を使用した出力(スペース上の要素を結合するのに2バイトかかります)。文字列の文字SNWEは、現在の外部インデックスがインデックスのリストの対応する要素からいずれかの方向に等しいか1離れている(モジュロ8)場合にのみ使用されることに注意して動作します4,0,6,2


7

brainfuck、117バイト

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

オンラインでお試しください!

このコードは、最初に文字「EN SW」をメモリに作成してから、前後に移動して印刷します。最も頻繁に印刷されるため、スペースは中央にあります。NとS、WとEは一緒に表示されることはないため、メモリの反対側にあります。最適化のために、出力フェーズ中に最終的なデクリメントの一部が発生します。


1
OK、それはクールな答えです。これで私をbeatったと思います。+1の場合-1 :-)
ElPedro

1
ところで、言うのを忘れて、コードゴルフのサイトへようこそ。☺将来的にあなたとの競争を楽しみにしています
ElPedro

1
ようこそ!プログラムの説明またはオンライン通訳へのリンクを追加することを検討してください。例については他の回答をご覧ください。短いコードのみの回答は、低品質として自動的にフラグが立てられる傾向があります。
mbomb007

1
おかげで、コードの説明を追加できます。また、オンラインリンクがどのように機能するかを理解しようとします。
ヘレナ

1
@Helenaリンクについては、私の回答の「Try it Online」リンクをご覧ください。コードを貼り付けて実行すると、リンクアイコンをクリックして、完全にフォーマットされたコードの答えを得ることができます。ここで簡単にコピーして貼り付けることができます。魔法のように機能し、多くの言語をサポートします。試してみる価値があります。
エルペドロ


5

ゼリー 16  15 バイト

“¤œỵpq⁵’ṃ“NESW 

テキストを印刷する完全なプログラム

オンラインでお試しください!


16 ...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

(小文字)文字のリストのリストを生成するniladicリンク。

オンラインでお試しください!


(小文字)の文字(スペースを含む)のリストを生成するniladicリンクなど15の代替:“¡XÇŀqỵÑ’ṃ“¡⁴ṁ»


5

Commodore BASIC(TheC64Mini、C64、C128、VIC-20など)28トークン化BASICバイト使用

 0 PRINT"N NE E SE S SW W NW

Commodore BASICでは、インタープリターが自動的に閉じるので、引用符PRINTLETステートメントを閉じる必要はありません。これにより、1つのBASICトークンが保存されます。

または、次のように単純にダイレクトモードを使用することもできます。

Commodore BASIC 23 PETSCIIキャラクター(RETURN実行するには+ )

?"N NE E SE S SW W NW

私は必ず通訳によると、このインスタンスで使用されるバイト数をカウントする方法はないよ?PRINT同じバイト数を使用し、メモリに保存されたプログラムはありません。


1
PRINT?4バイトを節約して同様に置き換えることができます。
ジェームズ

1
いいえ、そうではありません。同じ量のBASICトークンPRINT?使用します。PETSCIIの文字は、使用可能なメモリがインタープリターによってどのくらい使用されているかを表すものではないため、数えていません。
ショーンビバーズ

1
これらの年のすべての後、私はまだコモドールについて新しいことを学んでいます。ショーンありがとう! c64-wiki.com/wiki/BASIC_token
ジェームズ

私は(C64用)以前作られたここでの1 - > pastebin.com/NMYzTC7k
ショーンBebbers

4

Japt、16バイト

小文字の文字列の配列を返します。圧縮された文字列は18バイトでしたがa、代わりに区切り文字として使用し、その上で分割すると短くなりました。

`nÂà!Z°°nw`qa 

試してください -フッターは出力をフォーマットします。


4

Deadfish〜、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 ++で記述されたオプティマイザーによって生成されました(別の最適化のアイデアについてはsquidに感謝します!)。

#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あり、それ以外は何も指定されていないことも、エラーが発生したため終了できないことも示されなかったため、このコードはエラーをスローするだけで終了しません。

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))

複雑にすることができるのに、なぜirを単純にするのですか?:-)
GB

4

K(ngn / k)23 22バイト

ngnのおかげで-1バイト!

"WNES"@5\7108085518230

オンラインでお試しください!

J34 30バイト

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

オンラインでお試しください!


Galen、Jの場合、リテラルのエコーは短くなります。私はそのビートを見たいです...私はそれをどうにかすることができませんでした
ジョナ

1
はい、エコーは4 + 19バイトになります。これ以上良いアイデアはありません。
ガレンイワノフ

1
kについて:私たちはスワップ場合は" "< - > "W"0< - > 4ベース5に)、スペースが最後になり、範囲外の文字列インデックスはとにかくスペースを与えるので、我々はそれを削除することができます:"WNES"@5\7108085518230
NGN

@ngnありがとうございます!
ガレンイワノフ

1
トップパフォーマンスデータベースの@GalenIvanov良いが、あまりにも:) アーサーのための基本となる言語としてKを設計し、KDB +
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₀ᶠ}ᵐc、SEまたは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を引いたものをスタックにプッシュします(ストリングは逆にプッシュされます)。さらに、以前にプッシュした値のコピーをいくつか使用して、可能な限りバイトを節約します。
  2. 次に、次のことを行う無限ループを開始します。
    1. 定数84を現在のUnicode値に追加します
    2. 文字としてSTDOUTに出力します

定数84、Whitespaceで答えた別の課題のために書いこのJavaプログラムによって生成されます。


3

MathGolf20 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バイトありがとう。まだ学ぶべきことがたくさんあります。
ケビンクルーッセン

1
いい説明!文字のリストに変換せずに解決策を試みましたが、zipコマンドは少し不安定でした。コードブロックについては、の代わりに使用される置換と考えてください{}mÅî╪マッピングを作成しますが、マッピング内にforループはありません。を書くm{î{╪}}と、コードが「map to:loop <index>回、文字列をループごとに回転させる」ことが簡単にわかるでしょう。m+存在しない理由は、特定のコマンドに暗黙の1バイトブロック(map、filter、reduceなど)がîありますが、ブロックと組み合わせて使用​​することを意図したコマンドではないためです。
maxb

1
@maxb確かにコードブロックはの短いバリアントであることは知って{...}いましたinteger{が、forループであることを忘れていました。:)これでîÄ╪もっと意味があります。説明ありがとう!
ケビンクルーッセン

2

CSS42 39バイト

(改訂版の石のクモのおかげで)

body:after{content:"N NE E SE S SW W NW"


1
-3バイト:body:after{content:"N NE E SE S SW W NW"
石のクモ形類

忘れてしまった、それも同様に有効です、更新されました:)!
roberrrt-s

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.