작업
당신의 임무는 입력시 주어진 대문자를 무작위 문자로 출력하고 이미 대문자 문자를 대문자로 유지하는 프로그램이나 함수를 만드는 것입니다.
소문자의 모든 대문자 조합이 가능해야합니다. 입력이었던 경우, 예를 들어 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 골프로 분기해야 함)은 다음과 같은 이유로이 도전에 도전하기에 끔찍한 언어입니다.
- 문자를 사용한 산술, 대문자의 소문자 또는 알파벳을 아는 것은 전혀 지원하지 않습니다.
- 모든 단일 소문자는 저장하는 데 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
답변
답변
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"
답변
답변
자바 스크립트 (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)
이것은 대문자이거나 한 번에 모든 문자를 남기는 경향이 있습니다.