페인트 프로그램을 만드십시오!


51

소개

어느 날, 당신은 아이에게 컴퓨터로 그리는 법을 보여주었습니다. mspaint.exe실행 막대를 입력 합니다. 공포에 "검색어와 일치하는 항목이 없습니다"라고 표시되어 있습니다. 아이가 그릴 수 있도록 간단한 페인트 버전을 만들어야합니다!

도전

간단한 드로잉 프로그램을 만들어야합니다. 이렇게하려면 흰색 표시 창을 엽니 다 (99x99 픽셀보다 큼). 마우스를 누를 때마다 마우스가있는 픽셀을 검은 색으로 변경하십시오.

이것은 이므로 바이트 단위의 최단 답변이 승리합니다!


8
픽셀이어야합니까? 아니면 99x99 사각형이 될 수 있습니까?
fəˈnɛtɪk

2
얼마나 오래 달릴 필요가 있습니까?
Rɪᴋᴇʀ

2
TI-Basic Pen이 정확히 이렇게 할 때 : o
Timtech

1
@Riker 10 초 이상, 바람직하게는 영원히 실행되어야합니다
pydude

1
99 × 99보다 크므로 각 차원에 대해 10 진수 표기법으로 3 자리 숫자를 사용해야합니까? 99 × 100 또는 100 × 99가 유효합니까?
Sebastian Simon

답변:


87

8086 기계 코드, 32 31 28 26 바이트

00000000  b8 0f 00 cd 10 b8 02 10  ba 18 01 cd 10 b8 03 00  |................|
00000010  cd 33 4b b8 01 0c eb f3  3f 00                    |.3K.....?.|
0000001a

VGA 그래픽 카드 및 Microsoft 호환 마우스 드라이버가 있다고 가정합니다.

@berendi 덕분에 -2 바이트!

스크린 샷

작동 방식 :

            |   org 0x100
            |   use16
b8 0f 00    |       mov ax, 0x000f      ; set screen mode: 640x350 monochrome
cd 10       |       int 0x10            ; call video bios
b8 02 10    |       mov ax, 0x1002      ; set palette
ba 18 01    |       mov dx, palette     ; pointer to palette data
cd 10       |   @@: int 0x10            ; call video bios
b8 03 00    |       mov ax, 0x0003      ; get mouse position in (CX, DX) and button status in BL
cd 33       |       int 0x33            ; call mouse driver
4b          |       dec bx              ; if no buttons pressed, --BX = 0xFFFF (invalid page)
b8 01 0c    |       mov ax, 0x0c01      ; plot pixel with color AL at (CX, DX) in page BH
eb f3       |       jmp @b              ; repeat
3f 00       |   palette db 0x3f, 0x00   ; palette in 2:2:2 rgb. color 0 = white, 1 = black.
            |                           ; this should be a 17-byte struct, but we only care about the first two colors here

그것이 전부입니다. 마법이 필요없고 몇 번의 함수 호출 만 있습니다.


1
깨끗하고 명확하며 영리한 코드. 아주 잘 했어요! 크기에 맞게 최적화 할 수있는 곳은 없습니다. 나는 CuteMouse 드라이버를 사용하여이 시도 몇 가지 이유를 들어,이 무 않고 마우스 버튼이 아래로 개최 될 필요가 있지만, 그것은 단지 CuteMouse 100 %가 마이크로 소프트 호환되지 않는에 문제가있을 수 있습니다. 어떤 드라이버를 테스트에 사용 했습니까?
코디 그레이

2
흠. 디버거 (물론 오래된 DEBUG.COM, 물론!)로 코드를 실행 한 후 CuteMouse 드라이버에 문제가없는 것 같습니다. 버튼을 누르고 INT 33h있지 않으면 0 in이 반환 BX되고 예상대로 FFFFh로 감소하지만 선이 계속 그려집니다. 모드 11h에 비디오 페이지가 하나만 있고 잘못된 페이지 번호가 자동으로 수정 되었기 때문일 수 있습니다. VM VirtualBox에서 테스트 중이므로 BIOS 구현이 수행하는 것일 수 있습니다.
코디 그레이

2
VirtualBox가 여기에서 비난하는 것처럼
보이며

2
빌 앳킨슨 자신도 이것을 자랑스럽게 생각합니다. 훌륭한 일.
Wossname

4
-2 바이트 의 마지막을 제거 int 0x10, jmp두 번째로 다시 int 0x10대신. 오프셋 jmp은 동일하게 유지되고 주소를 조정합니다.mov dx
berendi-항의 시사회

25

스크래치, 10 개의 스크래치 바이트

스크래치는 실제로 이와 같은 것을 위해 설계되었습니다.

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


이것이 실제로 픽셀을합니까? 또한 마우스를 빠르게 누르고있는 동안 마우스를 약간 누르고 있으면 (물론 움직이지 않고) 다른 결과가 나타납니다. 나는 이것이 무효라고 생각합니다.
Rɪᴋᴇʀ

19
현재 우리가 사용하는 점수에 따르면 이것은 10 개의 스크래치 바이트가 아닙니다.
Okx

2
스크래치 블록 앱을 사용하여 텍스트 또는 SB2 파일 크기로 변환해야합니다.
Matthew Roh

2
이전 스크래치 답변에 사용한 점수를 사용하고 있습니다. 누군가 현재 점수에 나를 연결시켜 줄 수 있습니까? @Okx
dkudriavtsev

8
@Mendeleev 확실하지 않지만, 아마도이 스크래치 스코어링 시스템을 언급하고있을 것입니다 .
FreeAsInBeer

20

HTML + JavaScript (ES6), 66 64 62 바이트

HTML

<canvas id=c>

자바 스크립트

onclick=e=>c.getContext`2d`.fillRect(e.x,e.y,1,1)

Gustavo Rodrigues 덕분에 2 바이트를 절약하고 Shaggy에서 2 바이트를 절약했습니다.

onclick=e=>c.getContext`2d`.fillRect(e.x,e.y,1,1)
/* This css isn't needed for the program to work. */
*{margin: 0}
#c{border:1px solid black}
<canvas id=c>


어때요 <canvas id=c>?
구스타보 로드리게스

2
실제로 커서가있는 곳이 아니라 화살표 오른쪽 아래에 점이 나타납니다. 이것은 의도적 인 것입니까?
Anoplexian

c.JS 시작 부분에서 를 삭제하여 2 바이트를 절약하십시오 . @Anoplexian, 그것은 margin몇 픽셀 씩 물건을 버리는 기본 몸체 입니다.
Shaggy

4
이 작업을 어떻게합니까? 결과 영역을 클릭하고 있으며 아무것도하지 않습니다.
numbermaniac

1
@Anoplexian 알려진 문제입니다. 요소에서 마우스 커서의 상대적 위치를 얻는 신뢰할 수있는 방법은 없습니다 (새로운 유형의 CSS 패딩이 도입 될 때 실패하는 브라우저 고유의 기능이 부족합니다).
wizzwizz4

17

C + 윈 32 209 200 195 바이트

고마워, 코디와 쿠엔틴! 나는 그것을 제거하기를 바랐 #include <windows.h>지만 이것은 모든 종류의 오류로 이어진다. 적어도 여러 모니터에서 올바르게 작동합니다 ...

#include<windows.h> 
struct{int h,m,w,x:16,y:16;}m;h;main(){for(h=CreateWindow("EDIT","",1<<28,0,0,199,199,0,0,0,0);GetMessage(&m,h,0,0);m.m^513?DispatchMessage(&m):SetPixel(GetDC(h),m.x,m.y,0));}

이전 코드 :

#include<windows.h> 
main(){MSG m;HWND h;for(h=CreateWindow("EDIT","",1<<28,0,0,199,199,0,0,0,0);GetMessage(&m,h,0,0);m.message^513?DispatchMessage(&m):SetPixel(GetDC(h),LOWORD(m.lParam),HIWORD(m.lParam),0));}

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


2
지금은 테스트 할 수 없습니다, BU 난 당신의 선언을 병합 할 수 있습니다 생각 hfor두 바이트 : 저장 초기화
쿠엔틴

나는이 코드 골프 실감 그리고 여기 바람직 할 수 있지만 LOWORD하고 HIWORD있습니다 하지 커서를 추출하는 올바른 방법 꽉 찬에서 좌표 LPARAM. 당신이 사용되어야 GET_X_LPARAM하고 GET_Y_LPARAM, 그렇지 않으면 당신은 다중 모니터 잘못된 결과를 얻을 것이다.
코디 그레이

@Quentin, C ++에서는 작동하지만 c에서는 작동하지 않습니다. 나는 c ++을 사용할 수 있었지만 int main4 바이트를 더 추가했을 것입니다.
Johan du Toit

@Cody, 공정한 의견. 테스트 할 다중 모니터 시스템이 없지만 사용 (short)LOWORD()하고 (short)HIWORD()문제를 해결할 것이라고 생각 하십니까?
Johan du Toit

Quentin이 제안한 것은 C99를 포함한 모든 최신 버전의 C에서 잘 작동합니다. 물론, C89 / 90에 멈춰있는 변수 C 범위 지정 규칙과 함께 Microsoft의 C 컴파일러를 사용하고 있습니다. C89는 또한 main암시 적 int규칙으로 인해 함수의 반환 유형 을 생략 할 수있는 이유이기도합니다 . 문제는 return 0;C89 및 MSVC에서 정의되지 않은 동작 의 원인을 생략하는 것 입니다. C99 및 C ++에서는에 대한 반환 유형이 필요 main하지만 return 0;암시 적이므로 불필요합니다. 글쎄, 언어는 코드 골프를 위해 만들어지지 않았다. :-)
코디 그레이

10

처리 중, 98 79 바이트

@dzaima 덕분에 19 바이트 절약

void setup(){background(-1);}void draw(){if(mousePressed)point(mouseX,mouseY);}

설명 (오래됨)

void setup() {
  size(100,100);            // size of the sketch
  background(-1);           // set the background to white
                            // 1 byte shorter than background(255);
}

void draw(){}               // required for mousePressed to work

void mousePressed() {       // function that is called whenever the mouse is pressed
  point(mouseX, mouseY);    // draw a point at the mouse's coordinates
                            // the colour is set to black as default
}

clicketty 클릭


@dzaima 나는 size(100,100);언급 할 필요가 없습니다 , 몰랐어요 ! (또한 if(mousePressed)비트를 보지 못한 이유도 모르겠습니다 )
Kritixi Lithos

7

자바 스크립트 ES6, 126 바이트

크롬에서 테스트되었습니다.

onclick=e=>document.body.outerHTML+=`<a style=position:fixed;top:${e.y}px;left:${e.x}px;width:1px;height:1px;background:#000>`

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

onclick=e=>document.body.outerHTML+=`<a style=position:fixed;top:${e.y}px;left:${e.x}px;width:1px;height:1px;background:#000>`


7

하스켈 189 184 170 169 바이트

import Graphics.Gloss.Interface.Pure.Game
main=play FullScreen white 9[]Pictures(#)(\_->id)
EventKey(MouseButton LeftButton)Down _(x,y)#l=Translate x y(Circle 1):l
_#l=l

Gloss라이브러리 (v1.11)를 사용합니다 . 전체 화면 창을 열고 마우스 왼쪽 버튼을 눌러 검은 색 픽셀 (사실 반경이 1 인 원)을 그립니다. ESC종료하려면 누르 십시오.

작동 방식 :

play                 -- handles the whole event handling, screen update, etc. process
    FullScreen       -- use a full screen window
    white            -- use a white background
    9                -- 9 simulation steps per second (see simulation handler below)
    []               -- the initial world state, an emtpy list of circles
    Pictures         -- a function to turn the world state into a picture.
                     -- The world state is a list of translated circles and
                     -- "Pictures" turns this list into a single picture
    (#)              -- event handler, see below
    (\_->id)         -- simulation step handler. Ignore time tick and return the
                     -- world state unchanged. More readable: "\tick world -> world"

EventKey ... # l=... -- if the left mouse button is pressed, add a circle with
                     -- radius 1 translated to the current position of the mouse
                     -- to the world state
_#l=l                -- on all other events do nothing

편집 : @ ceased counterclockwis는 전체 화면 창을 사용할 때 5 바이트를 절약하는 최신 버전의 광택에 대해 알려줍니다. 감사!


FullScreen광택> = 1.11, 5로 점수 차를 좁히는에 인수 없음이다 (I 오류를 받고 있어요 unknown GLUT entry glutInit하지만, 그러나 아마 내 과잉 설정 그냥 작동하지 않습니다.이 컴퓨터에 그것을 사용하지 않음)
counterclockwis 설정을 중단

@ceasedtoturncounterclockwis : 아, 힌트 주셔서 감사합니다. 시스템에 1.10.2.3이 설치되었으며 최신 버전으로 업데이트되었습니다.
nimi

5

SmileBASIC 2, 52 51 바이트

이 사람은 SmileBASIC의 아빠, 쁘띠 컴퓨터에서 실행 (이고 두 바이트 짧다.)

PNLTYPE"OFF
GPAGE 1GCLS 15@A
GPSET TCHX,TCHY
GOTO@A

설명:

PNLTYPE"OFF       'turn off keyboard
GPAGE 1           'set graphics to lower screen
GCLS 15           'clear with color 15 (white)
@A                'loop begin
GPSET TCHX,TCHY   'set black pixel at draw location
GOTO@A            'loop

GPSET TCHX,TCHY:GOTO@A기본 색상이 0 (투명)이므로 1 바이트를 절약 할 수 있습니다 .
12Me21

4

자바 스크립트 + jQuery 138 바이트

d=$(document.body).click((e)=>d.append("<div style='background:black;width:5;height:5;position:fixed;top:"+e.pageY+";left:"+e.pageX+"'>"))

온라인으로 확인하십시오!

클릭 앤 드래그 지원을 추가하는 것은 간단 할 것입니다. 그러나 변수를 설정하고 지침에 따라 코드를 단축 할 수는 없습니다. "마우스를 누를 때마다 마우스가있는 픽셀을 검은 색으로 변경하십시오" . 나는 지시를 click사건 으로 해석했다 .


3
히야! 다음에는 새 답변을 작성하는 대신 이전 답변을 삭제 취소해야합니다. 또한 이것이 지정된 환경에서 작동해야 할까봐 걱정됩니다. 바닐라 자바 ​​스크립트 인 경우 제출과 함께 jQuery의 바이트 수를 포함해야합니다. 이 제출물을 "JavaScript + jQuery"라고 부를 수 있으며, jQuery가 설치된 것으로 가정 할 수 있습니다. 이 답변이 현재 서있는 것처럼, 자바 스크립트 답변에는 더 많은 "HTML"답변이 있습니다.
Conor O'Brien

1
@ ConorO'Brien 다음에 꼭하겠습니다. 귀하의 제안을 사용하여 답변을 업데이트했습니다.
Neil

4

SpecBAS- 61 59 바이트

1 CLS 15 
2 IF MOUSEBTN=1 THEN PLOT MOUSEx,MOUSEy
3 GO TO 2

검은 색은 이미 기본 펜 색상이지만 배경은 일반적으로 거친 회색 음영이므로 CLS 15밝은 흰색으로 설정합니다.

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


대부분의 기본 변형은 명령 번호와 해당 줄의 코드 사이에 공백이 필요하지 않습니다.
Pavel

당신이 반환 (포함 충돌 후 SpecBAS 모든 공간이 추가 GOTO되는 GO TO)
브라이언

1
그러나 공백을 제거하고 여전히 잘 실행할 수 있습니까? 그렇다면 계산하지 않습니다.
Pavel

사용자가 검은 색 만 칠하는 것을 신경 쓰지 않는다면 왜 회색 배경을 신경 쓰겠습니까?
Cees Timmerman

3

SmileBASIC, 70 58 53 바이트

XSCREEN 4GCLS-1@L
TOUCH OUT,X,Y
GPSET X,Y+240,0GOTO@L

설명 :

XSCREEN 4 'display one graphics page on both screens
GCLS -1 'fill screen with white
@L 'loop
TOUCH OUT,X,Y 'get touch location
GPSET X,Y+240,0 'draw black pixel at touch position, offset by the height of the top screen.
GOTO @L 'loop

3

클로저, 91 71 바이트

use가져 오기 축소에 사용할 수있는 @cfrick 덕분에 -20 바이트 .

(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))

Quil 라이브러리를 사용합니다 . 마우스를 드래그 할 때마다 점을 그립니다.

Quil은 Clojure의 처리 래퍼이므로 기본적으로 처리 답변입니다.

(q/defsketch P ; Start a new drawing

             :mouse-dragged ; Attach a mouse drag listener
             ; that draws a point at the current mouse location
             #(q/point (q/mouse-x) (q/mouse-y))) 

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


71 :(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))
cfrick

@cfrick LOL, 나는 use그것이 "적절하지 않기"때문에 항상 잊어 버린다 감사합니다.
Carcigenicate

3

Tcl / Tk, 45 46 51 57

gri [can .c]
bind . <1> {.c cr o %x %y %x %y}

오각형


즉, 하나 못 생기고 pentogram 😁이다
요한 뒤 투아

1
@JohanduToit : 별이 마음에 들지 않습니까?
sergiol

2

자바 7, 353 바이트

import java.awt.*;import java.awt.event.*;class M{static int x,y;public static void main(String[]a){Frame f=new Frame(){public void paint(Graphics g){g.drawLine(x,y,x,y);}};f.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e){x=e.getX();y=e.getY();f.repaint(x,y,1,1);}});f.setBackground(Color.WHITE);f.resize(500,500);f.show();}}

언 골프 드 :

import java.awt.*;
import java.awt.event.*;

class M {
    //store the last point
    static int x, y;
    public static void main(String[] a) {
        Frame f = new Frame() {
            @Override
            public void paint(Graphics g) {
                g.drawLine(x, y, x, y);
            }
        }
        f.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                x = e.getX();
                y = e.getY();
                //repaint only the "new pixel"
                f.repaint(x, y, 1, 1);
            }
        });
        //default background is grey
        f.setBackground(Color.WHITE);
        f.resize(500, 500);
        f.show();
    }
}

2

Python2 Python3, 82 바이트 (또는 77?)

from turtle import *;up();onscreenclick(lambda x,y: goto(x,y)or dot(1));mainloop()

Turtle 모듈을 사용하면 나쁘지 않습니다 :)

언 골프 드 :

import turtle
turtle.up()

def fun(x, y):
    turtle.goto(x,y)
    turtle.dot(1)

turtle.onscreenclick(fun)
turtle.mainloop()

점 사이에 선이있는 것이 좋다면 실제로 5 바이트를 절약 할 수 있습니다.

from turtle import *;onscreenclick(lambda x,y: goto(x,y)or dot(1));mainloop()

거북이 수입에서 *; up (); onclick (lambda * x : goto (* x) 또는 dot (1)); done ()
innisfree

70 바이트입니다
이니스프리

2

Excel VBA, 62 바이트

사용자가 간단히 시트를 선택하여 모든 시트에 그릴 수있는 익명의 VBE 즉시 창 기능

Cells.RowHeight=48:Do:DoEvents:Selection.Interior.Color=0:Loop

샘플 출력

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


1

HTML + 자바 스크립트, 152 148 바이트

<body onclick="document.body.innerHTML+='<x style=position:fixed;width:1;height:1;left:'+event.clientX+';top:'+event.clientY+';background:#000;>'"/>

1

튜링 , 77 바이트

var x,y,b:int loop mousewhere(x,y,b)if b=1then drawdot(x,y,1)end if end loop

언 골프 드 :

var x,y,b : int      
loop
  mousewhere(x,y,b)  % Set (x,y) to mouse co-ords, and b to 1 or 0 indicating if the button is pressed
  if b=1 then
    drawdot(x,y,1)  % Draw a black pixel at (x,y)
  end if
end loop

1

HTML + CSS + 자바 스크립트 (ES6), 8 + 31 + 64 = 103 바이트

CSS와 재미 box-shadow!

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x}px ${e.y}px 0`
*{margin:0;width:1px;height:1px
<p id=p>

HTML + CSS + 자바 스크립트 (ES6), 8 + 22 + 69 = 99 바이트

이 사람은 기본 상쇄하기 위해 시도 margin<body>요소를하지만, 브라우저와 사용자 에이전트 스타일에서 다를 수 있습니다. Chrome에서 성공적으로 테스트되었습니다.

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x-8}px ${e.y-16}px 0`
*{width:1px;height:1px
<p id=p>

HTML + CSS + 자바 스크립트 (ES6), 8 + 18 + 69 = 95 바이트

이 픽셀은 반 픽셀 좌표로 그려 질 때 더 크게 보일 수 있습니다.

s='0 0 0',onclick=e=>p.style.boxShadow=s+=`,${e.x}px ${e.y}px 0 .5px`
*{margin:0;width:0
<p id=p>


1

TI 기본, 1 바이트

Pt-Change(

TI calcs를 사용하는 대부분의 사람들은 Pen명령을 생각 했지만 토큰 화되지 않았으므로 3 바이트로 계산하는 것이 가장 합리적이라고 생각합니다. http://tibasicdev.wikidot.com/pt-changePt-Change( 에서 대화식 버전에 대해 읽을 수 있습니다.


TI 도전은 내가 아는 한 마우스 입력을 처리 할 수 ​​없습니다.
Grimmy

2
@Grimy 고집하면 항상 usb8x 라이브러리를 사용하여 대신 USB 마우스 입력을 얻을 수 있습니다. 그러나 기본 커서 탐색으로 충분하다고 확신합니다.
Timtech

1

Lua (love2d 프레임 워크), 180 바이트

골프 버전

l=love v,g,m,p=255,l.graphics,l.mouse,{}d=m.isDown function l.draw()g.setBackgroundColor(v,v,v)if d(1)or d(2)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end

언 골프

l=love 
v,g,m,p=255,l.graphics,l.mouse,{}
d=m.isDown 
function l.draw()
  g.setBackgroundColor(v,v,v)
  if d(1)or d(2)then 
    p[#p+1],p[#p+2]=m.getPosition()
  end 
  g.setColor(0,0,0)
  g.points(p)
end

작동 방식이 아주 쉽습니다. 먼저 몇 가지 초기화를 통해 작업 시간을 줄입니다. 그런 다음 마우스를 클릭하여 점을 배열에 저장합니다. 그 후 포인트를 그립니다. 또한 색상을 흰색 및 검은 색으로 설정합니다. 기본값은 다른 방법입니다
.

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


1
믿거 나 말거나, 나는 최근에 그것에 대해 발견하고 사랑했을 때 Love2d를 사용하여 답변을 게시하기 위해 여기에 왔으므로 좋은 노력을 위해 +1하십시오! 어쨌든, 나는 당신이 이것을 다음과 같이 조금 더 줄일 수 있다고 생각합니다 : l=love v,g,m,p=255,l.graphics,l.mouse,{}function l.draw()g.setBackgroundColor(v,v,v)if m.isDown(1)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end169 바이트가됩니다!
DimP

1
나는 같은 종류의 여기에 왔는데, 그것을 알고있는 다른 사람들이 있다는 것을 알게되어
기뻤


1

glslsandbox 232 바이트

오래된 게시물이지만이 흥미로운 것을 발견했습니다.
처리가 이미 완료된 후 다른 작업을 수행하기로 결정했습니다.

이것은 마우스가 눌 렸는지 여부를 나타내므로 pydude가 요청한 것이 아니라 거의 그렇습니다.

#ifdef GL_ES
precision lowp float;
#endif
uniform float time;uniform vec2 mouse,resolution;uniform sampler2D t;void main(){vec2 f=gl_FragCoord.xy,r=resolution;gl_FragColor=vec4(time<2.||length(f-mouse*r)>2.&&texture2D(t,f/r).x>.1);}

glslsandbox에서 사용해보십시오


0

공백이 계산되지 않으면 93 바이트, 91 바이트 처리

void setup(){size(100,100);background(-1);}void draw(){if(mousePressed) point(mouseX,mouseY);}

1
PPCG에서 챌린지에 언급되지 않은 경우 공백과 모든 항목이 정상적으로 계산됩니다 (기본적으로 UTF-8은 선택한 인코딩에서 바이트로 표시). 따라서 첫 번째 공백은 프로그램을 중단하지 않고 제거 할 수 없으므로 두 번째 공백은 안전하게 제거 할 수 있으므로 점수는 92 바이트입니다.
dzaima

0

wxWidgets가있는 UCBlogo, 65 바이트

setbg 7
setpc 0
ht
pu
make "buttonact[setpos clickpos pd fd 1 pu]

설명 (변수에 지정된 코드 buttonact는 각 버튼 클릭시 실행 됨) :

SetBackground 7 ; white
SetPenColor 0 ; black
HideTurtle
PenUp
make "buttonact [
  SetPos ClickPos
  PenDown
  Forward 1
  PenUp
]

적어도 이것이 효과가 있다고 생각합니다. 그것은 문서 에 따라야 하지만 분명히 buttonact변수는 wxWidgets 빌드에서만 작동하며 현대 Linux에서 wxWidgets로 UCBLogo를 빌드하는 데 어려움을 겪고 있습니다 (waddyamean은 포인터를 int되돌릴 수 없습니까?).

wxWidgets가없는 UCBlogo, 73 바이트

의도 한 효과를 보려면 무한 루프로이 더 긴 버전을 실행할 수 있습니다.

setbg 7 setpc 0 ht pu
while[1=1][setpos mousepos if[button?][pd] fd 1 pu]

그러나 이것은 ucblogo내 컴퓨터에서 충돌 합니다 ... 경쟁 조건처럼 보입니다.

UCBlogo, 실제로 내 컴퓨터에서 80 바이트 작업

setbg 7 setpc 0 ht pu
while[1=1][setpos mousepos if[button?][pd] fd 1 pu wait 1]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.