데일리 챌린지 #100 - 모으기

25805 단어 challenge
우리는 6월 28일에 일일 챌린지 시리즈를 시작했으며 지난 몇 달 동안 귀하의 의견, 제안 및 솔루션을 보는 것은 놀라운 경험이었습니다. 이 게시물에서는 가장 인기 있는 몇 가지 챌린지를 수집했습니다. 읽기 목록에 이러한 문제가 있다면 직접 시도해 보십시오!




우리의 첫 번째 챌린지 게시물은 사용자에게 문자열에서 첫 번째 문자와 마지막 문자를 간단히 제거하도록 요청했습니다. CSS, Ruby, Javascript로 다양한 답변을 해주셨어요!


이 게시물에서 43개의 하트로 가장 인기 있는 댓글을 받았습니다. 그는 우리 커뮤니티 주변의 많은 사람들에게 큰 도움이 되었으며 많은 챌린지 게시물에서 그의 댓글을 볼 수 있습니다.



Alvaro Montoro

github





CSS

클래스removeFirstAndLastLetter를 태그에 추가하고 텍스트에서 "제거된"첫 글자와 마지막 글자를 확인하세요 😋

.removeFirstAndLastLetter {
  background: #fff;
  font-family: monospace;
  white-space: nowrap;
  position: relative;
  display: inline-block;
}

.removeFirstAndLastLetter::before,
.removeFirstAndLastLetter::after {
  content: "\00a0";
  background: #fff;
  top: 0;
  display: block;
  position: absolute;
  height: 100%;
  width: auto;
}

.removeFirstAndLastLetter::after {
  right: 0;
}

추가로 스타일을 지정하고 애니메이션을 적용할 수 있으므로 문자가 페이드 아웃되는 것을 볼 수 있습니다.












우리는 이 게시물이 더 까다로울 것이라고 정말로 생각했지만 정말 짧고 사려 깊은 답변이 많이 들어왔습니다. Daily Challenge #48은 사용자에게 Facebook에서 일반적인 구문을 모방하는 함수를 작성하도록 요청했습니다.


가장 인기 있는 댓글을 다시 얻었습니다. 47개의 게시물도 나중에 올렸습니다!
또한 Haskell을 사용하여 훌륭한 답변을 제공했으며 15개의 하트를 받았습니다.



Avalander
github







Haskell과의 간단한 패턴 매칭.

likes :: [String] -> String
likes []        = "no one likes this"
likes [a]       = a ++ " likes this"
likes [a, b]    = a ++ " and " ++ b ++ " like this"
likes [a, b, c] = a ++ ", " ++ b ++ " and " ++ c ++ " like this"
likes (a:b:xs)  = a ++ ", " ++ b ++ " and " ++ (show $ length xs) ++ " others like this"












Daily Challenge #31은 사용자에게 시작 지점과 끝 지점 사이의 IP 주소 수를 반환하라는 메시지를 표시했습니다.


Ruby의 IPAddr 클래스를 사용하여 건방진 솔루션을 찾았습니다.
위를 넘어 포인트가 반전되면 기능이 작동하도록 만들었습니다. 훌륭했습니다!



Kerri Shotts

github







여기 내꺼야! 시작과 끝이 뒤바뀌면 작동하도록 조금 늘렸습니다.

const convertIPStringToNumber = ipString => ipString.split(".")
    .reduce((acc, part) => (acc << 8) | Number(part), 0);

const ipsBetween = (start, finish) => 
    Math.abs(convertIPStringToNumber(finish) - convertIPStringToNumber(start));

요지: gist.github.com/kerrishotts/797450...









60번째 챌린지는 사용자에게 연속 문자 배열을 입력으로 사용하고 배열에서 누락된 문자를 반환하는 함수를 작성하도록 요청했습니다.


가 남긴 Go 답변에 대한 몇 가지 개선 사항을 제공했습니다.
, 심지어 F#에 자신의 답을 남겼습니다!



Donald Feury

github







사라진 편지를 찾으러 갈 시간입니다!

missing_letter.go

package find

// MissingLetter indicates what the missing character is in a ordered sequence of characters
func MissingLetter(chars []rune) rune {
    var last int

    for _, r := range chars {
        if last != 0 && int(r)-last > 1 {
            return rune(r - 1)
        }
        last = int(r)
    }

    return rune(last)
}


missing_letter_test.go

package find

import "testing"

type testCase struct {
    description string
    input       []rune
    expected    rune
}

func TestMissingLetter(t *testing.T) {
    testCases := []testCase{
        {
            "two characters",
            []rune{'A', 'C'},
            'B',
        },
        {
            "dev-to example one",
            []rune{'a', 'b', 'c', 'd', 'f'},
            'e',
        },
        {
            "dev-to example two",
            []rune{'O', 'Q', 'R', 'S'},
            'P',
        },
    }

    for _, test := range testCases {
        if result := MissingLetter(test.input); result != test.expected {
            t.Fatalf("FAIL: %s - MissingLetter(%+v): %v - expected %v", test.description, test.input, result, test.expected)
        }
        t.Logf("PASS: %s", test.description)
    }
}













Caesar Cipher는 초보자 프로그래머가 데이터 암호화와 같은 더 큰 개념에 대해 생각하기 시작하는 잘 알려진 도전입니다. Daily Challenge #42는 사용자에게 암호 작업을 요청하고 Shift 키와 문자열을 제공하고 일반 텍스트를 요청했습니다.


지난 8월에 이 챌린지 게시물에 무차별 대입 방법을 사용했고 그들이 우리의 최신 챌린지에 대한 솔루션에 대해 언급하는 것을 보았습니다. 멋진 일!



La blatte








시작합니다:

f=(s)=>[...Array(26)].map((_,i)=>26-i).map(n=>`key: ${26-n}\ncipher: ${s}\nplain: ${[...s].map(l=>(a=l.charCodeAt(0),String.fromCharCode(a<123&&a>96?97+((a-97+n)%26):a))).join('')}`).join`\n---\n`

적절한 사전이 없으면 "bruteforce"방법을 고수할 것 같습니다! 작동 방식은 다음과 같습니다.
  • 먼저 26에서 1까지의 숫자를 포함하는 배열을 만듭니다( [...Array(26)].map((_,i)=>26-i) )
  • 현재 색인( 26-n ) 및 암호( s )를 인쇄합니다.
  • 연관된 원본 텍스트를 작성합니다. 각 문자에 대해 charCode가 97에서 122 사이인 경우(따라서 유효한 소문자인 경우) 현재 인덱스를 추가하고 그렇지 않으면 그냥 반환합니다.
  • 마지막으로 전체 결과를 인쇄합니다.

  • f('dwwdfn iurp wkh zrrgv dw gdzq');
    
    "key: 0
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: dwwdfn iurp wkh zrrgv dw gdzq
    ---
    key: 1
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: cvvcem htqo vjg yqqfu cv fcyp
    ---
    key: 2
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: buubdl gspn uif xppet bu ebxo
    ---
    key: 3
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: attack from the woods at dawn
    ---
    key: 4
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: zsszbj eqnl sgd vnncr zs czvm
    ---
    key: 5
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: yrryai dpmk rfc ummbq yr byul
    ---
    key: 6
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: xqqxzh colj qeb tllap xq axtk
    ---
    key: 7
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: wppwyg bnki pda skkzo wp zwsj
    ---
    key: 8
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: voovxf amjh ocz rjjyn vo yvri
    ---
    key: 9
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: unnuwe zlig nby qiixm un xuqh
    ---
    key: 10
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: tmmtvd ykhf max phhwl tm wtpg
    ---
    key: 11
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: sllsuc xjge lzw oggvk sl vsof
    ---
    key: 12
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: rkkrtb wifd kyv nffuj rk urne
    ---
    key: 13
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: qjjqsa vhec jxu meeti qj tqmd
    ---
    key: 14
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: piiprz ugdb iwt lddsh pi splc
    ---
    key: 15
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: ohhoqy tfca hvs kccrg oh rokb
    ---
    key: 16
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: nggnpx sebz gur jbbqf ng qnja
    ---
    key: 17
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: mffmow rday ftq iaape mf pmiz
    ---
    key: 18
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: leelnv qczx esp hzzod le olhy
    ---
    key: 19
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: kddkmu pbyw dro gyync kd nkgx
    ---
    key: 20
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: jccjlt oaxv cqn fxxmb jc mjfw
    ---
    key: 21
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: ibbiks nzwu bpm ewwla ib liev
    ---
    key: 22
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: haahjr myvt aol dvvkz ha khdu
    ---
    key: 23
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: gzzgiq lxus znk cuujy gz jgct
    ---
    key: 24
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: fyyfhp kwtr ymj bttix fy ifbs
    ---
    key: 25
    cipher: dwwdfn iurp wkh zrrgv dw gdzq
    plain: exxego jvsq xli asshw ex hear"
    






    2-Clause BSD 라이선스에 따라 재배포를 허용해 주신 CodeWars에 감사드립니다.

    특별히 감사함
    그리고
    시리즈에 기여했습니다. 향후 게시물에 대한 도전을 제안하고 싶습니까? 귀하의 제안과 함께 이메일을 보내십시오!

    좋은 웹페이지 즐겨찾기