ストライピングを削除してください![閉まっている]


8

あなたは、適切な協力者の責任を負うように努力します。

交換ランダム(uNifoRm、50%変更されたUPCERCASE)を使用したイテレーターのトラブルシューティング

それでおしまい。

(句読点でごめんなさい、それは質問の概念のためでした)

読みやすいバージョン:

印刷可能なASCII文字で構成される文字列が与えられます。

文字列を繰り返し処理し、ランダム(均一、50%の確率で大文字)の文字を大文字に、その他すべてを小文字に変更します。

それでおしまい。

exaMplEs

iNpuT => pOssiBle oUtPUt
Programming puzzles and Code Golf => pRogRaMMiNg pUzzlEs aNd coDe goLf
dErpity deRp derP => deRpiTy dErp DerP
CAAAPSLOOOCK => cAAapslOoocK
_#$^&^&* => _#$^&^&*

2
「ランダムに」とはどういう意味ですか?2つの連続した大文字を使用できますか(テストケースにそのような構成はありません)?この質問は現在のところ十分に規定されていないと思いますが、まだ投票はしません。この二つを明記してください。
HyperNeutrino 2017

time%2は疑似ランダム性に許可されていますか?
fəˈnɛtɪk 2017

@ fəˈnɛtɪk確かに(均一の場合)
Matthew Roh

2
印刷可能なASCIIと言いますが、テストケースにはアルファベット文字のみが含まれます。プログラムはアルファベット以外の文字を処理できますか、それとも入力が純粋にアルファベットであると期待できますか?
MildlyMilquetoast

5
既存の回答のほとんどは、決定が文字ごとに独立していると仮定していますが、それは問題のどこにもありません。現在のところ、(疑似コード)に沿って何かを書くことは技術的には仕様と互換性があると思いますs=>rand()%2?s.upper():s.lower()
Peter Taylor

回答:


10

C – 65バイト

主流の言語にはかなり良いです!

main(c){while((c=getchar())>0)putchar(isalpha(c)?c^rand()&32:c);}

XORを使用し0x20て、アルファベット文字ごとにランダムにビットを反転します。プログラムは、ASCII文字セットを想定していEOF < 0ます。

独自のソースでサンプルを実行します!

$ main < main.c
MaIN(c){WhILe((C=GETChAr())>0)pUtCHaR(iSALpha(C)?C^rANd()&32:C);}

とてもダーピー。


1
「主流の言語にはかなり良いです!」-多くの場合、Cはゴルフに意外と適しています。
Steadybox 2017

7

JavaScript、87バイト

function(s){return s.replace(/./g,c=>Math.random()<.5?c.toLowerCase():c.toUpperCase())}

ES6の68バイト:

f=
s=>s.replace(/./g,c=>c[`to${Math.random()<.5?`Low`:`Upp`}erCase`]())
<input oninput=o.textContent=f(this.value)><pre id=o>


2番目のコードは機能しますが、最初のコードは機能しません:Uncaught SyntaxError:Unexpected token(
Felo Vilches

@FeloVilchesこれを機能させるには、式のコンテキストで使用する必要があります。使用しない場合、エンジンはそれを関数ステートメントとして解析しようとします。
ニール

ES6を使用して短縮できます。
CalculatorFeline

@CalculatorFeline 68バイトまで、間違いありませんか?
Neil

5

ゼリー、6 バイト

,ŒsXµ€

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

どうやって?

入力のすべての文字を小文字にしてから50%の確率でそれぞれ大文字にすることは、元の文字と、大文字と小文字を入れ替えた文字のいずれかを同じ確率で選択することと同じです...

,ŒsXµ€ - Main link: string s
    µ  - monadic chain separation
     € - for each char c in s
,      -     pair c with
 Œs    -     swapped case of c
   X   -     choose a random item from the list (of the two chars)
       - implicit print

おお。挑戦の巧妙な解釈。
Matthew Roh

ちなみに、これは制服ですか?
Matthew Roh

@SIGSEGV「ユニフォーム」とは、各文字がそれぞれのケースになる可能性が50%であることを意味します。はい-Python Xを使用して実装されるrandom.choiceため、2文字のリストが表示されると、50%の確率でそれぞれが選択されます-入力のすべての文字そのようなリストを生成します(アルファベット以外の文字は2つの等しい文字のリストになりますが、上記の "ユニフォーム"の解釈が正しい場合は問題ではありません)。
ジョナサンアラン

改行で区切られたリストの例を以下に示します。各リストから1文字が選択されます。
ジョナサンアラン

5

PowerShell64 60バイト

-join([char[]]"$args".ToLower()|%{"$_".ToUpper(),$_|random})

オンラインでお試しください!(ランダムな結果が必要な場合は、「出力キャッシュを無効にする」がチェックされていることを確認してください)

チャレンジの正確な翻訳。入力文字列を受け取り、ToLower()それをchar配列に変換し、各文字をループし|%{...}、既存の文字または大文字のバリアントのいずれかをランダムに選択します。次に、-joinそれらすべてを1つの文字列に戻します。この作品のためにToUpperToLowerだけ句読点など変わらずを残して、アルファベットの文字に影響を与えます。

(DennisがTIOのエイリアスリストを修正したため、RandomLinuxは試行されませんrandomGet-Random、PowerShellコマンドとして正しくエイリアスが作成されます。ありがとう、Dennis!)


4

MATL13 12バイト

"@ktXkhlZr&h

MATL Online試しください

説明

        % Implicitly grab input as a string
"       % For each character...
  k     % Convert to lowercase
  tXk   % Make a copy and convert to uppercase
  h     % Horizontally concatenate these two characters
  lZr   % Randomly select one of them
  &h    % Horizontal concatenate the entire stack
        % Implicit end of for loop and implicit display

4

Japt、10バイト

®m"uv"gMq2

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

説明

つまり、これは安っぽいハックですが、機能します。JavaScriptでは次のようなことができます

x[`to${Math.random()<.5?"Upp":"Low"}erCase`]()

ランダムxに大文字または小文字に変換します。Japtでは、同等の関数はufor toUpperCaseおよびvfor toLowerCaseです。しかし、Japtでは(x[expression]JavaScriptで)計算されたプロパティ値を直接取得する方法はありません。

Japtの私のお気に入りの機能の1つは、単一のメソッド呼び出し(たとえばmX{Xq}、または.m(X=>X.q())JS)で構成される関数がある場合、メソッドの名前を除くすべてを省略できることです(例:)mq。次に、コンパイラはこれを文字列に変換して、元のメソッド呼び出し(.m("q"))に渡し、メソッドはこれを関数に戻します。したがって、との間に違いはmqありませんm"q"。どちらも同じ出力を生成します。

さて、これを使っていました:文字列でランダムメソッドを直接呼び出すことはできませんが、ランダムなメソッド名でその文字列を呼び出すことができますm。だから、説明のために:

®m"uv"gMq2
®           // Replace each char in the input by this function:
 m          //   Replace each char in this char by this function:
      g     //     the char at index
       Mq2  //       random integer in [0,2)
  "uv"      //     in "uv".
            //   This randomly calls either .u() or .v() on the char.
            // Implicit: output result of last expression

Mqデフォルトは2ではありませんか?それとも最近追加されましたか?
オリバー

@obarakon最近だったと思います。GitHubでクイック検索すると、5月5日だったと言われています
ETHproductions 2017









1

MATL12 11バイト

ケースを直接変更するというJonathan Allanのアイデアを使用して、1バイトが削除されました。

"@rEk?Yo]&h

MATLオンライン試しください

説明

"         % Implicit input. For each
  @       %   Push current char
  r       %   Random number uniformly distributed on (0,1)
  Ek      %   Duplicate, floor: gives 0 or 1 with the same probability
  ?       %   If nonzero
    Yo    %     Change case. Leaves non-letters unaffected
  ]       %   End
  &h      %   Horizontally concatenate evverything so far
          % Implicit end and display

1

Pyth、5バイト

srLO2

テストスイート

srLO2
srLO2Q    Variable introduction
  L  Q    Map over the input
 r        Set the case of each character to 
   O2     Random number from [0, 1]. 0 means lowercase, 1 means uppercase.
s         Concatenate

1

Befunge、136バイト

>~:0`!#@_:"@"`!#v_:"Z"`!#v_:"`"`!#v_:"z"`!#v_,
^,<    <        <                 <
 >?<                     <             -*84<
  >84*+^

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

取り除くことができると思う空白がたくさんあります。Befungeには、文字が何で何がそうでないかを判別する方法がないため、これが最初の行で実行していることです。


このスニペットは、スタックのトップの値が文字であるかどうかを確認するより高速な方法です。文字の場合は0を、そうでない場合は1をプッシュします。同じ場所にルーティングする
一連

どのように機能するのかわかりません。実行すると、常に0が返され、何も入力されません。

そのプログラムでは、最初の引用符の中に値を入れています。振り返ってみると、これはそれを行うには本当に馬鹿げた方法です。最初の3文字をaに変更するのは非常に簡単です~
。– MildlyMilquetoast

0

バッシュ、64バイト

初挑戦

a=$(shuf -e -n 13 {A..Z}|tr -d "\n");b=${a,,};tr $b $a <<<${1,,}

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

大文字をシャッフルし、最初の13文字を取り、改行を削除して$ aに保存します。$ bは$ aを小文字に変換します。入力は小文字で$ {1 ,,}に設定され、ヒアドキュメントとしてtrに渡され、$ bの各出現を$ aで置き換えます

同じ文字は常に大文字で表記されるため、これはやや非競争的です。


0

JavaScript + HTML、115バイト

<input oninput="this.value=this.value.toLowerCase().split('').map(v=>Math.random()<.5?v.toUpperCase():v).join('')">


0

バッシュ、162バイト

a=$1
b=1
c="echo $a|head -c$b|tail -c1"
while(($b<=${#a}))
do
r=$[RANDOM%2]
if [ $r = 1 ]
then d=$(eval $c);echo -n ${d^}
else echo -n $(eval $c)
fi
b=$[b+1]
done

かなり自明です。コマンドライン引数から入力を取り、stdoutに書き込みます。

のように走る derpifier.sh "Derp this"

ひと、ヒントを適用し始めると、コードは急速に縮小します。


0

Swift-バイトが多すぎる(176 167)

uppercased()lowercased()arc4random_uniform()本当に私はスウィフトは、標準的な入力方法を持っていないので、機能を追加することについてのほか、スコアを殺します!

import Foundation
func g(x:String){var result="";for i in x.characters{let e=String(i);result+=(arc4random_uniform(2)>0 ?e.uppercased():e.lowercased())};print(result)}

使用法の機能: print(g(x: "Your String Here"))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.