무작위 대문자 이미 대문자 문자를 대문자로 유지하는 프로그램이나 함수를

작업

당신의 임무는 입력시 주어진 대문자를 무작위 문자로 출력하고 이미 대문자 문자를 대문자로 유지하는 프로그램이나 함수를 만드는 것입니다.

소문자의 모든 대문자 조합이 가능해야합니다. 입력이었던 경우, 예를 들어 abc, 다음의 조합 중 하나를 출력하는 영이 아닌 확률이 있어야한다 : abc, Abc, aBc, abC, ABc, AbC, aBC또는 ABC.

입력

입력 내용은 인쇄 가능한 ASCII 문자를 포함하는 문자열입니다 (예 🙂 Hello World. 그 입력에 대한 출력을 포함하는 HeLLo WoRlD, HElLO WOrld

채점

이것은 코드 골프이므로 각 언어에서 가장 짧은 답변이 이깁니다!



답변

TI 기본 (83 시리즈), 137 바이트

For(I,1,length(Ans
Ans+sub(sub(Ans,I,1)+"ABCDEFGHIJKLMNOPQRSTUVWXYZ",1+int(2rand)inString("abcdefghijklmnopqrstuvwxyz",sub(Ans,I,1)),1
End
sub(Ans,I,I-1

Ans아래 스크린 샷에 표시된대로 입력을받습니다 .

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

(때때로 스크린 샷이 스크램블 된 것처럼 보이면 새 탭에서 열어 보십시오 .)

TI-Basic (적어도 TI-83 버전 … 아마도 TI-89 골프로 분기해야 함)은 다음과 같은 이유로이 도전에 도전하기에 끔찍한 언어입니다.

  1. 문자를 사용한 산술, 대문자의 소문자 또는 알파벳을 아는 것은 전혀 지원하지 않습니다.
  2. 모든 단일 소문자는 저장하는 데 2 ​​바이트가 걸립니다. (사실, 소문자 만 입력 할 수 있도록 어셈블리 스크립트 를 사용해야했습니다 .)

결과는이 프로그램의 78 바이트 (반 이상)가 알파벳을 두 번 저장하는 것입니다 .

어쨌든, 우리는 문자열을 반복하면서 소문자를 대문자로 변환하고 결과를 문자열 끝에 추가하여 입력과 출력이에 저장되도록 할 수 Ans있습니다. For(루프 를 떠날 때 I원래 문자열의 길이보다 하나 이상이므로 I-1문자를 시작 I하면 출력이 나타납니다.


답변

Japt , 6 바이트

®m`«`ö

온라인으로 테스트하십시오!

설명

®m`«`ö   Implicit input
®        Map each char in the input by
 m         mapping each char in this char through
  `«`ö       a random character of "us". (`«` is "us" compressed)
             The u function converts to uppercase, and s is slice, which does nothing here.
         Implicit output


답변

파이썬 2 , 66 65 바이트

lambda s:`map(choice,zip(s.upper(),s))`[2::5]
from random import*

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


답변

C,  47  46 바이트

바이트를 저장해 준 @ l4m2에게 감사합니다!

f(char*s){for(;*s++-=(*s-97u<26&rand())*32;);}

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

{|}~입력에 나타나지 않는 것으로 가정 할 수 있다면 42 바이트가됩니다 .

f(char*s){for(;*s++-=(*s>96&rand())*32;);}

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


답변

젤리 , 5 바이트

다른 하나는 dylnan 덕분에 먼지를 줄였습니다.

żŒuX€

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

설명

żŒuX€  main link: s = "Hello world"

żŒu    zip s with s uppercased  ["HH", "eE", "lL", "lL", "oO", "  ", ...]
   X€  map random choice        "HeLLo woRlD"


답변

펄 5 , 23 바이트

22 바이트 코드 + 1 -p.

s/./rand>.5?uc$&:$&/ge

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


답변

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

s=>s.replace(/./g,x=>Math.random()<.5?x.toUpperCase():x)

균일 한 임의성이 필요하지 않은 경우 현재 시간을 임의성 소스로 사용하여 6 바이트를 절약 할 수 있습니다.

s=>s.replace(/./g,x=>new Date&1?x.toUpperCase():x)

이것은 대문자이거나 한 번에 모든 문자를 남기는 경향이 있습니다.