Utwórz pole wyboru


51

Napisz program, który tworzy dwustanowe pole wyboru, z którym ludzie mogą wchodzić w interakcje za pomocą myszy.

W szczególności twój program powinien spełniać wszystkie poniższe warunki:

  1. Mieć obszar ekranu o wymiarach 8 × 8 pikseli (lub w razie potrzeby większy), który jest klikalnym obszarem pola wyboru. Odtąd ten region jest po prostu nazywany polem wyboru.

  2. Gdy kursor myszy zostanie przesunięty w polu wyboru i naciśnięty zostanie domyślny * przycisk myszy, pole wyboru powinno przełączać stany.
    Zaznaczone staje się niezaznaczone. Odznaczone zostanie zaznaczone.

  3. Pole wyboru nie powinno się poruszać po przełączeniu.

  4. W stanie zaznaczonym pole wyboru może mieć dowolny kolor.

  5. W stanie niezaznaczonym pole wyboru może mieć dowolny kolor, o ile przynajmniej 16 pikseli jest wizualnie różne od stanu zaznaczonego .

  6. W jednej instancji programu wszystkie zaznaczone stany powinny być wizualnie identyczne, a wszystkie niesprawdzone stany powinny być wizualnie identyczne.

  7. Nie kończ programu, dopóki nie zostanie wyraźnie zakończony (np. Za pomocą przycisku wyjścia lub Alt + F4), aby użytkownik mógł kliknąć pole wyboru, ile chce.

* Możesz założyć, że domyślnym przyciskiem myszy jest zawsze kliknięcie lewym przyciskiem, ale dobrze jest też użyć domyślnego zdefiniowanego przez oprogramowanie myszy lub system operacyjny, który w rzeczywistości może nie być lewym kliknięciem w zależności od użytkownika.

Notatki

  • Nie ma znaczenia, co znajduje się poza regionem pola wyboru. Może to być po prostu pulpit. Może to być część konsoli, która zmienia się przy każdym przełączeniu.

  • Nie ma znaczenia, w jakim stanie zaczyna się Twoje pole wyboru.

  • Obszar pola wyboru może mieć dowolne wymiary o wymiarach 8 × 8 pikseli lub powyżej. To nie musi być kwadratowe.

  • Możesz wprowadzić drobne poprawki dla ustawień, które są poza twoją kontrolą, takich jak rozmiar czcionki konsoli, powiększenie przeglądarki, rozdzielczość monitora itp. Tak długo, jak twój program działa w rozsądnych ustawieniach testowych, powinien być poprawny.

  • Jeśli Twój program otworzy okno, możesz założyć, że zostało przeciągnięte w odpowiednie miejsce na ekranie, jeśli to konieczne (np. Lewy górny róg).

  • Możesz używać języków znaczników, takich jak HTML lub inne języki, których zwykle nie uważamy za pełnoprawne języki programowania.

  • Twoje pole wyboru musi być przełączalne za pomocą domyślnego przycisku myszy. Jest w porządku, jeśli przełącza się także na inne formy wprowadzania danych (np. Prawy przycisk myszy), z wyjątkiem ruchu myszy . tzn. stan nie powinien się zmieniać, jeśli mysz jest jedynie przesuwana w polu wyboru.

  • Zachęcamy do tworzenia zrzutów ekranu z pola wyboru w akcji!

Punktacja

Najkrótszy kod w bajtach wygrywa.

Przykład

Kanoniczny przykład HTML w 23 bajtach.

<input type="checkbox">

Dla mnie w Google Chrome sprawia, że ​​pole wyboru 12 × 12 pikseli i około 30 pikseli wyraźnie zmienia się między stanem zaznaczonym a niezaznaczonym.

Przyjmuję do wiadomości, że powiększenie przeglądarki wynosi 100%.


2
Czy pole wyboru może obejmować cały ekran?
Kritixi Lithos

@KritixiLithos Tak, to byłoby poprawne. Pamiętaj jednak, że w razie potrzeby możesz policzyć dany region 8x8 jako oficjalne pole wyboru, nawet jeśli większy region działa.
Calvin's Hobbies

@Helka Homba - czy aplikacja może wyświetlać inne elementy sterujące oprócz samego pola wyboru?
zeppelin

Czy pole wyboru może być przełączane na inne rodzaje danych wejściowych? (Na przykład, czy rozwiązanie jest poprawne, jeśli pole wyboru przełącza się przy każdym wprowadzaniu przez użytkownika, niezależnie od tego, czy jest to kliknięcie myszą, ruch myszy, czy naciśnięcie klawisza? Przełączałoby się po kliknięciu myszą, ale inne bodźce też.)

1
@zeppelin „Nie ma znaczenia, co znajduje się poza regionem pola wyboru. Może to być po prostu pulpit. Może to być część konsoli, która zmienia się przy każdym przełączeniu.” Tak długo, jak pole wyboru jest obecne, nie ma znaczenia, co jeszcze jest.
Calvin's Hobbies

Odpowiedzi:



31

HTML, 20 bajtów

Nie wiem, jak ważne będzie to jako odpowiedź. HTML wymaga, aby tag został zamknięty w celu legalnego sprawdzenia poprawności, ale nowoczesne przeglądarki automatycznie je zamkną, aby był wykonywalny.

<input type=checkbox


3
Wcześniej patrzyłem na to jako opcję (bez cudzysłowów), ale całkowicie przegapiłem zamknięcie >. +1 i ważny IMHO.
ElPedro

1
Na tej stronie języki są definiowane według ich implementacji, więc wydaje mi się, że to w porządku.
John Gowers

1
Dzięki @JohnGowers, zastanawiałem się nad definicją dopuszczalnego nadużycia.
stycznia

27

Bash , 67 55 50 35 32 31 bajtów

:()(read -p$[i^=1]
›?9h -sn6
:)

Kod zawiera bajt CR (pierwsza nowa linia) i bajt CSI (mały nawias prostokątny z kodowaniem Windows-1252). Wymaga xterm (lub odpowiednika) i kodowania ISO-8859-1 (lub podobnego).

Kod definiuje nazwaną funkcję :, która na przemian wyświetla biały 1 lub 0 w czarnym prostokącie. Istnieją dokładnie 24 różne piksele z domyślnymi ustawieniami xterm. ( dowód )

W przypadku starszej wersji, która przełącza kolor całego terminala, sprawdź wersję 10 tej odpowiedzi.

Dzięki @ ais523 za sugestię xterm, który oszczędza 4 bajty!

Jak to działa

:(...)tworzy funkcję o nazwie, :która wykonuje ....

Polecenie odczytu robi prawdziwą magię.

  • -p określa monit o wprowadzenie, który jest drukowany do STDOUT.

    • $[i^=1]jest rozszerzeniem arytmetycznym, w którym XOR jest zmienną i z 1 . mogę początkowo być rozbrojony; gdy to nastąpi, będzie traktowane jako 0 .

    • Znak powrotu karetki umieszcza kursor z powrotem na początku wiersza.

    • ›?9hprzechwytuje mysz w obsługiwanych terminalach. Każde kliknięcie wyśle ​​sześć znaków do terminala, a mianowicie ←[Mbxy, gdzie reprezentuje bajt ESC ( 0x1b ). ←[oznacza sekwencję ucieczki, Mmyszy, bprzycisk ( 0x20 + numer przycisku) x współrzędna kliknięcia ( 0x20 + współrzędnych) i Y współrzędnych.xy

    • -sn6powoduje wyciszenie odczytu (wejście myszy nie zostanie powtórzone do STDERR) i zatrzymuje się po odczytaniu dokładnie 6 bajtów. Zapisuje dane wejściowe w zmiennej REPLY , ale nie jesteśmy zainteresowani uzyskanymi danymi wyjściowymi.

Na koniec, po zakończeniu odczytu (dokładnie po jednym kliknięciu myszy) :rekurencyjnie wywołuje się, wchodząc w nieskończoną pętlę.

Stworzenie i wywołanie

$ echo $':()(read -p$[i^=1]\r\x9b?9h -sn6\n:);:' > checkbox.sh
$ xxd -c 17 -g 1 checkbox.sh
0000000: 3a 28 29 28 72 65 61 64 20 2d 70 24 5b 69 5e 3d 31  :()(read -p$[i^=1
0000011: 5d 0d 9b 3f 39 68 20 2d 73 6e 36 0a 3a 29 3b 3a 0a  ]..?9h -sn6.:);:.
$ LANG=en_US xterm -e bash checkbox.sh

Wynik

screencast


Sam pracowałem nad podobnym rozwiązaniem (chociaż w innym języku, zmuszając mnie do poddania się, ponieważ nie mogłem znaleźć sposobu na wejście bez nowej linii). Prawdopodobna poprawa: zmiana 1000hna 9h(różnica polega na tym, że 1000hobsługuje zarówno naciśnięcie, jak i zwolnienie myszy, a 9htylko zwolnienie myszy). Może to wymagać zmian w innym miejscu kodu.

@ ais523 Próbowałem tego, ale przynajmniej mój emulator terminala (Konsole) nie obsługuje tego. Czy znasz taki, który wie?
Dennis

gnome-terminalwydaje się działać, właśnie tego używałem do testowania (edytuj: ale nie sądzę, że obsługuje 1-bajtowy CSI). xtermpowinien również działać i może być łatwiejszy do zainstalowania, jeśli masz system KDE. (Właśnie to przetestowałem; działa z, \x1b[ale nie z \x9bjakiegoś powodu, prawdopodobnie związane z moimi ustawieniami stty, a nie z samym terminalem.)

@ ais523 Mam Xterm. Sprawdzę, kiedy wrócę do komputera.
Dennis

8
Uwielbiam sposób staje się :)od :(końca
Andras Deak

22

Przetwarzanie, 78 66 65 63 61 bajtów

2 bajty zapisane dzięki @TuukkaX przy użyciu -a%2zamiasta%2*-1

2 bajty zapisane dzięki @TuukkaX przy użyciu a=-a

int a=1;void draw(){background(a);}void mousePressed(){a=-a;}

Pole wyboru na przemian jest czarno-białe.

Wyjaśnienie

int a=1;                   //the variable that contains the state of the checkbox
void mousePressed(){a=-a;} //if the mouse is pressed, change the sign of a

Teraz istnieje wiele innych alternatyw, takich jak użycie instrukcji if do przetworzenia tego, ale potem staje się dziwne i ciągle zmienia tło podczas naciskania myszy. Najpierw próbowałem mouseButton, ale potem potrzebowałem więcej warunków i więcej kodu, który po prostu skończy o wiele bardziej gadatliwie.

Teraz, mousePressed()aby zadzwonić na zawsze (w przeciwnym razie przestałoby działać po uruchomieniu programu), potrzebujemy draw()funkcji.

void draw(){               //loop infinitely
  background(a);           //set the sketch's background to -a%2
  //if a ==  1, the background colour is set to almost black
  //if a == -1, the background colour is set to white
}

enter image description here


Mniejsze pole wyboru miałoby 90 bajtów (pole wyboru znajduje się w lewym górnym rogu, więc możemy usunąć niektóre warunki myszy):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}

2
Sprytne wykorzystanie sposobu, w jaki Processing przyjmuje pojedyncze liczby całkowite jako kolory w skali szarości!
FlipTack,

@FlipTack Wygląda na to, że biel można również wyrazić jakofill(-1)
Kritixi Lithos

1
Mam pomysł. Zainicjuj ana 1 zamiast 0. Zmień a++na a=-a, co czyni -a%2just a. Spowoduje to przełączenie amiędzy 1 a -1. Nie wiem jednak, jaki jest kolor 1.
Yytsi

@TuukkaX Tak, to działa. color(1)produkty, #010101które są bardzo zbliżone do czerni
Kritixi Lithos


20

Unix Shell (+ aplikacje x11), 3 bajty

Zrzeczenie się

Odpowiedź poniżej jest nudna, z pogranicza i „czuje się oszukana” (przynajmniej dla mnie).

Wydaje się jednak, że nie narusza żadnej z reguł wyzwania „tak jak napisano” ani „domyślnych luk”, więc zamieszczam to.

(Jeśli możesz wskazać konkretną zasadę, którą łamie, skomentuj!)

Grał w golfa

xgc

Program xgc demonstruje różne funkcje prymitywów graficznych X.

Ekran XGC jest wypełniony różnymi polami wyboru:

enter image description here

i „lepkie przyciski” (które kwalifikują się jako pola wyboru, zgodnie z regułami wyzwania):

enter image description here


20

GitHub Flavored Markdown - 6 bajtów

- [ ] 

(Jest spacja)

W skrócie: check/not check


Upewnij się, że pasuje to do drugiej połowy zdania 1. „Napisz program, który tworzy dwustanowe pole wyboru, z którym ludzie mogą korzystać za pomocą myszy ”.
manatwork

1
Tak, jeśli wkleisz go do istoty i utworzysz istotę (do „kompilacji”), będziesz mógł z nią wchodzić w interakcje.
Axel

Ciekawy. Dzięki @ Ax31. Nigdy nie używałam manier.
manatwork

1
Nie spodziewałbym się „Github Flavored Markdown”.
Jonas Schäfer



14

Python REPL, 45 bajtów

from tkinter import*
Checkbutton(Tk()).pack()

Nie biorę udziału w CG ani często nie czytam tych postów. Jednak naprawdę zaskakuje mnie, że wolno ci używać zewnętrznych modułów. Czy to nie oszustwo? Nie wiem, ile bajtów zawiera kod źródłowy Tk, ale tak naprawdę nie należy dodawać tych bajtów do liczby bajtów?
FMaz

1
@Krazor tkinterjest standardową biblioteką dla Pythona (ale nawet gdyby tak nie było, musiałbym tylko zadeklarować Python REPL + tkinter). Oznacza to, że mogę korzystać z jego funkcji, po prostu importując go. Kara, którą sugerujesz, jest podobna do poproszenia użytkowników o podanie w bajcie liczby bajtów w źródle języka, w którym piszesz. Tutaj zezwalamy na konkurowanie dowolnym językiem lub modułowi, o ile został napisany i opublikowany wcześniej wyzwanie zostało opublikowane.
Niebieski

OK, dziękuję za wyjaśnienie.
FMaz

14

GeoGebra , 10 bajtów

Checkbox[]

Wszedł w pasek wprowadzania.

Oto gif z wykonania:

Program execution


7
Whoah, GeoGebra. Pamiętam to. Minęło trochę czasu.
Nic Hartley,

Wiem, że to nie na temat, ale czy chodzisz do Waterloo Collegiate Institute? Z ciekawości, na podstawie twojego imienia. Nie jestem prześladowcą, nie martw się :)
HyperNeutrino


11

HTML z JavaScript - 136 124 120 115 113 111 109 79 bajtów

<p style=height:20;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

-2 dzięki dzięki @KritixiLithos

Zmniejszono do 79 po fantastycznych golfach z @Jan. Chociaż nowa wersja spełnia wymagania, zachowałem starą wersję z powodów dumy zawodowej.

Chociaż korzystanie z wbudowanych aplikacji jest całkowicie poprawne, pomyślałem, że fajniej jest tworzyć własne od zera. Testowane z Chrome i Firefox.border:solidczy jest kompatybilny z IE, ale nie wiem, czy jest on rzeczywiście potrzebny w nowszych wersjach IE - nie mam IE do przetestowania.

pxW wysokości nie jest z korzyścią dla „kod” Run fragmencie tak nie jest zawarty w „prawdziwym” count bajtów. Bez niego działa poprawnie w przeglądarce.

<p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

Poprzednia wersja:

<p id=d style="width:20px;height:20px;border:solid 1px"onClick="d.innerHTML=d.innerHTML=='x'?'':'x'"align=center>


1
Można zrobić, id=daby usunąć d=this?
Kritixi Lithos

1
@KritixiLithos - Rzeczywiście mogę. Dzięki i dobrze zauważony :)
ElPedro

1
Nie musisz ustawiać szerokości, reguły mówią, że może to być dowolny wymiar. Jeśli thiszapiszesz stan we właściwości , zapiszesz ustawienie identyfikatora. Jeśli przechowujesz thiswe właściwości, zaoszczędzisz kilka bajtów. To alignjest niepotrzebne. Ponieważ w ciągach atrybutów nie ma spacji, nie potrzebujesz cudzysłowów. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 bajtów
stycznia

@ Jan - Dzięki! Szerokość jest moją własną dumą zawodową. Jeśli tego nie ustawię, wygląda to brzydko, a ponieważ ta odpowiedź nigdy nie wygra i została opublikowana jako alternatywa, prawdopodobnie zostawię ją tam. Poza tym kilka świetnych wskazówek. Wielkie dzięki. Zaktualizuje jutro.
ElPedro,

Dzięki {Easterly. Zaktualizowałem kod, ale zapomniałem o innych bitach. Robi się późno.
ElPedro,

9

Minecraft 1.0.0, 1 bajt

Dźwignia w Minecraft spełnia wszystkie kryteria pola wyboru. Ta odpowiedź jest ważna tylko w starszych wersjach gry, w których wybijanie dźwigni wciąż ją przełącza.

enter image description here

Przy użyciu sugerowanej liczby bajtów @Connor O'Brien.


Różnica 3 między dwiema odpowiedziami nie czyni konsensusu ani nie psuje konsensusu, ale biorąc pod uwagę, że odpowiedź Conora jest dość kontrowersyjna (obecnie na + 24 / -10 ) i że zaakceptowana odpowiedź jest w większości dobrze przyjęta ( + 17 / -0 ), myślę, że to ostatnie powinno być użyte do oceny odpowiedzi w Minecrafcie.
Dennis

Jednak nie ma bloków struktur w Minecraft 1.0.0
ev3commander

1
Jest jeden nw Conor, btw :)
Conor O'Brien

Lub możesz ponownie powiązać lewy i prawy przycisk myszy w dowolnej nowszej wersji, aby był ważny; D
seadoggie01

@ ConorO'Brien Czy to nie jest 1 block? Dlaczego 1 byte? Nie sądzę, żeby mc przechowywał każdy blok jako jeden bajt ...
RedClover,

8

TI-Basic, 15 bajtów

While 1:Shade(0,9:Input :ClrDraw:Input :End

Dość bezpośredni. Pole wyboru obejmuje około 40% ekranu i zmienia się na czarno-biały. Po zaznaczeniu ekran będzie wyglądał mniej więcej tak:

screen


8

Dowolna wersja wiersza polecenia systemu Windows, 3 bajty

(cmd.exe, partia, powershell, start-> uruchom, cokolwiek)

osk

Otwiera klawiaturę ekranową z kilkoma „polami wyboru”, takimi jak Shift, Ctrl, Alt, Capslock. Podobne do odpowiedzi XGC i zainspirowane zrzutem ekranu SmileBASIC.


7

Oktawa, 36 20 bajtów

uicontrol('sty','c')

Dzięki @LuisMendo zapisano 16 bajtów!


1
uicontrol('sty','c')działa również
Luis Mendo,

@LuisMendo Thanks! Zapisano 1/2 bajtu!
rahnema1

7

KV Lang , 8 bajtów

CheckBox

enter image description here


zakładając naprawdę podstawowe środowisko Pythona, aby kv lang mógł nawet uruchomić:

from kivy.app import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string('CheckBox'))

Działa to w zasadzie, ponieważ CheckBoxjest widżetem Kivy zawartym w kivy.Factorykażdym widżecie ze standardowej biblioteki.

Ten prosty ciąg tworzy instancję CheckBoxi ze względu na runTouchAppoczekiwanie na uruchomienie widgetu mogę go użyć Builder.load_string.

Tło load_stringuchwytów obsługuje zasadniczo każdy ciąg kv, a jeśli zdefiniowano pojedyncze wystąpienie widgetu (np. CheckBox), To jest ono podnoszone do pozycji głównego widgetu, na przykład:

Application
    openGL Window
        root widget(mostly layout)
            main tree
            and some widgets
            ...

7

SmileBASIC, 49 bajtów

@L
O=T
TOUCH OUT T,,
X=T<O!=X
KEY 1,""[X]GOTO@L

i są pustym polem i polem zaznaczonym czcionką SB.
Przełącz pole wyboru, dotykając ekranu (najbliższa rzecz do kliknięcia myszą)

enter image description here enter image description here

Oszukiwanie odpowiedzi:

0 bajtów:

(klawiatura ekranowa ma przyciski, które działają jak pola wyboru, takie jak Caps Lock i klawisze Insert)

14 bajtów:

EXEC"SYS/SBGED

Otwiera wbudowany edytor grafiki, który ma wiele przycisków podobnych do pól wyboru


To jest po prostu genialne, chociaż tak naprawdę nie rozumiem, co robi czwarta linia. Czy możesz wytłumaczyć?
snail_

T<Ojest prawdziwe, gdy przestajesz dotykać ekranu, i !=jest używane jako logiczny XOR. X=X XOR (O && !T)
12Me21

7

C #, 124 120 bajtów

zapisane 4 bajty dzięki grabthefish.

checkbox checked and not checked Uwaga: z powodu edycji obraz nie przedstawia dokładnie tego, co tworzy kod, „checkBox1” nie jest wyświetlany z bieżącym kodem.

using System.Windows.Forms;class P{static void Main(){var a=new Form();a.Controls.Add(new CheckBox());a.ShowDialog();}}

bez golfa: using System.Windows.Forms; class P{ static void Main(){ var a=new Form(); a.Controls.Add(new CheckBox()); Application.Run(a); a.ShowDialog(); } }


Jeśli nie znalazłeś nic na ten temat na meta, zapytaj o to na meta.
Matthew Roh,

Możesz pozbyć się przestrzeni var a = new Form();.
clismique

@ Qwerp-Derp Usunąłem je do liczenia, właśnie wkleiłem niewłaściwą rzecz, dzięki.
satibel

możesz użyć, a.ShowDialog();aby zaoszczędzić kilka bajtów
weź

dzięki @grabthefish, choć c # wciąż przegrywa z java :(
satibel


6

HTML z JavaScript, 46 33 28 bajtów

<body onclick=innerHTML^=1>0

v2

<body onclick=this.innerHTML^=1>0

v1

<body onclick=t=this;t.innerHTML=t.e=!t.e||''>

Jest to wariant odpowiedzi @ ElPedro: Utwórz pole wyboru . Zmniejszono do 28 bajtów za pomocą @Albert Renshaw. Można go jeszcze zmniejszyć, ale dzięki temu byłby identyczny jak Utwórz pole wyboru

Cały obszar aplikacji jest klikalny. Będzie on wyświetlany 0w offstanie i 1w onpaństwie. Wypróbuj na https://jsbin.com/nuhetiyocu/1/edit


1
Oto zgrabna odmiana o 39 bajtach. <body onclick=t=this;t.innerHTML^=t?1:0Jednak reguła 16 pikseli między zmianą stanu jest przedmiotem dyskusji.
Albert Renshaw,

38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw,

1
O nie, z twoją pomocą mam już 33 lata :)
stycznia

1
28<body onclick=innerHTML^=1>0
Albert Renshaw,

1
Teraz, gdy w pojemniku zawsze znajduje się wartość, można ją zmienić z elementu bodyna inny. Ale właśnie zauważyłem, że dzięki temu będzie identyczna z inną odpowiedzią codegolf.stackexchange.com/questions/109155/create-a-checkbox/... więc zostawiam to tak, jak jest
Jan

6

PowerShell v5 +, 94 bajty

($a=[Windows.Forms.Form]::new()).Controls.Add([Windows.Forms.Checkbox]::new());$a.ShowDialog()

enter image description here enter image description here

Jest to dość straszne, ale nie mogę dostać oświadczenia któregokolwiek z krótsze albo Add-Typealbo using namespace- i wymagana jest zmienna, ponieważ muszę ponownie użyć obiektu, aby pokazać postać, i Controls.Add()zwraca nic użytecznego.

ShowDialog jest wymagane w moim systemie, aby pole było interaktywne po uruchomieniu tego polecenia, w przeciwnym razie formularz zostanie zawieszony.

również System.Windows.Forms.Formmożna skrócić tylko Windows.Forms.Formprzed systemem (przynajmniej moim) zatrzymuje auto ukończenie go w świeżej sesji.


Miły! Może warto dodać, że wymaga to wersji 5+.
briantist

@briantist zaktualizowane, dzięki.
colsw

6

Excel VBA, 38 32 31 29 bajtów

Natychmiastowa funkcja okna, która wstawia pole wyboru o wysokości = 9 i szerokości = 9 w komórce A1na pierwszym arkuszu aktywnego projektu Excel VBA

Sheet1.CheckBoxes.Add 0,0,9,9

-6 Dzięki Pajonk zastępowania [A1],[A1],9,9z0,0,9,9

-1 wymianie Sheets(1)z[Sheet1]

-2 za uświadomienie sobie powyższego było głupie i Sheet1zamiast tego użyłem


Wydaje się, że 1,1,9,9jako argumenty również działają.
pajonk

1
Nie potrzebujesz Sheet(1)., możesz uruchomić to wystarczająco szybko w programie Excel, ale CheckBoxesjest dziedziczony do aktywnego arkusza
Mr.Burns

@ Mr.Burns Sprawdziłem w to, ale bez bezpośredniego odwoływania dowolny obiekt arkusza CheckBoxes.Addmetoda generuje błąd informujący, „Obiekt jest wymagane”
Taylor Scott

@TaylorScott Masz rację, umieściłem kod w module arkusza, a nie w normalnym module. Mój błąd xD
Mr.Burns

4

VBA (Word), 74 57 bajtów

-17 dzięki Taylor Scott

Sub a()
f = a.FormFields.Add(Selection.Range, 71)
End Sub

Nazwa pliku dokumentu powinna wynosić.


1
Można wymienić wdFieldFormCheckBoxz 71(wartość całkowitej części wdFieldFormCheckBoxstałych) dla oszczędności z 17 bajtów
Taylor Scotta

Myślę, że możesz usunąć znaki nowej linii dla -2 bajtów.
devRicher

4

Mops, 20 bajtów

input(type=checkbox)

Poza tym liczę jako 23. Jeśli usuniesz cytaty, nadal działa w Firefox i Chrome (nie można przetestować na IE) i pojawiłby się w 21, w którym to przypadku uznałbym to za ulepszenie w tym przykładzie i dlatego jest poprawne.
ElPedro

@heonlygusti - rzeczywiście, ale bez cytatów głosowałbym :-) btw, głosowanie nie było mną.
ElPedro

Głosowałbym za tym, gdyby nie te cytaty, które nie są potrzebne.
NightSkyCode

@ thehelylygusti wcale. Spróbuj.
NightSkyCode

4

Clojure, 201 195 145 127 bajtów

(ns c(:require[quil.core :as q]))(def a(atom nil))(q/defsketch b :draw #(q/background(if@a 0 99)):mouse-clicked #(swap! a not))

-6 bajtów poprzez pozbycie się potrzeby m/fun-mode.

-50 bajtów poprzez usunięcie opcji :setupi :size, ponieważ są one domyślne i niepotrzebne w non- fun-mode. Usunięto również niepotrzebny import oprogramowania pośredniego.

-18 bajtów dzięki tylko @ ASCII. Zmieniono na „mniejsze” kolory i usunięto niepotrzebne miejsce przed operatorem dereferencji ( @).

Tworzy szkic Quil (biblioteka Clojure, która zapewnia warstwę nad przetwarzaniem), dlatego wymaga uruchomienia biblioteki Quil.

(ns bits.golf.checkbox
  (:require [quil.core :as q]))

; Mutable global variable to hold the toggle state
(def a (atom nil))

(q/defsketch b
         ; Draw the background color to be either black or red depending on the toggle state.
         :draw #(apply q/background (if @a [0 0 0] [255 0 0]))

         ; Negate the state on mouse click
         :mouse-clicked #(swap! a not))

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


Nie możesz zamienić 255 na 99? Również spróbuję usunąć spacje przed / po symbolach i sprawdzić, czy nadal działa
tylko ASCII

@ Tylko ASCII tak, mógłbym. Zrobił się bardzo brzydki kolor przez iirc, i z jakiegoś powodu wtedy nadałem mu priorytet. I nie, to tyle miejsca, ile mogę niestety usunąć.
Carcigenicate

@ Tylko ASCII Problem polega na tym, że symbole mogą zawierać prawie dowolny znak, więc tak naprawdę jedynymi „bezpiecznymi sąsiadami”, w których można usunąć spacje, są nawiasy lub cudzysłowy. Na szczęście jest to seplenienie w stosunku do pierwszego.
Carcigenicate

Hmm może [0 0 99]wtedy? (jakiś ciemnoniebieski)
tylko ASCII

@ Tylko ASCII Właściwie myślę, że mogę teraz wyrzucić cyfry 0, kiedy o tym myślę. Myślę, że Quil auto wypełnia przód zerami, jeśli wektor jest za krótki. Jeśli pamiętam ostatnie, naprawię to. Dzięki, że kazałeś mi myśleć.
Carcigenicate

4

Operacyjny język skryptowy Flashpoint , 273 bajty

Aby pokazać pole wyboru:

createDialog"b"

Ale najpierw trzeba to zdefiniować:

Zapisz następujące elementy w pliku o nazwie description.extw folderze misji:

class b{idd=999;movingEnable=1;class controls{class c{idc=457;x=0.1;y=0.1;w=0.1;h=0.1;text="";action="if(ctrlText 457=={})then{ctrlSetText[457,{V}]}else{ctrlSetText[457,{}]}";type=1;style=2;colorText[]={1,1,1,1};font="tahomaB36";sizeEx=0.1;}}}

Pole wyboru w akcji:


3

AutoIt , 78 bajtów

GUICreate(0)
GUISetState(GUICtrlCreateCheckbox(0,0,0))
Do
Until GUIGetMsg()=-3

Otwiera zmaksymalizowane okno, które można zamknąć jak każde inne okno. Maksymalizacja i ... świetność to efekt uboczny gry w golfa.

wprowadź opis zdjęcia tutaj


Jak miałbym to uruchomić w systemie Linux?
dkudriavtsev

@wat wine AutoIt3.exe script.au3, gdzie script.au3plik zawiera ten kod.
mınxomaτ

3

Python, 62 bajty

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.