Taśma klejąca może naprawić wszystko [zamknięte]

13

Przegląd

To wyzwanie zostało zainspirowane tym postem StackOverflow Meta . W tym @hakre mówi:

Widziałem projekt naprawdę napisany przez Stackoverflow (noob kopiuje razem z SO tutaj i SO tam), zwykle nie dokonuje się przypisania, co powoduje zakończenie praw na mocy CC. (sic)

Twoim zadaniem jest stworzenie najciekawszego programu, jaki możesz - bez pisania ani jednego wiersza kodu. Możesz używać tylko kodu, który jest już dla Ciebie napisany, zarówno w pytaniach, jak i odpowiedziach StackOverflow. Wszystko, co możesz zrobić, to połączyć taśmę klejącą w całość, najlepiej jak potrafisz. I oczywiście bardzo ważne jest, abyśmy zapewniali odpowiednią atrybucję, abyśmy nie utracili naszych praw.


Zasady

  1. Musisz dołączyć linki do pytań / odpowiedzi użytych w odpowiedzi.
  2. Nie możesz modyfikować znalezionego kodu, z następującymi wyjątkami:

    za. Możesz zmieniać nazwy zmiennych, funkcji i metod. (To nie znaczy, można zmienić metodę do wywołania , zmieniając, powiedzmy scanner.nextInt()do scanner.nextLine()twierdząc, że jesteś zmieniając nazwę metody. Zmiana musi być w definicji lub odniesienie do tego samego podmiotu).

    b. Możesz odpowiednio dostosować wcięcie.

    do. Możesz założyć, że zostały załadowane odpowiednie moduły, aby fragmenty kodu działały. (np. importinstrukcje dla Java i Python, usinginstrukcje dla C # i C ++ oraz ich odpowiedniki we wszystkich językach) Jeśli fragment kodu zawiera litery imports, możesz przenieść je na górę kodu.

    re. Jeśli język wymaga, aby kod był w jakiejś formie metody do wykonania (np. public static void main(String[] args)Dla Javy, static int Main(string[] args)dla C # itd.), Możesz owinąć swój kod odpowiednią metodą. Ale zawartość tej głównej metody musi pozostać niezmodyfikowana.

  3. Musisz podać jawną listę wykonanych zmian nazw zmiennych / metod / funkcji / klas.

  4. Nie możesz wziąć urywków fragmentów (co oznacza, że ​​jeśli weźmiesz blok kodu z postu, weźmiesz całość)
  5. Podaj krótki opis działania kodu dla osób, które nie są intymne z językiem, którego używasz.
  6. Konkurs popularności, więc najwięcej entuzjastów wygrywa!

Nudny pięciominutowy przykład (Python 3)

Opis : Odczytuje kilka plików dziennika z bieżącego katalogu i losuje w nich wiersze (ekscytujące, prawda? To całkowicie wygrałoby konkurs popularności)

Źródło

import glob
import random

for file in glob.glob('log-*-*.txt'):
    # Etc.
    with open(file) as f:
        content = f.readlines()
        # shuffle the list in place 
        random.shuffle(content)

        # print it
        print(content)

Modyfikacje prawne

  • Zmieniono nazwę fnamena filez linku 1
  • Zmieniono nazwę bna contentz linku 2

Atrybucje

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657
asteri
źródło
8
Bardzo podoba mi się ten pomysł, ale myślę, że to pytanie ogromnie skorzystałoby na ograniczeniu zakresu do określonego zadania. To a) zainspiruje więcej kreatywności, ponieważ nie można po prostu skopiować razem niczego, b) pozostawi otwartą możliwość ponownego wykorzystania tego (interesującego) rodzaju pytania w innym kontekście. Jeśli pozostawisz to jako „rób co chcesz”, wszystkie dalsze pytania tego typu będą duplikatami. Obawiam się, że na obecnym etapie muszę głosować za „zbyt szeroki”, ponieważ torpeduje to możliwe interesujące pytania na przyszłość.
Martin Ender
2
Powinienem dodać, nie. Nie chcę, aby stało się to kolejnym trollowaniem kodu, w którym każdy umieszcza „Dodaj dwie liczby”, „Podziel ten ciąg”, z tagiem „duct-tape-coding”. Myślę, że możemy poradzić sobie z tym bardziej twórczo. Chciałbym tylko zostawić miejsce na inne interpretacje tego rodzaju konkurencji o ograniczonym źródle.
Martin Ender
1
@ m.buettner Nie jestem również pewien, czy CodeGolf.SE koniecznie skorzystałby z wielu takich pytań, z tych samych powodów, o których wspominasz: dlaczego „podzieliłem ciąg przy użyciu kodu SO”, „otrzymam losową liczbę od 1 100 używa kodu SO ”i tak dalej? Ale to tylko moja opinia. Jestem daleki od profesjonalisty CodeGolf.SE. :)
asteri
3
Na razie zamierzam usunąć losowy tag niestandardowy, ponieważ nie został on ustalony (i prawdopodobnie będzie niepotrzebny i nie doda wartości).
asteri
1
Zgadzam się, że musimy uważać na zalewanie PPCG takimi pytaniami tylko dlatego, że jest to zabawne i nowatorskie. Ale myślę, że może powstać kilka naprawdę różnych pytań ... na przykład matematyczne, oparte na grafice, które wykorzystują punktowanie w golfa i może wyzwanie dla poliglota. Dlatego wolałbym, aby zakres był ograniczony. Jeśli chodzi o ludzi, którzy po prostu kopiują wyzwanie bez niczego znaczącego, myślę, że obowiązkiem społeczności jest nieco bardziej rygorystyczne „zamykanie w duplikacie”, jeśli chodzi o nowe typy wyzwań.
Martin Ender

Odpowiedzi:

8

C - jeden kalkulator operacji

Zacznijmy od tego.
Naprawdę trudno jest znaleźć fragmenty programów C, które nie są całymi programami. Miałem najwięcej problemów z deklaracjami.

// http://stackoverflow.com/a/2911978 Block #1 (changed i to a)
static int a = 10;
// http://stackoverflow.com/a/2911978 Block #1 (changed i to b)
static int b = 10;
// http://stackoverflow.com/a/442647 Block #1 (changed c to op)
unsigned char op = (unsigned char)-1;
// http://stackoverflow.com/q/3711048 Inline block #1
int main()
// http://stackoverflow.com/a/14902422 Inline block #1
{
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to a)
scanf("%d", &a)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Block #2 (changed c to op)
scanf("%c", &op)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to b)
scanf("%d", &b)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/a/4173188 Block #2
int result = 0;
result = (op == '*') ? a * b : result;
result = (op == '/') ? a / b : result;
result = (op == '+') ? a + b : result;
result = (op == '-') ? a - b : result;
printf("%d",result);
// http://stackoverflow.com/a/3245525 Block #2
printf("\n");  /* prints newline */
// http://stackoverflow.com/q/4138649 Inline block #1
return 0;
// http://stackoverflow.com/a/14902422 Inline block #2
}

Pobiera prostą integralną operację, taką jak 3+151lub 41/2na standardowym wyjściu, i przekazuje wynik na standardowe wyjście.

mniip
źródło
1
Interesujące ponowne użycie tego samego bloku kodu i dwukrotna zmiana nazwy zmiennej. Nawet o tym nie pomyślałem! +1
asteri