Abkürzung für Phrase

12

Aufgabe:

Erstellen Sie ein Programm, das beispielsweise ein Akronym als Eingabe verwendet, dftbaund generieren Sie einige mögliche Ausdrücke, für die das Akronym stehen könnte. Sie können die Wortliste als Worteingabe verwenden. Inspiriert von https://www.youtube.com/watch?v=oPUxnpIWt6E

Beispiel:

input: dftba
output: don't forget to be awesome

Regeln:

  • Ihr Programm kann nicht jedes Mal dieselbe Phrase für dasselbe Akronym generieren, es muss eine Zufallsgenerierung geben
  • Die Eingabe erfolgt in Kleinbuchstaben
  • Poste ein paar Beispiele (Input und Output)
  • Jede Sprache wird akzeptiert
  • Es ist ein , also gewinnen die meisten Upvotes!
Der Doktor
quelle
Bitte zeigen Sie eine Beispielausgabe.
Mukul Kumar
@MukulKumar hat es hinzugefügt
TheDoctor
1
Es muss sinnvoll sein? oder irgendeine Kombination?
Mukul Kumar
Es muss nicht sinnvoll sein
TheDoctor
Wie oft darf der Benutzer das Programm ausführen? Irgendwann kann das Programm nur noch Regel 1 brechen.
Mr Lister

Antworten:

8

HTML, CSS und JavaScript

HTML

<div id='word-shower'></div>
<div id='letter-container'></div>

CSS

.letter {
    border: 1px solid black;
    padding: 5px;
}

#word-shower {
    border-bottom: 3px solid blue;
    padding-bottom: 5px;
}

JS

var acronym = 'dftba', $letters = $('#letter-container')
for (var i = 0; i < acronym.length; i++) {
    $letters.append($('<div>').text(acronym[i]).attr('class', 'letter'))
}

var $word = $('#word-shower')
setInterval(function() {
    $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://randomword.setgetgo.com/get.php') + '&callback=?', function(word) {
        word = word.contents.toLowerCase()
        $word.text(word)
        $letters.children().each(function() {
            if (word[0] == this.innerText) {
                this.innerText = word
                return
            }
        })
    })
}, 1000)

Verwendet einen Zufallswortgenerator und zeigt Live-Ergebnisse, während nach Wörtern gesucht wird.

Ist hier eine Geige, wenn Sie sie selbst laufen lassen möchten.

Hier ist ein GIF der Ausgabe:

animierte Ausgabe

Türknauf
quelle
7

Java

Ruft eine Wortliste aus wiktionary ab. Wählt aus dieser Liste ein zufälliges Wort aus, das mit dem richtigen Buchstaben beginnt. Dann verwendet Google Suggest rekursiv, um nach möglichen nächsten Wörtern zu suchen. Gibt eine Liste von Möglichkeiten aus. Wenn Sie es mit demselben Akronym erneut ausführen, erhalten Sie unterschiedliche Ergebnisse.

import java.io.*;
import java.net.*;
import java.util.*;

public class Acronym {

    static List<List<String>> wordLists = new ArrayList<List<String>>();
    static {for(int i=0; i<26; i++) wordLists.add(new ArrayList<String>());}
    static String acro;

    public static void main(String[] args) throws Exception {
        acro = args[0].toLowerCase();

        //get a wordlist and put words into wordLists by first letter
        String s = "http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/PG/2006/04/1-10000";
        URL url = new URL(s);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            if(inputLine.contains("title")) {
                int start = inputLine.indexOf("title=\"");
                int end = inputLine.lastIndexOf("\">");
                if(start>=0 && end > start) { 
                    String word = inputLine.substring(start+7,end).toLowerCase();
                    if(!word.contains("'") && !word.contains(" ")) {
                        char firstChar = word.charAt(0);
                        if(firstChar >= 'a' && firstChar <='z') {
                            wordLists.get(firstChar-'a').add(word);
                        }
                    }
                }
            }
        }

        //choose random word from wordlist starting with first letter of acronym
        Random rand = new Random();
        char firstChar = acro.charAt(0);
        List<String> firstList = wordLists.get(firstChar-'a');
        String firstWord = firstList.get(rand.nextInt(firstList.size()));

        getSuggestions(firstWord,1);

    }

    static void getSuggestions(String input,int index) throws Exception {
        //ask googleSuggest for suggestions that start with search plus the next letter as marked by index
        String googleSuggest = "http://google.com/complete/search?output=toolbar&q=";
        String search = input + " " + acro.charAt(index);
        String searchSub = search.replaceAll(" ","%20");

        URL url = new URL(googleSuggest + searchSub);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            String[] parts = inputLine.split("\"");
            for(String part : parts) {
                if(part.startsWith(search)) {
                    //now get suggestions for this part plus next letter in acro
                    if(index+1<acro.length()) {
                        String[] moreParts = part.split(" ");
                        Thread.sleep(100);
                        getSuggestions(input + " " + moreParts[index],index+1);
                    }
                    else {
                        String[] moreParts = part.split(" ");
                        System.out.println(input + " " + moreParts[index]);
                    }
                }
            }
        }
        in.close();
    }
}

Beispielausgabe:

$ java -jar Acronym.jar ght
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horror thriller
great horror tv
great horror thriller
great horror titles
great horror tv
great holiday traditions
great holiday treats
great holiday toasts
great holiday tech
great holiday travel
great holiday treat
great holiday tips
great holiday treat
great holiday toys
great holiday tour
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle

Leider hat die von Google vorgeschlagene URL nach einiger Zeit nicht mehr funktioniert. Vielleicht wurde meine IP-Adresse von Google wegen Missbrauchs auf die schwarze Liste gesetzt ?!

Wally
quelle
5

Rubin

so rubinrot. viele Dogen. Beeindruckend.

Online Version

@prefix = %w[all amazingly best certainly crazily deadly extra ever few great highly incredibly jolly known loftily much many never no like only pretty quirkily really rich sweet such so total terribly utterly very whole xtreme yielding zippily]
@adjective = %w[appealing app apl attractive brave bold better basic common challenge c++ creative credit doge durable dare enticing entertain extreme fail fabulous few favourite giant gigantic google hello happy handy interesting in improve insane jazz joy j java known kind kiwi light laugh love lucky low more mesmerise majestic open overflow opinion opera python power point popular php practice quirk quit ruby read ready stunning stack scala task teaching talking tiny technology unexpected usual useful urban voice vibrant value word water wow where xi xanthic xylophone young yummy zebra zonk zen zoo]

def doge(input)
  wow = ""
  input.chars.each_slice(2) do |char1, char2|
    if char2 == nil
      wow << (@prefix + @adjective).sample(1)[0] + "."
      break
    end
    wow << @prefix.select{|e| e[0] == char1}.sample(1)[0]
    wow << " "
    wow << @adjective.select{|e| e[0] == char2}.sample(1)[0]
    wow << ". "
  end
  wow
end

puts doge("dftba")
puts doge("asofiejgie")
puts doge("iglpquvi")

Beispiele:

deadly favourite. terribly better. challenge.
all scala. only favourite. incredibly enticing. jolly giant. incredibly extreme. 
incredibly gigantic. loftily popular. quirkily usual. very interesting.
David Herrmann
quelle
sicherlich leicht. jemals Stimme. extra fertig. zusätzlicher Stapel. schrecklich attraktiv. niemals atemberaubend. ganz unterhalten. reich atemberaubend. einziger Favorit. erstaunlich rubinrot.
Izabera
tödlich scheitern. schrecklich mutig. Glücklich. alles scala. nur ein paar. unglaublich unterhalten. lustiges google. unglaublich unterhalten. unglaublich google. Hoch Python. schrullig unerwartet. sehr zu verbessern.
4

Mathematica

Einige Begriffe, die häufig in Akronymen vorkommen.

terms = {"Abbreviated", "Accounting", "Acquisition", "Act", "Action", "Actions", "Activities", "Administrative", "Advisory", "Afloat", "Agency", "Agreement", "Air", "Aircraft", "Aligned", "Alternatives", "Analysis", "Anti-Surveillance", "Appropriation", "Approval", "Architecture", "Assessment", "Assistance", "Assistant", "Assurance", "Atlantic", "Authority", "Aviation", "Base", "Based", "Battlespace", "Board", "Breakdown", "Budget", "Budgeting", "Business", "Capabilities", "Capability", "Capital", "Capstone", "Category", "Center", "Centric", "Chairman", "Change", "Changes", "Chief", "Chief,", "Chiefs", "Closure", "College", "Combat", "Command", "Commandant", "Commander","Commander,", "Commanders", "Commerce", "Common", "Communications", "Communities", "Competency", "Competition", "Component", "Comptroller", "Computer", "Computers,", "Concept", "Conference", "Configuration", "Consolidated", "Consulting", "Contract", "Contracting", "Contracts", "Contractual", "Control", "Cooperative", "Corps", "Cost", "Council", "Counterintelligence", "Course", "Daily", "Data", "Date", "Decision", "Defense", "Deficiency", "Demonstration", "Department", "Depleting", "Deployment", "Depot", "Deputy", "Description", "Deskbook", "Determination", "Development", "Direct", "Directed", "Directive", "Directives", "Director", "Distributed", "Document", "Earned", "Electromagnetic", "Element", "Engagement", "Engineer", "Engineering", "Enterprise", "Environment", "Environmental", "Equipment", "Estimate", "Evaluation", "Evaluation)", "Exchange", "Execution", "Executive", "Expense", "Expert", "Exploration", "Externally", "Federal", "Final", "Financial", "Findings", "Fixed","Fleet", "Fleet;", "Flight", "Flying", "Followup", "Force", "Forces,", "Foreign", "Form", "Framework", "Full", "Function", "Functionality", "Fund", "Funding", "Furnished", "Future", "Government", "Ground", "Group", "Guidance", "Guide", "Handbook", "Handling,", "Hazardous", "Headquarters", "Health", "Human", "Identification", "Improvement", "Incentive", "Incentives", "Independent", "Individual", "Industrial", "Information", "Initial", "Initiation", "Initiative", "Institute", "Instruction", "Integrated", "Integration", "Intelligence", "Intensive", "Interdepartmental", "Interface", "Interference", "Internet", "Interoperability", "Interservice", "Inventory", "Investment", "Joint", "Justification", "Key", "Knowledge", "Lead", "Leader", "Leadership", "Line", "List", "Logistics", "Maintainability", "Maintenance", "Management", "Manager", "Manual", "Manufacturing", "Marine", "Master", "Material", "Materials", "Maturity", "Measurement", "Meeting", "Memorandum", "Milestone", "Milestones", "Military", "Minor", "Mission", "Model", "Modeling", "Modernization", "National", "Naval", "Navy", "Needs", "Network", "Networks", "Number", "Objectives", "Obligation", "Observation", "Occupational", "Offer", "Office", "Officer", "Operating", "Operational", "Operations", "Order", "Ordering", "Organization", "Oversight", "Ozone", "Pacific", "Package", "Packaging,", "Parameters", "Participating", "Parts", "Performance", "Personal", "Personnel", "Planning", "Planning,", "Plans", "Plant", "Point", "Policy", "Pollution", "Practice", "Preferred", "Prevention", "Price", "Primary", "Procedure", "Procedures", "Process", "Procurement", "Product", "Production", "Professional", "Program", "Programmatic", "Programming", "Project", "Proposal", "Protection", "Protocol", "Purchase", "Quadrennial", "Qualified", "Quality", "Rapid", "Rate", "Readiness", "Reconnaissance", "Regulation", "Regulations", "Reliability", "Relocation", "Repair", "Repairables", "Report", "Reporting", "Representative", "Request", "Requirement", "Requirements", "Requiring", "Requisition", "Requisitioning", "Research", "Research,", "Reserve", "Resources", "Responsibility", "Review", "Reviews", "Safety", "Sales", "Scale", "Secretary", "Secure", "Security", "Selection", "Senior", "Service", "Services", "Sharing", "Simulation", "Single", "Small", "Software", "Source", "Staff", "Standard", "Standardization", "Statement", "Status", "Storage,", "Strategy", "Streamlining", "Structure", "Submission", "Substance", "Summary", "Supplement", "Support", "Supportability", "Surveillance", "Survey", "System", "Systems", "Subsystem", "Tactical", "Target", "Targets", "Team", "Teams", "Technical", "Technology", "Test", "Tool", "Total", "Training", "Transportation", "Trouble", "Type", "Union", "Value", "Variable", "Warfare", "Weapon", "Work", "Working", "X-Ray", "Xenon", "Year", "Yesterday", "Zenith", "Zoology"};

Code

f[c_]:=RandomChoice[Select[terms,(StringTake[#,1]==c)&]]
g[acronym_]:=Map[f,Characters@acronym]

Beispiele

Zehn zufällig generierte Kandidaten für das Akronym ABC .

Table[Row[g["ABC"], "  "], {10}] // TableForm

Action Breakdown Corps
Rechnungswesen Budget Handel
Air Budgeting Kontrolle
Erwerbung Aufschlüsselung Computer
Action Budgeting
Kostenausrichtung Aufschlüsselung Common
Aligned Budgeting Kursberatung
Budgeting Fähigkeit
Aligned Battlespace Common
Anti-Surveillance Battlespace Comptroller


FMP

Table[Row[g["FMP"], "  "], {10}] // TableForm

Findings Manager Protocol
Final Manual Kauf
Flying Measurement Personal
Vollständige Fertigungspläne
Form Measurement Programming
Financial Model Programmatic
Zukünftiger Modernisierungsvorschlag
Financial Measurement Package
Form, Maintenance Planning
Vollständige Modellierung Programmatic


STM

Table[Row[g["STM"], "  "], {10}] // TableForm

Standardisierung Total Modernization
Service Tactical Milestone
Surveillance Transportmanagement-
Subsystem Problem Materialstrukturtest
Testmaterial im militärischen
Maßstab
Strategie Werkzeugmodernisierung
Kleine Technologie Geringe
Unterstützbarkeit Transport Fertigungsstatus Werkzeugverwaltung


CRPB

Table[Row[g["CRPB"], "  "], {10}] // TableForm

Schutz der kooperativen Bestimmungen Business
Commander-Richtlinien anfordern Grundlegende
Änderungen Reparaturprogrammierung, Überprüfungen der Geschäftsschließung
Projektbudget
Handelsbestimmungen Parameter Grundverträge
Schnelle Preisbasis
College-Umzugspraxis
Budgetplanung
Kursberichterstattung Personal-Battlespace- Kurs Anforderungsverfahren Budget


SARDE

Table[Row[g["SARDE"], "  "], {10}] // TableForm

Ergänzende Maßnahmen, die Richtlinien erfordern Angepasste
Anforderung schätzen Tägliche Schätzung
Sekretär Atlantic Requisitioning Director Expense
Software Action Review
Gesetz zur Unterstützung bei der direkten Exploration Bereitschaftsverteidigung Elektromagnetische
Software Abgekürzte Anforderung Entscheidung Austausch
Einreichung Bewertung Anforderung Beschreibung Executive
Streamlining Accounting Rate Depotbewertung
Überwachungsassistent Anfordern von Depoteinsatz Umfrageunterstützung
Ressourcenmangel Ausgabe

DavidC
quelle
2

D

Dies erzeugt meistens Unsinn, aber gelegentlich wird es etwas Vernünftiges oder etwas so Dummes produzieren, dass es humorvoll ist.

Aus dieser JSON-Datei werden Wörter abgerufen (~ 2,2 MB).

Das Programm übernimmt das Akronym aus dem ersten Befehlszeilenargument und unterstützt ein optionales zweites Argument, das dem Programm mitteilt, wie viele Phrasen generiert werden sollen.

import std.file : readText;
import std.conv : to;
import std.json, std.random, std.string, std.stdio, std.algorithm, std.array, std.range;

void main( string[] args )
{
    if( args.length < 2 )
        return;

    try
    {
        ushort count = 1;

        if( args.length == 3 )
            count = args[2].to!ushort();

        auto phrases = args[1].toUpper().getPhrases( count );

        foreach( phrase; phrases )
            phrase.writeln();
    }
    catch( Throwable th )
    {
        th.msg.writeln;
        return;
    }
}

string[] getPhrases( string acronym, ushort count = 1 )
in
{
    assert( count > 0 );
}
body
{
    auto words = getWords();
    string[] phrases;

    foreach( _; 0 .. count )
    {
        string[] phrase;

        foreach( chr; acronym )
        {
            auto matchingWords = words.filter!( x => x[0] == chr ).array();
            auto word = matchingWords[uniform( 0, matchingWords.length )];
            phrase ~= word;
        }

        phrases ~= phrase.join( " " );
    }

    return phrases;
}

string[] getWords()
{
    auto text = "words.json".readText();
    auto json = text.parseJSON();
    string[] words;

    if( json.type != JSON_TYPE.ARRAY )
        throw new Exception( "Not an array." );

    foreach( item; json.array )
    {
        if( item.type != JSON_TYPE.STRING )
            throw new Exception( "Not a string." );

        words ~= item.str.ucfirst();
    }

    return words;
}

auto ucfirst( inout( char )[] str )
{
    if( str.length == 1 )
        return str.toUpper();

    auto first = [ str[0] ];
    auto tail  = str[1 .. $];

    return first.toUpper() ~ tail.toLower();
}

Beispiele :

D:\Code\D\Acronym>dmd acronym.d

D:\Code\D\Acronym>acronym utf 5
Unchallenged Ticklebrush Frication
Unparalysed's Toilsomeness Fructose's
Umpiring Tableland Flimsily
Unctuousness Theseus Flawless
Umbrella's Tarts Formulated
Tony Ellis
quelle
2

BASH

for char in $(sed -E s/'(.)'/'\1 '/g <<<"$1");
do
    words=$(grep "^$char" /usr/share/dict/words)
    array=($words)
    arrayCount=${#array[*]}
    word=${array[$((RANDOM%arrayCount))]}
    echo -ne "$word " 
done
echo -ne "\n"

Also: $ bash acronym-to-phrase.sh dftbaergab

deodorization fishgig telolecithal bashlyk anapsid
demicivilized foretell tonogram besmouch anthropoteleological
doer fightingly tubulostriato bruang amortize 


Und: $ bash acronym-to-phrase.sh diyergab

decanically inarguable youthen
delomorphous isatin yen
distilling inhumorously yungan


Schließlich: $ bash acronym-to-phrase.sh rsvp

retzian sensitizer vestiarium pathognomonical
reaccustom schreiner vincibility poetizer
refractorily subspherical villagey planetule

...

Meine erste Reaktion? whelpless Transportfeuer

Max Chuquimia
quelle
1

Python

Das wird wahrscheinlich keine Beliebtheitswettbewerbe gewinnen, aber ich dachte, Python brauchte eine Vertretung. Dies funktioniert in Python 3.3+. Ich habe @ tony-hs json-Wortdatei ausgeliehen ( hier zu finden) ). Im Grunde genommen nimmt dieser Code nur die JSON-Liste und organisiert alle Wörter in einem Wörterbuch, das nach den Buchstaben des Alphabets indiziert ist. Dann wird jedes Akronym, das an die Python-Anwendung übergeben wird, als Index für das Wörterbuch verwendet. Für jeden Buchstaben im Akronym wird ein zufälliges Wort aus allen Wörtern ausgewählt, die unter diesem Buchstaben indiziert sind. Sie können auch eine Reihe von gewünschten Ausgaben bereitstellen, oder wenn nichts angegeben ist, werden 2 Optionen generiert.

Der Code (ich habe ihn als phraseit.py gespeichert):

import argparse
import json
import string
from random import randrange

parser = argparse.ArgumentParser(description='Turn an acronym into a random phrase')
parser.add_argument('acronym', nargs=1)
parser.add_argument('iters',nargs='?',default=2,type=int)
args = parser.parse_args()

acronym=args.acronym[0]
print('input: ' + acronym)

allwords=json.load(open('words.json',mode='r',buffering=1))

wordlist={c:[] for c in string.ascii_lowercase}
for word in allwords:
    wordlist[word[0].lower()].append(word)

for i in range(0,args.iters):
    print('output:', end=" ")
    for char in acronym:
        print(wordlist[char.lower()][randrange(0,len(wordlist[char.lower()]))], end=" ")
    print()

Einige Beispielausgaben:

$ python phraseit.py abc
input: abc
output: athabaska bookish contraster
output: alcoholism bayonet's caparison

Ein weiterer:

$ python phraseit.py gosplet 5
input: gosplet
output: greenware overemphasiser seasons potential leprosy escape tularaemia
output: generatrix objectless scaloppine postulant linearisations enforcedly textbook's
output: gutturalism oleg superstruct precedential lunation exclusion toxicologist
output: guppies overseen substances perennialises lungfish excisable tweed
output: grievously outage Sherman pythoness liveable epitaphise tremulant

Schließlich:

$ python phraseit.py nsa 3
input: nsa
output: newsagent spookiness aperiodically
output: notecase shotbush apterygial
output: nonobjectivity sounded aligns
ProgrammerDan
quelle