Programing

<10 줄의 간단한 코드로 할 수있는 가장 멋진 일은 무엇입니까?

lottogame 2020. 2. 21. 22:01
반응형

<10 줄의 간단한 코드로 할 수있는 가장 멋진 일은 무엇입니까? 초보자에게 영감을주세요! [닫은]


간단한 코드 몇 줄로 할 수있는 가장 멋진 일을 찾고 있습니다. Haskell에 만델 브로트 세트를 15 줄로 작성할 수 있다고 확신 하지만 따르기가 어렵습니다.

저의 목표는 학생들에게 프로그래밍이 멋지도록 영감을주는 것입니다 .

우리는 당신이 상상하는 것을 만들 수 있기 때문에 프로그래밍이 멋지다 것을 알고 있습니다. 그것은 궁극적 인 창의적 배출구입니다. 나는이 초보자들에게 영감을주고 가능한 한 많은 초기 학습 혹을 극복하고 싶습니다.

이제 내 이유는 이기적입니다. 저는 반 엔지니어링, 반 비즈니스 전공 그룹 60 명 에게 컴퓨터 입문 과정을 가르치고 있습니다 . 모든 신입생. 그들은 소외 계층 고등학교에서 온 학생들입니다. 내 과거의 경험에서, 일반적으로 분할 그룹이 다음과 몇 바위 별 , 아주 열심히 시도 누가 어떤 종류의 그것을 얻을를 매우 열심히 노력하고있는 몇 간신히 그것을 얻을, 그리고 몇 상관하지 않는 사람들. 가능한 한 많은 그룹에 효과적으로 연락하고 싶습니다. 다음은 컴퓨터 프로그램을 사용하여 가르치는 방법에 대한 예입니다.

다음은 내가 찾는 것의 예입니다. 컴퓨터와 대화 할 수있는 1 줄 VBS 스크립트 :

CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")

이것을 사용하여 작업 순서를 보여줄 수 있습니다. 나는 코드를 보여주고, 그것들을 가지고 놀게하고, 그 라인에 많은 일이 진행되고 있다고 설명하지만 컴퓨터는 규칙을 알고 있기 때문에 이해할 수있다. 그런 다음 다음과 같이 표시합니다.

4(5*5) / 10 + 9(.25 + .75)

그리고 내가 먼저해야 할 일은 (5 * 5)입니다. 그런 다음 4를 곱할 수 있습니다. 이제 Object를 만들었습니다. 10으로 나누는 것은 Speak를 호출하는 것과 같습니다. 객체를 갖기 전에 말할 수없고 100을 갖기 전에 나눌 수 없습니다. 다른 쪽에서는 먼저 표시 방법에 대한 지침이있는 InputBox를 만듭니다. . 입력 상자에서 Enter 키를 누르면 입력 한 내용을 평가하거나 "반환"합니다. (힌트 : 'oooooo'는 재미있는 소리를냅니다.) 말할 때 오른쪽은 말할 것입니다. 그리고 나는 그것을 InputBox에서 얻습니다.

따라서 한 줄에 여러 가지 작업을 수행하면 다음과 같습니다.

x = 14 + y;

사물의 순서를 알고 있어야합니다. 먼저 14와 y를 더합니다. 그런 다음 결과 (평가 또는 반환 대상)를 x에 넣습니다.

저의 목표는 재미있게 수업을 시연하고 가르치는 멋진 예제를 많이 보유하는 것입니다. 나는 룸메이트에게이 예제를 시도해 보았지만 이것을 첫 번째 레슨으로 사용할 수는 없지만 그녀는 그것을 좋아하고 무언가를 배웠습니다.

이해하기 쉬운 아름다운 그래프 나 모양을 만드는 멋진 수학 프로그램은 좋은 아이디어 일 것입니다. 다음은 복잡한 액션 스크립트 예제 이지만 약간 너무 고급이므로 플래시를 가르 칠 수 없습니다. 다른 아이디어가 있습니까?


Microsoft Agent 캐릭터를 조작하는 빠른 VB 스크립트를 사용하여 아이들로부터 큰 반응을 얻었습니다. MS Agent에 익숙하지 않은 사용자를 위해 COM 인터페이스를 통해 조작 할 수있는 일련의 애니메이션 화면 문자입니다. Microsoft Agent 다운로드 페이지 에서 코드와 문자를 다운로드 할 수 있습니다 .

다음의 몇 줄은 멀린 캐릭터가 화면에 나타나고, 날아 가며, 화면을 두드리면서주의를 끌고, 인사합니다.

agentName = "Merlin"
agentPath = "c:\windows\msagent\chars\" & agentName & ".acs"
Set agent = CreateObject("Agent.Control.2")

agent.Connected = TRUE
agent.Characters.Load agentName, agentPath
Set character = agent.Characters.Character(agentName)

character.Show

character.MoveTo 500, 400
character.Play "GetAttention"
character.Speak "Hello, how are you?"
Wscript.Sleep 15000
character.Stop
character.Play "Hide"

사용할 수있는 다른 많은 명령이 있습니다. 검사자세한 내용은 http://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx 를 참조하십시오.

편집 2011-09-02 최근에 Microsoft Agent가 Windows 7에 기본적으로 설치되어 있지 않다는 것을 발견했습니다. 그러나 여기 에서 별도의 다운로드로 제공됩니다 . 나는 이것을 테스트하지 않았으므로 작동하는지 확인할 수 없습니다.


주소 표시 줄 (브라우저에서)에이 코드를 입력하고 Enter를 누르십시오. 그러면 웹 페이지의 모든 내용을 편집 할 수 있습니다!

javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

그것은 내가 아는 가장 멋진 "한 줄짜리"입니다 =)


내가 처음 썼을 때

10 PRINT "What is your name?"
20 INPUT A$
30 PRINT "Hello " A$
40 GOTO 30

사람들을 날려 버렸습니다! 컴퓨터는 그들의 이름을 기억했다!

편집 : 이것에 추가하십시오. 새로운 프로그래머를 설득 할 수 있다면 이것이 가장 멋진 일이며 훌륭한 프로그래머가 될 것입니다. 요즘에는 다른 사람이 작성한 라이브러리를 실행하기 위해 한 줄의 코드로 원하는 거의 모든 것을 할 수 있습니다. 나는 개인적으로 그 일에 대해 전혀 만족을 얻지 못하고 그것을 가르치는 데 거의 도움이되지 않습니다.


PHP-Sierpinski 개스킷 (일명 Triforce)

좋아, 그것은 15 줄의 코드이지만 결과는 훌륭합니다! 내가 어렸을 때 나를 놀라게하는 그런 종류의 물건입니다. 이것은 PHP 매뉴얼에서 온 것입니다 :

$x = 200;
$y = 200;

$gd = imagecreatetruecolor($x, $y);

$corners[0] = array('x' => 100, 'y' =>  10);
$corners[1] = array('x' =>   0, 'y' => 190);
$corners[2] = array('x' => 200, 'y' => 190);

$red = imagecolorallocate($gd, 255, 0, 0); 

for ($i = 0; $i < 100000; $i++) {
  imagesetpixel($gd, round($x),round($y), $red);
  $a = rand(0, 2);
  $x = ($x + $corners[$a]['x']) / 2;
  $y = ($y + $corners[$a]['y']) / 2;
}

header('Content-Type: image/png');
imagepng($gd);

시 에르 핀 스키 가스켓


Microsoft는 "kids"를위한 IDE 인 Small Basic을 가지고 있습니다.

pic = Flickr.GetRandomPicture("beach")
Desktop.SetWallpaper(pic)

그것은 멋진 프로그래밍이 얼마나 멋진지를 보여주기 위해 특별히 고안되었습니다.


나는 사람들이 자신의 삶과 관련이 있거나 관련이있는 것들에 깊은 인상을 받았다고 생각하는 경향이 있습니다. 나는 그들이 알고 이해하는 것을 중심으로 10 줄의 코드를 작성하려고합니다. 예를 들어 Twitter와 API를 예로 들어 보겠습니다. 이 API를 사용하여 멋진 것을 만들어보십시오. 다음 10 줄의 코드는 Twitter에서 "공개 타임 라인"을 반환하고 콘솔 응용 프로그램에 표시합니다.

using (var xmlr = XmlReader.Create("http://twitter.com/statuses/public_timeline.rss"))
    {
        SyndicationFeed
            .Load(xmlr)
            .GetRss20Formatter()
            .Feed
            .Items        
            .ToList()
            .ForEach( x => Console.WriteLine(x.Title.Text));
    }

내 코드 샘플이 학생에게 가장 적합하지 않을 수 있습니다. C #으로 작성되었으며 .NET 3.5를 사용합니다. 따라서 PHP, Java 또는 C ++을 가르쳐 줄 경우 유용하지 않습니다. 그러나 제 요점은 10 줄의 코드를 "시원하고 흥미롭고 학생들과 관련이있는 것"과 연관시킴으로써 샘플도 시원하고 흥미롭고 관련성이 있습니다.

행운을 빕니다!

[예, 문장과 Main 메소드를 사용하는 몇 줄을 놓쳤다는 것을 알고 있지만 10 줄이 문자 그대로 10 줄일 필요는 없습니다.]


이것은 사용자 이름을 물어보고 인사하는 Python 텔넷 서버입니다. 네트워크를 통해 다른 컴퓨터에서 프로그램과 통신하기 때문에 멋지게 보입니다.

from socket import *
s=socket(AF_INET, SOCK_STREAM)
s.bind(("", 3333))
s.listen(5)
while 1:
   (c, a) = s.accept()
   c.send("What is your name? ")
   name = c.recv(100)
   c.send("Hello "+name)
   c.close()

요즘 컴퓨터 교육자가되기가 어렵다고 생각합니다. 나는. 우리는 점점 가파른 오르막 전투에 직면 해 있습니다. 본교 학생들은 매우 정교한 사용자 이며 인상을주는 데 많은 시간이 걸립니다. 그들은 놀라운 일을 할 수있는 수많은 도구를 가지고 있습니다.

10 줄의 코드로 된 간단한 계산기? 왜? 이를위한 TI-86이 있습니다.

이미지에 특수 효과를 적용하는 스크립트? 이것이 바로 포토샵입니다. 그리고 Photoshop은 10 줄로 할 수있는 모든 것을 날려 버립니다.

CD를 리핑하고 파일을 MP3로 변환하는 것은 어떻습니까? 어, 이미 BitTorrent에서 가져온 50,000 곡이 있습니다. 이미 MP3 형식입니다. 나는 내 아이폰에서 재생합니다. 어쨌든 누가 CD를 사나요?

정통한 사용자에게 프로그래밍을 소개하려면 다음과 같은 것을 찾아야합니다.

a) 흥미롭고 시원하게 찾은 것에 적용 가능하며 b) 아직 할 수없는 것을 수행합니다.

학생들이 이미 가장 비싼 소프트웨어에 액세스 할 수 있다고 가정하십시오. 그들 중 상당수는 Adobe CS5.5 정식 버전 (소매 가격 : $ 2,600; 실제 가격 : 무료)을 가지고 있으며 일반적으로 부서 예산을 어기는 응용 프로그램을 쉽게 얻을 수 있습니다.

그러나 대다수는이 "컴퓨터"가 실제로 어떻게 작동하는지 전혀 모른다.

그들은 엄청나게 창조적 인 무리입니다 : 그들은 물건을 만들고 싶어합니다. 그들은 단지 친구들이 할 수없는 일을하거나 할 수 있기를 원합니다. 그들은 자랑 할 무언가를 원합니다.

다음은 학생들과 함께 공감 한 것들입니다.

  • HTML과 CSS. 이들은 MySpace 테마의 작동 방식을 배우고이를 사용자 정의 할 수 있습니다.
  • 매시업. 그들은 모두 그들을 보았지만 어떻게 만드는지 모릅니다. 확인 야후! 파이프 . RSS, XML, 텍스트 필터링, 매핑 및 시각화와 같이 가르치는 순간이 많이 있습니다. 완성 된 매시업 위젯은 웹 페이지에 임베드 할 수 있습니다.
  • 작품. 에서 봐 상황에 무료 예술 . 재귀와 무작위 화는 아름다운 사진을 만드는 열쇠입니다.
  • 스토리 텔링. Alice 와 같은 사용하기 쉬운 3D 프로그래밍 환경을 사용하면 드래그 앤 드롭만으로도 고품질의 매력적인 스토리를 쉽게 만들 수 있습니다.

이들 중 어느 것도 전통적인 의미의 프로그래밍과 관련이 없습니다. 그러나 그들은 강력한 라이브러리를 사용합니다. 나는 그것들을 다른 종류의 프로그래밍이라고 생각합니다.


(GWBASIC에서) 가장 좋아하는 것은 다음과 같습니다.

10 input "What is your name ";N$
20 i = int(rnd * 2)
30 if i = 0 print "Hello ";N$;". You are a <fill in insult number 1>"
40 if i = 1 print "Hello ";N$;". You are a <fill in insult number 2>"

초급 학생들에게는 수정해야 할 몇 가지 개념이 있습니다.

  • 컴퓨터는 당신의 마음을 읽지 않습니다.
  • 컴퓨터는 한 번에 한 가지만 수행합니다. 너무 빠르더라도 한 번에 모두 수행하는 것처럼 보입니다.
  • 컴퓨터는 어리석은 기계 일 뿐이며 컴퓨터가 말하는 것만 수행합니다.
  • 컴퓨터는 특정 사항 만 인식하며 이는 빌딩 블록과 같습니다.
  • 핵심 개념은 변수가 값을 포함하고 이름이 해당 값과 다른 것입니다.
  • 프로그램을 편집 한 시간과 프로그램을 실행하는 시간의 차이.

수업에 행운을 빕니다. 나는 당신이 잘 할 것이라고 확신합니다.

추신 : 나는 당신이 물질과 기술과 함께 당신도 태도를 가르치고 있음을 이해하고 있다고 확신합니다.


이 C 코드는 난독 화되었을 수도 있지만 매우 강력하다는 것을 알았습니다.

#include <unistd.h>
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"World! \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}

결과는 다음과 같습니다 ... 3 줄만 ... 프랙탈 종류 Hello World...

WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   !dWW!ddddllllrrrrrrrooooooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           drrWdlllrrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wlddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
olddddd!!!!!WWordlWrd                                          oW!ddllllrrrrrrr
Wlllllllldddd!!odrrdW            o                              lWddllllrrrrrrr
Wrrllllllllddddd!WWolWr        oWoo                              r!dllllrrrrrrr
Worrrlllllllldddd!WolWrr!!dWWWlrrldr                            ro!dlllrrrrrrrr
Worrrrrrrllllllddd!oooWWWoloWWWWoodr                           droWdlllrrrrrrrr
WWorrrrrrrrrrrrllld!!!!!dddd!!!!WWrd !                        rlW!ddllrrrrrrrro
WWoorrrrrrrrrrrrrrrlllddddddddd!!!!oolWW                       lW!ddlrrrrrrrroo
WWWoorrrrrrrrrrrrrrrrrlllllddddddd!!Wdo  l!               rdo!l!r!dlrrrrrrrrooo
WWWWoorrrrrrrrrrrrrrrrrrrlllllllddddWldolrrlo!Wl     r!dlooWWWoW!dllrrrrrrroooo
WWWWooorrrrrrrrrrrrrrrrrrrrllllllllldd!!!!WWWoo      WloW!!!ddddllrrrrrrrrooooo
WWWWWoooorrrrrrrrrrrrrrrrrrrrrlllllllllddd!!!o!!!   WdWW!ddddllllrrrrrrrooooooo
WWWWWWooooorrrrrrrrrrrrrrrrrrrrrllllllllldddd!WorddddoW!ddllllllrrrrrrooooooooo
WWWWWWWoooooorrrrrrrrrrrrrrrrrrrrrrlllllllldddd!orro!o!dllllllrrrrrrooooooooooo
WWWWWWWWoooooooorrrrrrrrrrrrrrrrrrrrrrllllllldd!oWW!!dllllllrrrrroooooooooooooo
WWWWWWWWWWooooooooorrrrrrrrrrrrrrrrrrrrrrrllllld!!ddllllrrrrrrooooooooooooooooo
WWWWWWWWWWWoooooooooooorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrooooooooooooooooooooo
WWWWWWWWWWWWWooooooooooooooooorrrrrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooo
WWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
WWWWWWWWWWWWWWWWWWWWWoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

웹 브라우저를 사용하고 주소 표시 줄에 JavaScript를 입력하고 코드를 실행할 수 있다는 것을 보여주는 것은 어떻습니까?

편집 : 많은 이미지가있는 페이지로 이동하여 주소 표시 줄에서 시도하십시오.

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)

난수를 선택하는 응용 프로그램을 만들 수 있습니다. 그리고 당신은 그것을 추측해야합니다. 당신이 틀렸다면 그것은 높거나 낮음을 말합니다. 그리고 당신이 그것을 추측한다면, 좋은 메시지입니다.

학생들을 위해 노는 것이 멋지다.

적절한 오류 확인이없는 간단한 Python 버전 :

import random

while input('Want to play higher/lower? ').lower().startswith('y'):
    n = random.randint(1, 100)
    g = int(input('Guess: '))

    while g != n:
        print('  %ser!' % (g > n and 'low' or 'high'))
        g = int(input('Guess: '))

    print('  Correct! Congratulations!')

Erik컴퓨터 가 숫자를 추측해야한다고 제안합니다 . 이것은 10 줄의 코드 내에서도 수행 될 수 있습니다 (지금은 적절한 오류 검사가 부족하다는 것이 훨씬 심각합니다. 범위를 벗어난 유효한 숫자는 무한 루프를 유발합니다).

while input('Want to let the pc play higher/lower? ').lower().startswith('y'):
    n = int(input('Give a number between 1 and 100: '))
    lo, hi, guess, tries = 1, 100, 50, 1

    while guess != n:
        tries += 1
        lo, hi = (guess + 1, hi) if guess < n else (lo, guess - 1)
        guess = (lo + hi) // 2

    print('Computer guessed number in %d tries' % tries)

고등학교에서 컴퓨터 수업으로 돌아 왔을 때, 나와 친구 몇 명이 델파이로 프로그램하는 법을 가르쳤다. 이 수업은 주로 Pascal을 사용한 프로그래밍에 중점을 두었으므로 Delphi는 다음 단계로 훌륭했습니다. 델파이의 이벤트 중심 특성과 RAD 기능을 시연했습니다. 수업이 끝날 때 우리는 수업에 샘플 응용 프로그램을 보여주고 그것을 재생산하도록 요청했습니다. 응용 프로그램은 "물어 당신이 술에 취해 있습니까? "두 개의 버튼과 아니오 . ... 다음에 나올 내용을 알고 있다고 생각합니다 .No 버튼은 마우스의 위치를 ​​변경 했으며 클릭하기 거의 불가능했습니다.

학생들과 교사는 좋은 결과를 얻었습니다.

이 프로그램은 버튼을 움직일 위치를 계산하기 위해 간단한 방정식으로 몇 줄의 사용자 작성 코드 만 필요했습니다. 나는 다른 학생들이 그것을 알아 차리지 못했다고 생각하지만, 몇 명은 가깝습니다.


내가 bash 포크 폭탄을 처음 발견했을 때, 나는 그것이 정말로 달콤하다고 생각했다. 그렇게 간단하면서도 깔끔합니다.

:(){ :|:& };:

이것은 부정 행위이며 원격으로 간단하지는 않지만 Allegro 그래픽 라이브러리를 사용하여 20 줄의 C ++로 촬영을 작성했습니다. 라인무엇인지에 대한 실제 기준은 없지만 조금 전에 왔으며 순전히 재미있게 만들어졌습니다. 심지어 조잡한 음향 효과가있었습니다.

그 모습은 다음과 같습니다.

20 줄 http://img227.imageshack.us/img227/8770/20linesxx0.png

그리고 코드 다음과 같습니다 ( 컴파일 해야 함 ).

bool inside(int x, int y, int x2, int y2) { return (x>x2&&x<x2+20&&y>y2&&y<y2+10); }
int main() {
  BITMAP* buffer;
  float px,shotx,shoty,monstars[8],first,rnd,pressed,points = 0, maxp = 0;
  unsigned char midi[5] = {0xC0,127,0x90,25,0x54}, plgfx[] = {0,0,0,10,3,10,3,5,6,5,6,10,8,12,10,10,10,5,13,5,13,10,16,10,16,0,13,0,13,2,3,2,3,0,0,0}, mongfx[] = {0,0, 10,5, 20,0, 17,8, 15,6, 10,16, 5,6, 3,8, 0,0};
  allegro_init(), set_color_depth(32), set_gfx_mode(GFX_AUTODETECT_WINDOWED,320,240,0,0), install_timer(), install_keyboard(),  install_mouse(), buffer = create_bitmap(320,240),srand(time(NULL)),install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT,""),clear_to_color(buffer,makecol32(100,100,255));
    while ((pressed=(!key[KEY_Z]&&pressed)?0:pressed)?1:1&&(((shoty=key[KEY_Z]&&shoty<0&&pressed==0?(pressed=1?200:200):first==0?-1:shoty)==200?shotx=px+9:0)==9999?1:1) && 1+(px += key[KEY_LEFT]?-0.1:0 + key[KEY_RIGHT]?0.1:0) && 1+int(px=(px<0?0:(px>228?228:px))) && !key[KEY_ESC]) {
    rectfill(buffer,0,0,244,240,makecol32(0,0,0));
    for(int i=0;i<8;i++) if (inside(shotx,shoty,i*32,monstars[i])) midi_out(midi,5);
        for (int i=0; i<8; monstars[i] += first++>8?(monstars[i]==-100?0:0.02):-100, points = monstars[i]>240?points-1:points, monstars[i]=monstars[i]>240?-100:monstars[i], points = inside(shotx,shoty,i*32,monstars[i])?points+1:points, (monstars[i] = inside(shotx,shoty,i*32,monstars[i])?shoty=-1?-100:-100:monstars[i]), maxp = maxp>points?maxp:points, i++) for (int j=1; j<9; j++) line(buffer,i*32+mongfx[j*2 - 2],monstars[i]+mongfx[j*2-1],i*32+mongfx[j*2],monstars[i]+mongfx[j*2+1],makecol32(255,0,0));
    if (int(first)%2000 == 0 && int(rnd=float(rand()%8))) monstars[int(rnd)] = monstars[int(rnd)]==-100?-20:monstars[int(rnd)]; // randomowe pojawianie potworkow
    if (shoty>0) rectfill(buffer,shotx,shoty-=0.1,shotx+2,shoty+2,makecol32(0,255,255)); // rysowanie strzalu
    for (int i=1; i<18; i++) line(buffer,px+plgfx[i*2 - 2],200-plgfx[i*2-1],px+plgfx[i*2],200-plgfx[i*2+1],makecol32(255,255,0));
    textprintf_ex(buffer,font,250,10,makecol32(255,255,255),makecol32(100,100,255),"$: %i   ",int(points)*10);
    textprintf_ex(buffer,font,250,20,makecol32(255,255,255),makecol32(100,100,255),"$$ %i   ",int(maxp)*10);
    blit(buffer, screen, 0, 0, 0, 0, 320,240);
  }
} END_OF_MAIN()

요즘 JavaScript는 메모장과 같은 기본 도구를 사용하여 프로그래밍하는 방법을 보여주는 훌륭한 방법입니다.

jQuery 효과는 친구를 놀라게하려는 모든 사람들에게 훌륭한 출발점입니다!

이 페이지에서 공백을 클릭하십시오.

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(document.body).click(function () {
  if ($("#pic").is(":hidden")) {
    $("#pic").slideDown("slow");
  } else {
    $("#pic").slideUp();
  }
});
</script>
</head>
<body><img id="pic" src="http://www.smidgy.com/smidgy/images/2007/07/26/lol_cat_icanhascheezburger.jpg"/>
</body>
</html>

한 가지 고려해야 할 것은 Robocode 와 같은 것인데, 많은 코딩이 추상화되어 기본적으로 로봇에게 무엇을 해야하는지 알려줍니다. 간단한 10 라인 기능으로 로봇이 많은 작업을 수행 할 수 있으며 시각적으로보기 쉬운 결과를 얻을 수 있습니다.

아마도 Robocode 자체는 작업에 적합하지 않지만 이러한 종류의 작업은 작성된 코드를 컴퓨터의 시각적 동작과 관련시키는 좋은 방법이며 예제를 제시해야 할 때 재미있게 볼 수 있습니다.

public class MyFirstJuniorRobot extends JuniorRobot {
 public void run() {
  setColors(green, black, blue);
  // Seesaw forever
  while (true) {
   ahead(100); // Move ahead 100
   turnGunRight(360); // Spin gun around
   back(100); // Move back 100
   turnGunRight(360); // Spin gun around
  }
 }
 public void onScannedRobot() {
  turnGunTo(scannedAngle);
  fire(1);
 }
 public void onHitByBullet() {
  turnAheadLeft(100, 90 - hitByBulletBearing);
 }
}

그래서 어느 날, 나는 충분하다고 결정했습니다. 나는 피아노를 배운다. Elton John과 같은 사람들이 키보드를 완전히 숙달 한 것을 보았을 때 이것이 내가하고 싶은 일이라고 확신했습니다.

실제로 피아노를 배우는 것은 큰 실망이었습니다. 8 학년의 피아노 레슨을 마친 후에도 피아노 연주에 대한 나의 정신적 이미지가 활동을 즐기는 나의 원래 비전과 어떻게 다른지에 대해서는 여전히 감명받지 못했습니다.

그러나, 내가 완전히 즐겼던 것은 음악 이론의 기초가되는 단지 3 개의 등급이었다. 나는 음악의 구성에 대해 배웠다. 나는 마침내 작곡의 세계에서 나만의 음악을 쓰기까지 걸을 수있었습니다. 그 후, 나는 내가 원하는 것을 연주하기 시작했습니다.


새로운 프로그래머, 특히 젊은 프로그래머를 현혹 시키려고하지 마십시오. "10 줄 미만의 간단한 코드"라는 개념은 "나에게 영리한 것을 보여줘"라는 분위기를 불러 일으키는 것 같습니다 .

새로운 프로그래머에게 영리한 것을 보여줄 수 있습니다. 그런 다음 동일한 프로그래머에게이 "성능"을 복제하는 방법을 가르 칠 수 있습니다. 그러나 이것이 프로그래밍에 매료되는 것은 아닙니다. 그들에게 기초를 가르치고 자신의 영리한 10 줄의 코드를 합성하게하십시오.

새로운 프로그래머에게 다음 파이썬 코드를 보여줄 것입니다.

input = open("input.txt", "r")
output = open("output.txt", "w")

for line in input:
    edited_line = line
    edited_line = edited_line.replace("EDTA", "ethylenediaminetetraacetic acid")
    edited_line = edited_line.replace("ATP", "adenosine triphosphate")
    output.write(edited_line)

에 할당 line필요가 없다는 것을 알고 edited_line있습니다. 그러나 그것은 단지 명확하게 유지하고 원본 문서를 편집하고 있지 않음을 보여주기위한 것입니다.

10 줄 미만으로 문서를 상세하게 만들었습니다. 물론, 새로운 프로그래머에게 사용 가능한 모든 문자열 메소드 를 보여주십시오 . 더 중요한 것은 변수 할당, 루프, 파일 IO 및 표준 라이브러리 사용이라는 세 가지 근본적으로 흥미로운 일을 보여주었습니다.

이 코드가 현혹되지 않는다는 데 동의 할 것입니다. 실제로, 그것은 조금 지루합니다. 아니요-실제로 매우 지루합니다. 그러나 그 코드를 새로운 프로그래머에게 보여주고 그 프로그래머가 그 스크립트의 모든 부분을 그 날이 아니라면 일주일 이내에 훨씬 더 흥미로운 것으로 바꿀 수 없는지 확인하십시오. 물론,이 스크립트를 사용하여 간단한 HTML 파서를 만드는 것은 좋지 않지만 다른 모든 것은 시간과 경험이 필요합니다.


대부분의 다른 논평자와 마찬가지로, 수학 문제를 해결하기 위해 코드를 작성하기 시작했습니다 (또는 인디애나 존스 대 좀비와 같은 내가 디자인 할 정말 끔찍한 게임의 그래픽을 만들기 위해).

실제로 수학과 프로그래밍 모두에서 시작한 것은 텍스트 기반에서 시작하여 자신 만의 모험 스타일 게임을 선택하고 더 많은 그래픽 기반 게임을 선택하는 것입니다. 기하학에 들어갈 때까지 그래프 용지를 채색하고 픽셀을 플로팅하기 시작했습니다 ... 그리고 방정식을 사용하여 곡선과 선, 상자 등을 플롯하는 방법을 발견했습니다.

내 요점은, 전형적인 프로그램이 다음과 같은 처리 ( http://processing.org/ )에 실제로 들어갈 수 있다는 것입니다 .

void setup() 
{
  size(200, 200); 
  noStroke();
  rectMode(CENTER);
}

void draw() 
{   
  background(51); 
  fill(255, 204);
  rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
  fill(255, 204);
  int inverseX = width-mouseX;
  int inverseY = height-mouseY;
  rect(inverseX, height/2, (inverseY/2)+10, (inverseY/2)+10);
}

나에게 이것은 미래의 "로고"입니다.

누군가가 코드를 신속하게 그리기 및 변경하고 문제가 발생하는 방식과 이상한 "사고"를 생성 할 수있는 쉬운 "hello world"예제가 있습니다.


AutoIt으로 작성된 스크립트 를 사용하면 전통적인 응용 프로그램 사용과 프로그래밍 사이의 경계가 흐려집니다.

예를 들어, 메모장을 열고 자신의 컴퓨터가 메시지 상자를 통해 자신의 컴퓨터를 모욕하게 한 다음 그 동작을 추적하지 않는 스크립트 :

Run("notepad.exe")
WinWaitActive("Untitled - Notepad")
Send("You smell of human.")
Sleep(10000)
MsgBox(0, "Humans smell bad", "Yuck!")
WinClose("Untitled - Notepad")
WinWaitActive("Notepad", "Do you want to save")
Send("!n")

루프 코딩을 처음 시작했을 때 항상 감동했습니다. 5-10 줄의 코드 (또는 그 이하)를 작성하고 수백 (또는 지정하는 많은) 줄을 인쇄합니다. (PHP와 Java에서 처음 배웠습니다).

for( int i = 0; i < 200; i++ )
{
   System.out.println( i );
}

학생이 시작하기에 좋은 곳은 Greasemonkey 일 수 있다고 생각합니다 . userscripts.org에는 수천 개의 예제 스크립트가 있습니다. 아주 좋은 읽기 자료이며 그 중 일부는 매우 작습니다. 그리스 몽키 스크립트는 웹 페이지에 영향을 미치며, 조작하지 않을 경우 학생들이 이미 익숙하게 사용할 수 있습니다. Greasemonkey 자체는 테스트하는 동안 스크립트를 편집하고 활성화 / 비활성화하는 매우 쉬운 방법을 제공합니다.

예를 들어 다음은 "Google Two Columns"스크립트입니다.

result2 = '<table width="100%" align="center" cellpadding="10" style="font-size:12px">';
gEntry = document.evaluate("//li[@class='g'] | //div[@class='g'] | //li[@class='g w0'] | //li[@class='g s w0']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < gEntry.snapshotLength; i++) {
  if (i==0) { var sDiv = gEntry.snapshotItem(i).parentNode.parentNode; }
  if(i%2 == 0) { result2 += '<tr><td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td>'; }
  if(i%2 == 1) { result2 += '<td width="50%" valign="top">'+gEntry.snapshotItem(i).innerHTML+'</td></tr>'; }
}
sDiv.innerHTML = result2+'</table>';

if (document.getElementById('mbEnd') !== null) { document.getElementById('mbEnd').style.display = 'none'; }

이것은 슬롯 머신의 회전 동작을 시뮬레이션하는 매우 기초적인 텍스트 기반 c # 프로그램입니다. 상금이나 현금 지급에 대한 다른 가능성은 포함되지 않지만, 학생들에게 좋은 연습이 될 수 있습니다.

10 줄 이상입니다.

string[] symbols = new[] { "#", "?", "~" }; // The symbols on the reel
Random rand = new Random();

do
{
    string a="",b="",c="";

    for( int i = 0; i < 20; i++ )
    {
        Thread.Sleep( 50 + 25 * i ); // slow down more the longer the loop runs

        if( i < 10 )
            a = symbols[rand.Next( 0, symbols.Length )];

        if( i < 15 )
            b = symbols[rand.Next( 0, symbols.Length )];

        c = symbols[rand.Next( 0, symbols.Length )];

        Console.Clear();
        Console.WriteLine( "Spin: " + a + b + c );
    }

    if( a == b && b == c )
        Console.WriteLine( "You win. Press enter to play again or type \"exit\" to exit" );
    else
        Console.WriteLine( "You lose. Press enter to play again or type \"exit\" to exit" );
}
while( Console.ReadLine() != "exit" );

Tcl사용하면 약 12 줄의 코드로 저장 버튼이있는 간단한 텍스트 편집기가 있습니다 (그러나 열리지 않으면 다른 8 줄이 필요합니다). 모든 표준 플랫폼에서 작동합니다.

pack [frame .toolbar] -side top -fill x
pack [button .save -text save -command save] -in .toolbar -side left
pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side right -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true
proc save {} {
    set filename [tk_getSaveFile]
    if {$filename ne ""} {
        set f [open $filename w]
        puts $f [.text get 1.0 end-1c]
        close $f
    }
}

목표가 10 줄이라는 것을 알고 있으므로 10 줄 이하를 고수하려면로드하거나 저장하지 않는 간단한 텍스트 편집기는 두 줄입니다. 너무 초라하지 않습니다.

pack [scrollbar .vsb -orient vertical -command [list .text yview]] -side left -fill y
pack [text .text -wrap word -yscrollcommand [list .vsb set]] -side left -fill both -expand true

선택한 플랫폼에서 "wish filename "을 사용하여 위의 코드 블록 중 하나를 실행 하십시오. Wish는 대부분의 * nix 및 Mac과 함께 제공되지만 Windows 용으로 수동으로 설치해야합니다.

한 걸음 더 나아가서 두 줄 스크립트는 파이썬으로 작성할 수도 있지만 여전히 10 줄 목표 아래에 8 줄이 필요합니다.

from Tkinter import *
root=Tk()
text = Text(wrap="word")
sb = Scrollbar(orient="vertical", command=text.yview)
text.configure(yscrollcommand=sb.set)
sb.pack(side="right", fill="y")
text.pack(side="left", fill="both", expand=True)
root.mainloop()

북마크릿은 어떻습니까? 개발 도구없이 매일 사용하는 무언가 (인터넷)를 조작하는 방법을 보여줍니다.


하드웨어를 감당할 수 있다면 Arduino 보드 + 처리를 사용하면 약간의 멋진 것들을 만들 수 있지만 프로그래밍에 전혀 관심이없는 사람들에게는 조금 발전 할 수 있습니다.


나는 최근에 내가 쓴 "가장 짧고 유용한 프로그램" 이라는 기사에 이것을 썼다 .

요약 : 1996 년에 3 라인 VB6 앱을 작성하여 매일 사용하고 있습니다. exe가 "보내기"폴더에 놓이면 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하고 해당 파일의 전체 경로를 클립 보드로 보낼 수 있습니다.

Public Sub Main()   
    Clipboard.SetText Command$   
End Sub  

GW-BASIC으로 프랙탈을 만드는 것이 고등학교 (1993 년경)에 프로그래밍에 대한 사랑을 불러 일으켰 기 때문에 Mandelbrot 세트에 대해 언급 한 것이 흥미 롭습니다. 프랙탈에 대해 배우기 전에 지루한 표준 편차 응용 프로그램을 작성했으며 여전히 저널리즘에 참여할 계획이었습니다.

그러나 작성하기 어려운 길고 기초적인 BASIC 프로그램이 "프랙탈 지형"을 생성하는 것을 보았을 때 나는 푹 빠졌고 결코 뒤돌아 보지 않았습니다. 수학, 과학, 컴퓨터, 학습 방식에 대한 생각이 바뀌 었습니다.

학생들에게 동일한 영향을 미치는 프로그램을 찾으시기 바랍니다.


wxPython 첫 단계

import wx
app = wx.App()
wx.Frame(None, -1, 'simple.py').Show()
app.MainLoop()

simple.py 프레임 http://zetcode.com/wxpython/images/simple.jpg


10 줄 이상의 코드로 바뀔 것이라고 확신하지만 버튼을 누르면 배경색 변경 또는 텍스트 크기 변경과 같은 작업을 수행하는 양식 기반 응용 프로그램을 고려 했습니까? 대화식 프로그램이 작동하는 방식을 보여줍니다. 또한 프로그래머로서 컴퓨터 (프로그램)의 기능을 완전히 제어 할 수 있음을 보여줍니다.

바라건대 그들은 그들이 바꿀 수있는 다른 것들에 대한 제안을하고 나서 그들이하고 싶은 다른 것들에 대한 제안을하도록 이끌었기를 바랍니다.

참고 : https://stackoverflow.com/questions/811074/what-is-the-coolest-thing-you-can-do-in-10-lines-of-simple-code-help-me-inspir



반응형