리포 그램입니까?


52

지방도는 특정 기호를 생략하는 단어 블록입니다. 지금은 일반적으로 나타나는 다섯 번째 기호 인 26을 피하고 있습니다. 당신은 지금 무엇을 생략하고 있는지 알아야합니다. 그렇지 않은 경우 "lipogram"을 찾아 보면 알 수 있습니다.

당신의 작업

문자, 공백 및 다음 문자열 (공백이 표시 될 수 있습니다 (ASCII 32-126 문자 만))이 문자가 입력 문자열에 있으면 거짓을 출력하고 그렇지 않으면 사실입니다. 이 문자는 항상 "A"에서 "Z"또는 "a"에서 "z"(ASCII 65-90, 97-122)의 두 범위에 맞습니다. 자본과 비자 본을 구별하지 마십시오. 또한 공백이나 문장 부호에 대해 걱정하지 마십시오. 프로그램과 기능 모두 만족합니다. 또한 프로그램이나 함수에 대해 입력 문자와 문자열을 두 개의 인수로 나눌 수 있으며 첫 번째 인수는 괜찮습니다.

삽화

Truthy

e This is a lipogram.
a You need to consider other letters too.
E Capitals also count.

거짓

e This sentence is not a lipogram (for e).
t This particular letter is surprisingly hard.
A You don't need to care about any non-alphabetic symbols.

비리 포 그래피 버전

지방도는 글자를 남기는 일련의 단어입니다. 위의 문자 "e"를 생략했습니다.

작업은 문자와 문자열 (공백을 포함 할 수 있음)을 공백 또는 줄 바꿈으로 구분하여 입력으로 취하고 문자가 문자열에 있으면 거짓을 출력하고 그렇지 않으면 거짓을 출력하는 것입니다. 문자열이 인쇄 가능한 ASCII 문자 (문자 코드 32-126)로만 구성되어 있다고 가정 할 수 있습니다. 문자는 항상 영어 알파벳으로되어 있으며 소문자와 대문자 사이에는 차이가 없습니다. 문자는 공백이나 기호가 아닙니다. 프로그램이나 함수를 작성할 수 있습니다. 두 가지 경우 모두 문자와 문자열을 별도의 인수로 사용하고 문자열이 먼저 올 수 있습니다.


전체 프로그램의 경우 별도의 줄로 입력 할 수 있습니까?
Blue

@muddyfish : 그렇습니다.
El'endia Starman

... 첫 번째 인수로 문자열이 정상입니다.
edc65

@ edc65 : 아, 더 좋아.
El'endia Starman

1
당신이 시도해야한다 "와 같은 문자열 당신의 첫 번째 인수는 괜찮습니다." 또는 유사한 구성.
mbomb007

답변:



25

자바 스크립트 ES6 34 26 23 바이트

x=>!/^(.).*\1/i.test(x)

@ MartinBüttner에게 8 바이트를 감사


9
와우, 그 /i영향을 몰랐어요 \1!
Neil

18

05AB1E , 7 6 4 3 바이트

암호:

l`-

설명:

l     # Convert both elements to lowercase
 `    # Flatten the array
  -   # Loop over the second line of text and substract each char from the first character
        For example: "abcde""ba"- would result in "cde"

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

Truthy는 현재 문자가 출력 될 때입니다. 거짓은 아무것도 출력되지 않을 때입니다.


그래서 -효과적으로 수행 보수 작업은?
2012rcampion

@ 2012rcampion 네, 맞습니다. 그러나 두 값이 모두 정수가 아닌 경우에만 가능합니다.
Adnan

14

티 스크립트, 5 3 바이트

AµN

아하! 암시 적 입력을 잊었습니다! TeaScript는 x.처음에 (입력)을 자동으로 삽입 합니다. 그런 다음 변수에 다른 입력 µ이 있고 NOT ( N)인지 확인할 수 있습니다. TeaScript의 가장 큰 장점은 암시 적 입력이라고 생각합니다.

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

설명

  A µ  N
x.A(y).N  // At compile time

x.A // input, has...
(y) // second input
N   // Logical NOT

와. 많은 내장. 즉 JAPT이 내장에 ... :) 다른 2 바이트를 차단 같은이, 생각 나게
ETHproductions

12

배쉬, 16 11 바이트

grep -iv $1

-i대소 문자를 구분하지 않는 플래그이며 -v반전됩니다 (일치하지 않는지 검사).

문자는 명령 행 인수 및 STDIN의 테스트 문자열로 제공되어야합니다.

@ DigitalTrauma 의 도움 으로 5 바이트 감소 !

샘플 실행 :

llama@llama:~$ echo 'This is a lipogram' | ./lipogram.sh e
This is a lipogram.
llama@llama:~$ echo 'This sentence is not a lipogram (for e).' | ./lipogram.sh e

STDIN에서 문장을 읽어보십시오. grep -iv $1. STDIN과 명령 줄 인수를 입력 방법으로 혼합하는 데 아무런 문제가 없습니다. 이전에 해봤지만 아마도 내가 놓친 메타 선례가있을 것입니다.
Digital Trauma

@DigitalTrauma 나는 그것을 고려했지만 조금 스케치 될 것이라고 생각했습니다. 아마도 메타에 관한 주제 일 것입니다.
Doorknob


@Dennis를 찾아보세요!
디지털 외상

1
더 많은 ^D사용자가이 답변에 댓글을 달 수 있습니까 ? @ Downgoat-거기 있습니까? ;-)
Digital Trauma

12

Japt, 12 6 4 바이트

!VoU

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

@Downgoat의 TeaScript 답변은 Japt에 정확히 동일한 내장 기능이 있음을 상기시켜 2 바이트를 줄였습니다.

작동 원리

       // Implicit: U = input char, V = input string
VoU    // Keep only the chars in V that are equal to U, ignoring case.
!      // Take logical NOT. Returns true if no matches were found, false otherwise.

@ CᴏɴᴏʀO'Bʀɪᴇɴ 잊어 버린 내장 덕분에 이제는 더 짧아
졌습니다

6
음이 너무 짧다 더 기다려야
코너 오브라이언


9

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

(c,s)=>!RegExp(c,'i').test(s)

4
c=>s=>!RegExp(c,"i").test(s)바이트를 저장하여 로 답변을 카레 할 수 있습니다 .
코너 오브라이언

c=>s=>!s.match(c,'i'):)
ETHproductions

@ETHproductions match는 하나의 인수 만 취합니다. 두 번째 인수는 Firefox 39 이상에서 콘솔 경고를 기록하며 Firefox 47에서는 전혀 작동하지 않습니다.
Neil

@Neil Firefox 44를 사용하고 있으며 완벽하게 작동하는 것 같습니다.
ETHproductions

@ETHproductions 물론이지만 다른 브라우저에서 작동한다고 믿을 이유가 없으며 곧 Firefox에서 작동을 멈출 것입니다.
Neil

7

파이썬 3, 36

사건을 무시하는 것은 놀랍게도 비싸다.

lambda a,b:a.lower()not in b.lower()

인수를 (char, string)으로 사용합니다



6

O, 8 바이트

{_.@_-=}

문자와 문자열을 취하는 익명 함수입니다.

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

설명

{_.@_-=}

{      }
 _        Lowercase string
  .       Duplicate
   @      Rotate stack
    _     Lowercase character
     -    Remove all instances of the character
      =   Compare to original

이것이 왜 함수가되어야합니까? 왜 프로그램일까요?
Phase

@ phase 나는 어떤 문자가 쪼개 졌는지 알 수 없었다. 어쨌든, 나는 그것이 함수로서 짧아 질 것이라고 확신합니다.
스파게티

6

펄, 11 + 1 = 12 바이트

$_=lc!~lc<>

-p스위치가 필요하고 다음 과 같이 입력을받습니다.$string\n$letter

$ perl -pe'$_=lc!~lc<>' <<< $'this is a lipogram\ne'
1

작동 방식 :

            # -p auto reads input into $_ and auto prints at the end
   lc       # lowercase $_
     !~     # Check against regex
       lc<> # Read next line and lowercase it. '=~' will expect the rValue to be
            # a regex and therefore the result from 'lc<>' will be treated as such
$_=         # Assign result ('1' or '') to $_ which will be printed

쉘을 지정해야합니다. 나에게 Ubuntu의 bash는 입력 한 템플릿에 따라 입력에 상관없이 1을 인쇄합니다. (왜 그런지 모르겠지만 <<<.에 익숙하지 않습니다 .) (그리고 정상적인 STDIN (no <<<)을 사용 하면 문자가 문자열의 마지막 문자가 아닌 한 1을 얻습니다. 문자를 마비시키지 않기 때문입니다. .)
msh210

@ msh210 printf "this is a lipogram\ne\n" | perl -pe'$_=lc!~lc<>'대신 사용할 수 있습니다 . <<< bash 구문입니다.
andlrc

@ msh210 <<<은 stdin을 전달하는 또 다른 방법입니다.
andlrc 2016 년

5

자바, 63 바이트

boolean f(String s,char c){return!s.matches("(?i:.*"+c+".*)");}

(s,c)->!s.matches("(?i:.*"+c+".*)")더 짧은 람다 식 을 작성할 수도 있습니다.
RAnders00

1
그것은 비록 적절한 방법이 될 않을 것이다, 당신은 넣어 가지고 Stringchar곳.
shooqie


5

정말 6 바이트

,ù,ùíu

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

다음과 같이 입력을받습니다. 'string'\n'char'

설명:

,ù,ùíu
,ù      get string (lowercase)
  ,ù    get char (lowercase)
    íu  1-based index (0 if not found)

일과 같지 ,ù,ùìuY않습니까? (이것은 indexOf를 수행하는 I로 추정되지만 어느 것을 수행하는지 기억하지 못합니다)
Quintopia

5

줄리아 0.3, 22 20 바이트

c%s=c&95∉[s...]&95

uppercaseA는 단어.

작동 원리

c%s=c&95∉[s...]&95

c%s=                Redefine the binary operator % so it takes a character c and
                    a string s and...
     c&95                Compute lo bitwise AND of c and 95.
                         This casts the character c to uppercase.
          [s...]         Yield the list of the characters of the string s.
                &95      Compute lo bitwise AND of each chararacter and 95.
                         This casts the characters of s to uppercase.
         ∉               Return a Boolean, signaling non-membership.

4

망막, 11

iA`^(.).*\1

Retina에서 진실 / 허위로 간주되는 것이 확실하지 않습니다. 이는 주어진 문자의 lipogram 인 경우 줄을 에코하고 비어 있지 않은 경우 빈 문자열을 반환합니다.

이것은 여러 줄 입력에도 적용됩니다.

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


빈 문자열은 거짓이므로 중요합니다.
El'endia Starman



4

젤리, 8 바이트

ḢO^O&95P

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

작동 원리

ḢO^O&95P  Main link. Input: S (string)

Ḣ         Pop the first character of S.
 O        Ordinal; compute its code point.
  ^O      XOR it with the code points of the remaining characters.
    &95   AND each result with 95.
       P  Take the product of the results.

잠깐만 젤리가 이기지 않아? 더 골프를 치는 방법이 있어야합니다!
일반 사용자

줄이 관련되어 있지 않은 경우 ...
Dennis

이를 수정해야합니다.
CalculatorFeline



4

파이썬, 34 바이트

lambda c,s:c not in s+s.swapcase()

에 대소 문자를 바꾼 사본을 추가하여 대소 문자를 무시하고 c문자열 에있는 문자를 확인 합니다 . 부정은 길어 보이지만 더 잘 보이지 않습니다. 이것은 같은 길이입니다 :sssnot

lambda c,s:(c in s+s.swapcase())<1

당신은 parens를 생략 할 수 없거나 그렇지 않으면 파이썬은 표현을 연결 된 3 값 불평등 형태의 양식으로 해석합니다 _ in _ < _.

파이썬 3.5는 세트 변환을 통해 33 바이트를 허용해야하지만 지금 테스트 할 수는 없습니다.

lambda c,s:{*c}-{*s+s.swapcase()}

4

파이크, 7 바이트

Dl3+R{!

설명:

D       -     eval_or_not(input()).lower()
 l3     -    ^.swapcase()
   +    -   ^+^
    R   -  rotate 2
     {  -  ^ in ^
      ! - not ^

3

자바 스크립트 ES6, 41 40 바이트

x=>!~x.slice(2).search(RegExp(x[0],"i"))

전체 문자열을 인수로 사용합니다. 내 답변이 다른 ES6 답변으로 녹아 들기 때문에 두 개의 다른 인수를 수락하여 바이트를 절약 할 수 없습니다.


나는 이번에 이긴다, ES6. ;) 귀하의 익명 함수 구문이 my에 일치하지 않습니다 not in.
Morgan Thrapp

@MorganThrapp Gahh, 다시 박살!
코너 O'Brien

그 괜찮아 나는이있어 , 당신은 @MorganThrapp 이동합니다.
Shaun H

3

R, 26 바이트

 function(x,y)!grepl(y,x,T)

x는 문자열, y는 문자, grepl 호출의 T는 대소 문자를 구분하지 않습니다.



2

루비, 17 바이트

->c,s{/#{c}/i!~s}
->c,s{  # lambda with two arguments
/#{c}/  # turn the input character into a regexp w/ interpolation
i       # case insensitive
!~      # does not match
s       # input string
}

2

배치, 53 바이트

@set s=%2
@call set t=%%s:%1=%%
@if %s%==%t% echo 1

입력을 두 개의 명령 행 인수로 승인합니다. (필요한 경우 두 번째 인수를 인용하십시오.) 성공시 1을 출력합니다. 첫 번째 인수가 두 번째 인수에서 (무의식적으로) 발견되면 아무 것도 아닙니다.


2

Mathematica, 33 32 바이트

StringFreeQ[##,IgnoreCase->1>0]&

##을 사용할 수있을 때 좋아합니다. 입력은 문자열이고 char입니다.

또는 대소 문자 구분 버전 : (11 바이트 :)

StringFreeQ

그렇습니다, 단지 내장.

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